Menu
CoddyTech

Duvarı Yık

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

Son adım, kazanmanın bir yoludur: tüm tuğlaları kır.

Kalan tuğlaları say. 40'tan başla ve her brick_broken geldiğinde bir azalt. Sıfırda duvar temizlenir:

bricks_left -= 1
if bricks_left == 0:
	$HUD/Message.text = "You Win!"
	get_tree().paused = true

Sı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ı.

challenge icon

Görev

Orta

main.gd dosyasında:

  1. var bricks_left = 40 ekleyin.
  2. Kırılan her tuğla sayıyı bir azaltır.
  3. Hiç tuğla kalmadığında, $HUD/Message içinde You Win! gösterin ve oyunu duraklatın.

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
quiz iconKendini test et

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