Première notion de fin de jeu, quand un alien nous touche on écrit GAME OVER et c’est fini. Pour rejouer il faudra relancer le jeu ; c’est violent mais il faut bien commencer quelque part.

DragonRuby reste avant tout du Ruby. Même s’il nous fournit un state très pratique, on peut construire nos objets comme d’habitude :

class Game
  def initialize
    @game_over = false
  end
end

Dans la partie render on affiche GAME OVER au milieu de l’écran, sous condition :

    if @game_over
      outputs.labels << {
        x: 640,
        y: 360,
        size_px: 200,
        alignment_enum: 1,
        vertical_alignment_enum: 1,
        text: "GAME OVER",
        r: 255,
        g: 255,
        b: 255,
      }
    end

On saute la partie calc quand on a perdu, ce qui a pour effet de figer les éléments présents :

  def calc
    return if @game_over

    # ...
  end

La partie est perdue dès qu’il y a collision entre un alien et le personnage :

  def calc_alien_collision
    if a = Geometry.find_intersect_rect(state.hero, state.aliens)
      @game_over = true
    end
  end

Références

  1. Vous trouverez le code de Jetpack Hero sur github
  2. Documentation de DragonRuby


/ / / / / / / / / /


Cet article fait partie d’une série :

  1. Jetpack Hero
  2. Partie II
  3. Une platforme, des collisions
  4. Première animation du personnage
  5. Ajouter des platformes
  6. Du carburant pour le jetpack
  7. Collecte de minerai
  8. Effets sonores
  9. Du rangement avec la classe Game
  10. Apparition des aliens
  11. Tir du personnage
  12. On dégomme de l’alien
  13. GAME OVER
  14. Les aliens bougent enfin