Menu
CoddyTech

إزالة الجدار

جزء من قسم المشاريع في رحلة Godot على Coddy. الدرس 10 من 36.

الخطوة الأخيرة هي طريقة للفوز: حطّم كل الطوب.

احسب عدد قطع الطوب المتبقية. ابدأ من 40 وأنقص واحدة كلما وصل brick_broken. عند الوصول إلى الصفر، يصبح الجدار خاليًا:

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

أنقص واحدة قبل اختبار الصفر. إذا اختبرت أولًا، فسيكون العدد 1 عند آخر قطعة طوب، ولن يصل أبدًا إلى 0.

يبدأ مفتاح Enter لعبة جديدة من شاشة Game Over هنا أيضًا. اكتملت لعبة Breakout.

challenge icon

التحدي

متوسط

اربح اللعبة بتحطيم كل الطوب.

  1. في main.gd، أضف var bricks_left = 40.
  2. في _on_brick_broken، أنقص واحدًا من bricks_left.
  3. عندما لا يتبقى أي طوبة، اعرض You win! في $HUD/Message وأوقف اللعبة مؤقتًا.

اضغط «العب» وأزل الجدار: ستظهر عبارة You win! وتتوقف الكرة. ثم اضغط «تحقق».

جرّب بنفسك

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 iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المشاريع

تدرّب بنفسك: Playground لـ Godot