Menu
CoddyTech

Permainan Breakout Berakhir

Termasuk bagian Proyek dalam perjalanan Godot di Coddy. Pelajaran 9 dari 36.

Tiga kali gagal harus mengakhiri permainan. Saat nyawa mencapai nol, tampilkan Game Over dan jeda permainan dengan get_tree().paused = true. Dayung dan bola bersifat Pausable, jadi keduanya membeku. Main bersifat Always, jadi tetap berjalan dan dapat membaca Enter:

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

Batalkan jeda sebelum memuat ulang. Jeda berlaku pada pohon, bukan pada scene, jadi scene yang dimuat ulang akan dimulai dalam keadaan beku.

challenge icon

Tantangan

Sulit

Akhiri permainan saat nyawa terakhir habis.

  1. Di _on_missed, saat lives bernilai 0, tampilkan Game Over di $HUD/Message dan jeda permainan.
  2. Tambahkan _process: saat permainan dijeda dan action baru saja ditekan, lanjutkan permainan, lalu muat ulang scene.

Tekan tombol “Main” dan biarkan bola terlewat tiga kali: Game Over akan muncul dan bola berhenti. Tekan Enter untuk mulai lagi. Lalu tekan tombol “Periksa”.

Coba sendiri

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

Semua pelajaran di Proyek

Latihan sendiri: Playground Godot