Menu
CoddyTech

النقاط والفوز

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

تساوي الصخرة الكبيرة 20 نقطة، والصغيرة 50 نقطة. تعرف _on_rock_broken حجم الصخرة، لذا تضيف النقاط وتحدّث $HUD/Score.

تفوز عندما لا تبقى أي صخور. ابدأ العدّ من 4. أنقص واحدًا مقابل كل صخرة مكسورة، وأضف اثنين عندما تنقسم صخرة كبيرة:

if rock.size == 2:
	rocks_left += 2
rocks_left -= 1
if rocks_left == 0:
	$HUD/Message.text = "You win!"
	get_tree().paused = true

احتسب الصخرتين الجديدتين هنا، وليس في spawn_rock. تُنفَّذ spawn_rock في نهاية الإطار، لذا سيصل العدّ إلى الصفر قبل ظهور آخر صخرتين صغيرتين.

الصخور والرصاص والسفينة قابلة للإيقاف المؤقت. أما Main فدائم.

challenge icon

التحدي

صعب

اجمع النقاط من الصخور واربح عندما تختفي.

  1. في main.gd، أضف var score = 0 وأظهر Score: 0.
  2. الصخرة الكبيرة المكسورة تضيف 20 نقطة، والصغيرة 50 نقطة. أظهر النتيجة.
  3. أضف var rocks_left = 4. أنقص واحدًا مع كل صخرة مكسورة، وأضف اثنين عندما تنقسم صخرة كبيرة. عند وصول العدد إلى 0، أظهر You win! وأوقف اللعبة مؤقتًا.

اضغط «العب» وأزل الصخور: ستظهر You win! ثم اضغط «تحقق».

جرّب بنفسك

extends Node2D

const ROCK = preload("res://rock.tscn")

func _ready():
	for i in 4:
		spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)

func spawn_rock(where, velocity, size):
	var rock = ROCK.instantiate()
	rock.position = where
	rock.velocity = velocity
	rock.size = size
	rock.broken.connect(_on_rock_broken)
	add_child(rock)

func _on_rock_broken(rock):
	if rock.size == 2:
		spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
		spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)

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

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