Duvarı Temizle
Coddy'nin Godot Journey'sinin Projeler bölümünün bir parçası. Ders 10 / 36.
Son adım kazanmanın bir yolu: tüm tuğlaları kır.
Kalan tuğlaları say. 40'tan başla ve her brick_broken geldiğinde bir azalt. Sıfır olduğunda duvar temizlenir:
bricks_left -= 1
if bricks_left == 0:
$HUD/Message.text = "You win!"
get_tree().paused = trueSıfırı kontrol etmeden önce bir azalt. Önce kontrol edersen son tuğlada kontrol 1'i görür ve 0'ı asla görmez.
Game Over ekranındaki Enter tuşu burada da yeni bir oyun başlatır. Breakout'un tamamlandı.
Görev
OrtaHer tuğlayı kırarak oyunu kazan.
main.gddosyasındavar bricks_left = 40ekle._on_brick_brokeniçindebricks_leftdeğerini bir azalt.- Hiç tuğla kalmadığında
$HUD/MessageiçindeYou win!mesajını göster ve oyunu duraklat.
“Oyna” düğmesine bas ve duvarı temizle: You win! mesajı görünür ve top durur. Ardından “Kontrol et” düğmesine bas.
Kendin dene
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
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Projeler bölümündeki tüm dersler
Kendi başına pratik yap: Godot playground