Déplacer la raquette à droite ou à gauche

Réaliser les étapes suivantes :

  • Ajouter une vitesse à notre raquette
  • Déplacer la raquette à gauche avec un appui de touche
  • Déplacer la raquette à droite avec un appui de touche

Je vais utiliser pour ce cours les touches directionnelles, mais garder à l’esprit qu’il faut garder une certaine ergonomie pour vos futurs jeux.

Voici les modifications à apporter pour la raquette :

local raquette = {x=300, y=555, w=200, h=40, speed=250}

function love.update(dt)
	-- deplacement de la raquette Droite ou Gauche
	if love.keyboard.isDown("left") then
    	raquette.x = raquette.x - (raquette.speed * dt)
	elseif love.keyboard.isDown("right") then
		raquette.x = raquette.x + (raquette.speed * dt)
	end
end

Vous remarquerez, que la raquette peut sortir de l’écran ce qui n’est pas terrible…

On va donc tester sa position pour limiter le mouvement de la raquette à la zone de la fenêtre du jeu.

local raquette = {x=300, y=555, w=200, h=40, speed=250}

function love.update(dt)
	-- deplacement de la raquette Droite ou Gauche
	if love.keyboard.isDown("left") then
    	raquette.x = raquette.x - (raquette.speed * dt)
	elseif love.keyboard.isDown("right") then
		raquette.x = raquette.x + (raquette.speed * dt)
	end
  
  -- limiter le deplacement de la raquette a la fenetre du jeu
	if raquette.x < 0 then
		raquette.x = 0
    elseif raquette.x + raquette.w > 800 then
    	raquette.x = 800 - raquette.w
    end
end

Maintenant si la raquette est en dehors de l’écran on la replace au bord gauche ou droit de la fenêtre, c’est beaucoup mieux.

Le code complet :

love.window.setTitle("Casse Brique")

local raquette = {x=300, y=555, w=200, h=40, speed=250}

local balle = {x=0, y=0, w=40, h=40}

local briques = {} -- nos briques

-- creation des briques
for ligne=1, 5 do
  briques[ligne] = {}
  for colonne=1, 6 do
    briques[ligne][colonne] = 1
  end
end
--

function love.update(dt)
  	-- la balle suit la raquette
	balle.x = raquette.x + ((raquette.w / 2) - (balle.w / 2))
	balle.y = raquette.y - (balle.h +  2)
  
  	-- deplacement de la raquette Droite ou Gauche
	if love.keyboard.isDown("left") then
    	raquette.x = raquette.x - (raquette.speed * dt)
	elseif love.keyboard.isDown("right") then
		raquette.x = raquette.x + (raquette.speed * dt)
	end
  
  	-- limiter le deplacement de la raquette a la fenetre du jeu
	if raquette.x < 0 then
		raquette.x = 0
    elseif raquette.x + raquette.w > 800 then
    	raquette.x = 800 - raquette.w
    end
end
--

function love.draw()
  
  -- notre raquette
  love.graphics.rectangle("fill", raquette.x, raquette.y, raquette.w, raquette.h)
  
  -- notre balle
  	love.graphics.rectangle("fill", balle.x, balle.y, balle.w, balle.h)
 
  local x, y, w, h -- nos variables briques
  
  x = 0
  y = 0
  w = 800 / 6
  h = 30

  for ligne=1, 5 do
    
    for colonne=1, 6 do
    	love.graphics.rectangle("fill", x+1, y+1, w-2, h-2)  
    	x = x + w -- a chaque colonne on decale notre variable x de la largeur d une brique
    end

    x = 0 -- on remets la position x pour la ligne suivante
    y = y + h -- on decalle la position y pour la ligne suivante
  end

end