Menu
CoddyTech

Punkte und Sieg

Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 20 von 36.

Ein großer Felsen ist 20 Punkte wert und ein kleiner 50. _on_rock_broken kennt die Größe, fügt also die Punkte hinzu und aktualisiert $HUD/Score.

Du gewinnst, wenn keine Felsen mehr übrig sind. Beginne die Zählung bei 4. Ziehe für jeden zerbrochenen Felsen eins ab und addiere zwei, wenn ein großer Felsen sich teilt:

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

Zähle die zwei neuen Felsen hier und nicht in spawn_rock. spawn_rock wird am Ende des Frames ausgeführt, sodass der Zähler null erreichen würde, bevor die letzten zwei kleinen Felsen existieren.

Die Felsen, Kugeln und das Raumschiff sind Pausable. Main ist Always.

challenge icon

Aufgabe

Schwer

Erziele Punkte für die Felsen und gewinne, wenn sie alle verschwunden sind.

  1. Füge in main.gd var score = 0 hinzu und zeige Score: 0 an.
  2. Ein zerbrochener großer Felsen bringt 20 Punkte, ein kleiner 50. Zeige den Punktestand an.
  3. Füge var rocks_left = 4 hinzu. Ziehe für jeden zerbrochenen Felsen einen ab und addiere zwei, wenn ein großer Felsen zerbricht. Bei 0 zeige You win! an und pausiere.

Drücke „Spielen“ und beseitige die Felsen: You win! wird angezeigt. Klicke dann auf „Prüfen“.

Probier es selbst

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)

Alle Lektionen in Projekte

Übe selbstständig: Godot-Playground