Lorsque le joueur faisait feu, le tir prenait naissance dans le coin supérieur gauche du joueur. On le voudrait plutôt au milieu.

Voici donc la nouvelle classe Fire:

class Fire
  SIDE = 4
  DELTA = 5

  attr_reader :x, :y

  def initialize(player)
    @x = player.x + player.w / 2
    @y = player.y - SIDE
  end

  def w; SIDE; end

  def h; SIDE; end

  def color; "white"; end

  def update_position
    @y -= DELTA
  end
end

Dans initialize, on calcule la position d’origine du tir par rapport au joueur, passé en argument.

Il faut donc changer aussi la méthode fire de la classe Game:

class Game
  
  ...

  def fire
    @fires << Fire.new(@player)
  end

  ...
end

Voilà, ça c’est fait. N’oubliez pas que le code est maintenant disponible sur Github.

À demain.