Menu
CoddyTech

Score et victoire

Fait partie de la section Projets du Journey Godot de Coddy. Leçon 17 sur 33.

Un gros rocher vaut 20 points et un petit, 50. _on_rock_broken connaît la taille, il ajoute donc les points et met à jour $HUD/Score.

Tu gagnes lorsqu'il ne reste plus aucun rocher. Commence le compteur à 4. Retire-en un pour chaque rocher détruit et ajoute-en deux lorsqu'un gros se divise :

if rock.size == 2:
	rocks_left += 2
rocks_left -= 1
if rocks_left == 0:
	$HUD/Message.text = "You Win!"
	get_tree().paused = true

Compte les deux nouveaux rochers ici, pas dans spawn_rock. spawn_rock s'exécute à la fin de la frame, le compteur atteindrait donc zéro avant que les deux derniers petits rochers existent.

Les rochers, les balles et le vaisseau sont Pausable. Main est Always.

challenge icon

Défi

Difficile

Dans main.gd :

  1. Ajoutez var score = 0 et affichez Score: 0 au début.
  2. Un gros rocher détruit ajoute 20 points et un petit, 50. Affichez le nouveau score.
  3. Ajoutez var rocks_left = 4 et décrémentez cette valeur comme indiqué. Lorsqu’elle atteint zéro, affichez You Win! et mettez le jeu en pause.

Essayez vous-même

extends Node2D

const ROCK = preload("res://rock.tscn")

func _ready():
	for i in 4:
		spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)

func spawn_rock(where, velocity, size):
	var rock = ROCK.instantiate()
	rock.position = where
	rock.velocity = velocity
	rock.size = size
	rock.broken.connect(_on_rock_broken)
	add_child(rock)

func _on_rock_broken(rock):
	if rock.size == 2:
		spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
		spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
quiz iconTestez-vous

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