Menu
CoddyTech

Puan ve Zafer

Coddy'nin Godot Journey'sinin Projeler bölümünün bir parçası. Ders 20 / 36.

Büyük bir kaya 20 puan, küçük bir kaya ise 50 puan değerindedir. _on_rock_broken boyutu bilir, bu yüzden puanları ekler ve $HUD/Score değerini günceller.

Hiç kaya kalmadığında kazanırsın. Sayımı 4'ten başlat. Kırılan her kaya için bir eksilt ve büyük bir kaya ikiye bölündüğünde iki ekle:

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

İki yeni kayayı burada say, spawn_rock içinde değil. spawn_rock kare sonunda çalışır, bu yüzden son iki küçük kaya oluşmadan önce sayı sıfıra ulaşır.

Kayalar, mermiler ve gemi Duraklatılabilir'dir. Main Her Zaman'dır.

challenge icon

Görev

Zor

Kayaları parçalayarak puan kazan ve hepsi yok olduğunda kazan.

  1. main.gd dosyasına var score = 0 ekle ve Score: 0 göster.
  2. Parçalanan büyük bir kaya 20, küçük bir kaya 50 puan kazandırır. Skoru göster.
  3. var rocks_left = 4 ekle. Parçalanan her kaya için bir azalt, büyük bir kaya parçalandığında iki ekle. 0 olduğunda You win! göster ve oyunu duraklat.

“Oyna” düğmesine bas ve kayaları temizle: “You win!” mesajı görünür. Ardından “Kontrol et” düğmesine bas.

Kendin dene

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)

Projeler bölümündeki tüm dersler

Kendi başına pratik yap: Godot playground