Menu
CoddyTech

Breakout-Punktestand

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

Jeder Ziegelstein ist 10 Punkte wert. Der Ball weiß, wann er einen zerstört, und main.gd führt den Punktestand. Ein Signal verbindet beide. Der Ball sendet es für jeden zerstörten Ziegelstein aus, und das Hauptskript lauscht darauf.

In ball.gd deklarierst du das Signal oben und sendest es neben smash() aus:

signal brick_broken

# in _on_body_entered, nach body.smash():
brick_broken.emit()

In main.gd verbindest du es in _ready und addierst die Punkte in der aufgerufenen Funktion:

func _on_brick_broken():
	score += 10
	$HUD/Score.text = "Score: %d" % score

Das Label befindet sich in einem CanvasLayer namens HUD. Setze es auch in _ready auf Score: 0, sonst bleibt es leer, bis der erste Ziegelstein zerstört wird.

challenge icon

Aufgabe

Mittel

Erhalte 10 Punkte für jeden Stein.

  1. Füge in ball.gd signal brick_broken hinzu und löse das Signal aus, wenn ein Stein zerbricht.
  2. Füge in main.gd var score = 0 hinzu und zeige Score: 0 in $HUD/Score in _ready an.
  3. Verbinde $Ball.brick_broken mit einer Funktion, die 10 hinzufügt und den Punktestand anzeigt.

Drücke „Spielen“ und zerbrich einen Stein: Das Label zeigt Score: 10 an. Drücke dann „Prüfen“.

Probier es selbst

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)]

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)

Alle Lektionen in Projekte

Übe selbstständig: Godot-Playground