Menu
CoddyTech

Điểm số trong Breakout

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

Mỗi viên gạch có giá trị 10 điểm. Quả bóng biết khi nào nó phá vỡ một viên gạch, còn main.gd lưu điểm số. Một tín hiệu kết nối chúng. Quả bóng phát tín hiệu đó mỗi khi phá vỡ một viên gạch, còn tập lệnh chính lắng nghe tín hiệu.

Trong ball.gd, khai báo tín hiệu ở đầu tệp và phát tín hiệu bên cạnh smash():

signal brick_broken

# Trong _on_body_entered, sau body.smash():
brick_broken.emit()

Trong main.gd, kết nối tín hiệu trong _ready và cộng điểm trong hàm mà tín hiệu gọi:

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

Nhãn nằm trong một CanvasLayer có tên HUD. Trong _ready, hãy đặt nhãn thành Score: 0 nữa, nếu không nhãn sẽ trống cho đến khi viên gạch đầu tiên bị phá vỡ.

challenge icon

Thử thách

Trung bình

Nhận 10 điểm cho mỗi viên gạch.

  1. Trong ball.gd, thêm signal brick_broken và phát tín hiệu đó khi một viên gạch vỡ.
  2. Trong main.gd, thêm var score = 0 và hiển thị Score: 0 trong $HUD/Score ở _ready.
  3. Kết nối $Ball.brick_broken với một hàm cộng thêm 10 và hiển thị điểm số.

Nhấn Chơi và phá một viên gạch: nhãn hiển thị Score: 10. 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)]

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)

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

Tự luyện tập: Playground Godot