Menu
CoddyTech

نفدت القلوب

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

عندما يختفي القلب الأخير، تنتهي اللعبة. اختبر ما إذا كانت القيمة صفرًا مباشرةً بعد إخفاء القلب:

if health == 0:
	$HUD/Message.text = "Game Over"
	get_tree().paused = true

البطل والحارس قابلان للإيقاف المؤقت، لذا يتجمدان. أما Main فدائم التشغيل، لذا يستمر _process في العمل. يبدأ لعبة جديدة عندما يضغط اللاعب على Enter:

func _process(delta):
	if get_tree().paused and Input.is_action_just_pressed("action"):
		get_tree().paused = false
		get_tree().reload_current_scene()

تعيد إعادة التحميل ضبط كل شيء: ثلاثة قلوب، والمفتاح على الأرض، والباب مقفل.

challenge icon

التحدي

متوسط

أنهِ اللعبة عند نفاد القلوب.

  1. عندما تصل health إلى 0، اعرض Game Over في $HUD/Message وأوقف اللعبة مؤقتًا.
  2. أثناء الإيقاف المؤقت، يؤدي الضغط على Enter (action) إلى استئناف اللعبة وإعادة تحميل المشهد.

اضغط على «العب» وافقد ثلاثة قلوب: ستظهر Game Over. اضغط على Enter للبدء من جديد. ثم اضغط على «تحقق».

جرّب بنفسك

extends Node2D

var has_key = false
var health = 3

func _ready():
	$Key.body_entered.connect(_on_key_body_entered)
	$DoorZone.body_entered.connect(_on_door_zone_body_entered)
	$Enemy.body_entered.connect(_on_enemy_body_entered)

func _on_key_body_entered(body):
	has_key = true
	$Key.queue_free()
	$HUD/KeyIcon.visible = true

func _on_door_zone_body_entered(body):
	if has_key:
		$Door.queue_free()
		$DoorZone.queue_free()

func _on_enemy_body_entered(body):
	health -= 1
	$HUD/Hearts.get_child(health).visible = false
	$Hero.flash()

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

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