Bon, j’espère que tout le monde connaît le jeu du pong.
Le système est assez simple.
- 2 raquettes.
- 1 balle.
- Affichage du score des joueurs.
- Affichage du filet.
- L’angle du rebond de la balle change selon le point d’impact sur la raquette.
- Le premier joueur à obtenir 11 points remporte la partie.
Les raquettes
local raquettes = {} function raquettes.new(positionX) local raquette = {x=positionX, y=225, yDef=225, w=20, h=150, speed=300} function raquette.draw() love.graphics.rectangle("fill", raquette.x, raquette.y, raquette.w, raquette.h) end return raquette end
La balle
local balle = {x=0, y=0, w=15, h=15, speed=250, follow=true, joueur=1} function balle.update(dt) if balle.follow then -- suis la raquette du joueur else -- bouge tte seule end end function balle.draw() love.graphics.rectangle("fill", balle.x, balle.y, balle.w, balle.h) end
Les joueurs
local joueur = {} function joueur.load() -- joueur 1 joueur[1] = {score=0} joueur[1].raquette = raquettes.new(10) -- positionX joueur[1].keys = {up="z", down="s", fire="space"} -- joueur 2 joueur[2] = {score=0} joueur[2].raquette = raquettes.new(770) -- positionX joueur[2].keys = {up="up", down="down", fire="return"} end function joueur.update(dt) for n=1, 2 do local j = joueur[n] local pad = joueur[n].raquette if love.keyboard.isDown(j.keys.up) and love.keyboard.isDown(j.keys.down) then -- nothing elseif love.keyboard.isDown(j.keys.up) then pad.y = pad.y - (pad.speed * dt) elseif love.keyboard.isDown(j.keys.down) then pad.y = pad.y + (pad.speed * dt) end -- limit to screen if pad.y <= 0 then pad.y = 0 elseif pad.y + pad.h >= 600 then pad.y = 600 - pad.h end end end -- function joueur.draw() for n=1, #joueur do joueur[n].raquette.draw() end end
Le filet
local filet = {x=400,y=0,w=1,h=600} function filet.draw() love.graphics.rectangle("fill", filet.x, filet.y, filet.w, filet.h) end
Le Score
local gameUI = {} function gameUI.draw() love.graphics.print("J1 : "..joueur[1].score, 200, 10) love.graphics.print("J2 : "..joueur[2].score, 600, 10) end
Avec ceci essayer de créer la logique du jeu…
Voir la solution a la page suivante