Menu
CoddyTech

Kết thúc trò chơi Breakout

Thuộc phần Dự án trong hành trình Godot của Coddy. Bài học 9 trên 36.

Ba lần trượt sẽ kết thúc trò chơi. Khi số mạng bằng 0, hãy hiển thị Game Over và tạm dừng bằng get_tree().paused = true. Thanh đỡ và quả bóng có thể tạm dừng, nên chúng sẽ đứng yên. Main luôn hoạt động, nên nó vẫn chạy và có thể đọc phím Enter:

func _process(delta):
	if get_tree().paused and Input.is_action_just_pressed("action"):
		get_tree().paused = false
		get_tree().reload_current_scene()

Bỏ tạm dừng trước khi tải lại. Trạng thái tạm dừng thuộc về cây, không phải cảnh, nên cảnh được tải lại sẽ bắt đầu trong trạng thái đóng băng.

challenge icon

Thử thách

Khó

Kết thúc trò chơi khi hết mạng cuối cùng.

  1. Trong _on_missed, khi lives bằng 0, hiển thị Game Over trong $HUD/Message và tạm dừng trò chơi.
  2. Thêm _process: khi trò chơi đang tạm dừng và action vừa được nhấn, bỏ tạm dừng, rồi tải lại cảnh.

Nhấn Chơi và để bóng rơi ba lần: dòng Game Over sẽ hiện ra và bóng dừng lại. Nhấn Enter để bắt đầu lại. Sau đó nhấn Kiểm tra.

Tự làm thử

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 _on_brick_broken():
	score += 10
	$HUD/Score.text = "Score: %d" % score

func _on_missed():
	lives -= 1
	$HUD/Lives.text = "Lives: %d" % lives

Tất cả bài học trong Dự án

Tự luyện tập: Playground Godot