Menu
CoddyTech

Phá hủy bức tường

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

Bước cuối cùng là cách để chiến thắng: phá hết mọi viên gạch.

Đếm số viên gạch còn lại. Bắt đầu từ 40 và trừ đi một viên mỗi khi brick_broken xuất hiện. Khi số lượng về 0, bức tường đã sạch:

bricks_left -= 1
if bricks_left == 0:
	$HUD/Message.text = "You win!"
	get_tree().paused = true

Trừ đi một viên trước khi kiểm tra xem số lượng có về 0 không. Nếu kiểm tra trước, phép kiểm tra sẽ thấy số 1 ở viên gạch cuối cùng và không bao giờ thấy số 0.

Phím Enter cũng bắt đầu một ván mới từ màn hình Game Over. Bạn đã hoàn thành Breakout.

challenge icon

Thử thách

Trung bình

Thắng trò chơi bằng cách phá vỡ mọi viên gạch.

  1. Trong main.gd, thêm var bricks_left = 40.
  2. Trong _on_brick_broken, giảm bricks_left đi một.
  3. Khi không còn viên gạch nào, hiển thị You win! trong $HUD/Message và tạm dừng trò chơi.

Nhấn Chơi và phá hết bức tường: dòng You win! sẽ xuất hiện và quả bóng dừng 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 _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
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

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

Tự luyện tập: Playground Godot