Un score et des vies (Jetpack Hero)
On arrive doucement vers la fin et on se rapproche d’un jeu complet en ajoutant un score et des vies.
Score
Ça a beau être du DragonRuby, on peut quand même utiliser nos bonnes vieilles
variables d’objet. À priori une variable @score
pour un objet Game
a du sens :
@score = 0
Il faut bien sûr l’afficher :
outputs.labels << {
x: 900,
y: 10,
size_px: 55,
alignment_enum: 2,
vertical_alignment_enum: 0,
text: @score,
r: 255,
g: 255,
b: 255,
}
Et on augmente le score au bon moment :
state.aliens.each do |alien|
if alien.dead
@score += 100
# ...
end
# ...
end
Vies
Pour les vies ce sera la même mécanique. D’abord une variable et un affichage :
@lives = 3
@lives.times do |i|
outputs.sprites << {
x: 1_000 + i * 80,
y: 50,
w: 7 * 3,
h: 17 * 3,
path: 'sprites/hero-flying-0.png'
}
end
Puis une mise à jour quand on est touché par un alien. J’ai aussi ajouté du son :
def calc_alien_collision
if a = Geometry.find_intersect_rect(state.hero, state.aliens)
@lives -= 1
if @lives == 0
@game_over = true
audio[:game_over] = { input: "sounds/game-over.wav" }
return
end
audio[:live_down] = { input: "sounds/life-lost.wav" }
state.hero.x = 120
state.hero.y = 700
end
end
Références
- Vous trouverez le code de Jetpack Hero sur github
- Documentation de DragonRuby
/ / / / / / / / / /
Cet article fait partie d’une série :
- Jetpack Hero
- Partie II
- Une platforme, des collisions
- Première animation du personnage
- Ajouter des platformes
- Du carburant pour le jetpack
- Collecte de minerai
- Effets sonores
- Du rangement avec la classe Game
- Apparition des aliens
- Tir du personnage
- On dégomme de l’alien
- GAME OVER
- Les aliens bougent enfin
- Plusieurs petites animations
- Un score et des vies
/ / / / / / / / / /
Commentaires
Pas encore trouvé de solution simple et non-invasive pour avoir des commentaires sur le blog. En attendant vous pouvez laisser votre Commentaire sur mastodon@lkdjiin