Menu
CoddyTech

تفادَ: العب مجددًا

جزء من قسم قواعد اللعبة في رحلة Godot على Coddy. الدرس 29 من 29.

تتيح الخطوة الأخيرة للاعب الضغط على E بعد انتهاء اللعبة للعب مرة أخرى.

فعلت ذلك في غرفة الأشواك. عيّن process_mode الخاص بـ Main إلى Node.PROCESS_MODE_ALWAYS، حتى تعمل _process أثناء إيقاف اللعبة مؤقتًا. اللاعب والمؤقتان وكل كتلة مضبوطة على قابلية الإيقاف المؤقت في مشاهدها، لذا ستظل متوقفة. عند الضغط على المفتاح، ألغِ الإيقاف المؤقت وأعِد تحميل المشهد:

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

تؤدي إعادة التحميل إلى إزالة كل كتلة والنقاط والأرواح. اعرض أيضًا تسمية Hint عند انتهاء اللعبة، حتى يعرف اللاعب أي مفتاح يضغط عليه.

challenge icon

التحدي

صعب

اجعل اللاعب يضغط على E للعب مرة أخرى.

  1. في _ready()، اضبط process_mode لهذه العقدة على Node.PROCESS_MODE_ALWAYS.
  2. عند انتهاء اللعبة، أظهر أيضًا $HUD/Hint.
  3. أضف _process(): عندما تكون قيمة lives هي 0 ويكون action قد ضُغط للتو، ألغِ إيقاف اللعبة مؤقتًا وأعِد تحميل المشهد.

اضغط على «العب»، ثم اخسر واضغط على E: تبدأ لعبة جديدة بنتيجة Score: 0. ثم اضغط على «تحقق».

جرّب بنفسك

extends Node2D

var block_scene = preload("res://block.tscn")
var score = 0
var lives = 3

func _ready():
	$HUD/Score.text = "Score: %d" % score
	$HUD/Lives.text = "Lives: %d" % lives
	$SpawnTimer.timeout.connect(_on_spawn_timer_timeout)
	$ScoreTimer.timeout.connect(_on_score_timer_timeout)
	$Player.hurt.connect(_on_player_hurt)

func _on_spawn_timer_timeout():
	var block = block_scene.instantiate()
	block.position = Vector2(randf_range(40, 600), -30)
	add_child(block)

func _on_score_timer_timeout():
	score += 1
	$HUD/Score.text = "Score: %d" % score

func _on_player_hurt():
	lives -= 1
	$HUD/Lives.text = "Lives: %d" % lives
	if lives == 0:
		$HUD/GameOver.visible = true
		get_tree().paused = true
quiz iconاختبر نفسك

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

جميع دروس قواعد اللعبة

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