Dégager le mur
Fait partie de la section Projets du Journey Godot de Coddy. Leçon 9 sur 33.
La dernière étape consiste à trouver un moyen de gagner : casser toutes les briques.
Compte les briques restantes. Commence à 40 et enlève-en une chaque fois que brick_broken arrive. Quand il n’en reste plus, le mur est dégagé :
bricks_left -= 1
if bricks_left == 0:
$HUD/Message.text = "You Win!"
get_tree().paused = trueEnlève-en une avant de vérifier si le nombre est égal à zéro. Si tu vérifies d’abord, le test voit 1 pour la dernière brique et ne voit jamais 0.
La touche Entrée permet aussi de démarrer une nouvelle partie depuis l’écran Game Over. Ton jeu Breakout est terminé.
Défi
MoyenDans main.gd :
- Ajoute
var bricks_left = 40. - Chaque brique cassée en enlève une.
- Lorsqu'il n'en reste plus, affiche
You Win!dans$HUD/Messageet mets le jeu en pause.
Essayez vous-même
extends Node2D
const BRICK = preload("res://brick.tscn")
const COLORS = [Color(1, 0.42, 0.42), Color(1, 0.78, 0.34), Color(0.49, 0.95, 0.75), Color(0.369, 0.635, 1), Color(0.75, 0.82, 0.95)]
var score = 0
var lives = 3
func _ready():
for row in 5:
for column in 8:
var brick = BRICK.instantiate()
brick.position = Vector2(68 + column * 72, 60 + row * 26)
brick.color = COLORS[row]
add_child(brick)
$Ball.brick_broken.connect(_on_brick_broken)
$HUD/Score.text = "Score: 0"
$Ball.missed.connect(_on_missed)
$HUD/Lives.text = "Lives: 3"
func _process(delta):
if get_tree().paused and Input.is_action_just_pressed("action"):
get_tree().paused = false
get_tree().reload_current_scene()
func _on_brick_broken():
score += 10
$HUD/Score.text = "Score: %d" % score
func _on_missed():
lives -= 1
$HUD/Lives.text = "Lives: %d" % lives
if lives == 0:
$HUD/Message.text = "Game Over"
get_tree().paused = true
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Projets
Entraînez-vous par vous-même : Playground Godot