Menu
CoddyTech

Skor dan Kemenangan

Termasuk bagian Proyek dalam perjalanan Godot di Coddy. Pelajaran 17 dari 33.

Batu besar bernilai 20 poin dan batu kecil bernilai 50 poin. _on_rock_broken mengetahui ukurannya, jadi fungsi itu menambahkan poin dan memperbarui $HUD/Score.

Kamu menang saat tidak ada batu yang tersisa. Mulai hitungan dari 4. Kurangi satu untuk setiap batu yang pecah, dan tambahkan dua saat batu besar terbelah:

if rock.size == 2:
	rocks_left += 2
rocks_left -= 1
if rocks_left == 0:
	$HUD/Message.text = "You Win!"
	get_tree().paused = true

Hitung dua batu baru di sini, bukan di spawn_rock. spawn_rock berjalan di akhir frame, jadi hitungannya akan mencapai nol sebelum dua batu kecil terakhir muncul.

Batu, peluru, dan kapal bersifat Pausable. Main bersifat Always.

challenge icon

Tantangan

Sulit

Di main.gd:

  1. Tambahkan var score = 0 dan tampilkan Score: 0 di awal.
  2. Batu besar yang hancur menambah skor 20, sedangkan batu kecil menambah 50. Tampilkan skor baru.
  3. Tambahkan var rocks_left = 4 dan hitung nilainya seperti yang ditunjukkan. Saat nilainya nol, tampilkan You Win! dan jeda permainan.

Coba sendiri

extends Node2D

const ROCK = preload("res://rock.tscn")

func _ready():
	for i in 4:
		spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)

func spawn_rock(where, velocity, size):
	var rock = ROCK.instantiate()
	rock.position = where
	rock.velocity = velocity
	rock.size = size
	rock.broken.connect(_on_rock_broken)
	add_child(rock)

func _on_rock_broken(rock):
	if rock.size == 2:
		spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
		spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Proyek

Latihan sendiri: Playground Godot