مراجعة - نظام الصحة
جزء من قسم البرمجة كائنية التوجّه في رحلة GDScript على Coddy. الدرس 39 من 65.
التحدي
سهلأنشئ نظام صحة يُصدر فيه مكوّن الصحة إشعارًا عند كل تغيير، ويستجيب له شريط الصحة.
يخزّن Health (health.gd) القيمتين max_hp وhp (وتبدأ كلتاهما بالقيمة المعطاة للباني)، ويعرّف ثلاث إشارات: damaged(amount, hp) وhealed(amount, hp) وdied.
- تُخفّض
take_damage(amount)قيمةhp، من دون أن تقل عن0، وتُصدرdamagedبقيمة نقاط الصحة المفقودة فعليًا وقيمةhpالجديدة. وعندما تصلhpإلى0، تُصدر أيضًاdied. - ترفع
heal(amount)قيمةhp، من دون أن تتجاوزmax_hp، وتُصدرhealedبقيمة نقاط الصحة المستعادة فعليًا وقيمةhpالجديدة. لا يصدر أي شيء عند الشفاء مع اكتمال الصحة. - بمجرد أن تصبح
hpمساويةً لـ0، لا تفعل أي من الدالتين شيئًا.
يحتوي HealthBar (health_bar.gd) على watch(health)، التي تربط الإشارات الثلاث جميعها بدواله الخاصة. وتطبع هذه الدوال -8 HP [12/20] و+5 HP [17/20] وGame over. يخزّن الشريط الحد الأقصى لنقاط الصحة التي يحتاجها كرقم؛ لا تحتفظ بمرجع إلى كائن Health.
يقرأ الكود المرفق الحد الأقصى لنقاط الصحة وعدد الأوامر التالية (damage 8، heal 5)، ثم يطبع نقاط الصحة النهائية. عند حد أقصى قدره 20، ومع الأوامر damage 8، heal 5، heal 10، damage 30، heal 5، تكون النتيجة:
-8 HP [12/20]
+5 HP [17/20]
+3 HP [20/20]
-20 HP [0/20]
Game over
Final HP: 0ضع الكود الخاص بك في health.gd وhealth_bar.gd. يحتوي main.gd على كود الإدخال والإخراج المرفق، ولا يمكن تعديله.
جرّب بنفسك
extends Node
func _ready():
# كود الإدخال والإخراج المُقدَّم: اتركه كما هو
var health := Health.new(int(OS.read_string_from_stdin()))
var bar := HealthBar.new()
bar.watch(health)
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
if parts[0] == "damage":
health.take_damage(int(parts[1]))
elif parts[0] == "heal":
health.heal(int(parts[1]))
print("Final HP: ", health.hp)
جميع دروس البرمجة كائنية التوجّه
1أساسيات البرمجة كائنية التوجه
الملفات الخارجيةمقدمة إلى البرمجة كائنية التوجهالفئات مقابل الكائناتالكلمة المفتاحية selfالأساليبالخصائصالمُنشئ (_init)مراجعة - آلة حاسبة بسيطة4تعدد الأشكال
إعادة النظر في تجاوز الأساليبكتابة الأنواع بأسلوب البطةالفئات والأساليب المجرّدةتصميم الواجهاتمراجعة - حاسبة الأشكال10أنماط التصميم، الجزء الثاني
نمط الأوامرنمط المحوّلنمط المُزيّننمط الطريقة القالبيةنمط الحالةالنمط المركّب2خصائص الأصناف
متغيرات الكائن مقابل المتغيرات الساكنةالدوال الساكنةمُعيِّنات الخصائصمُسترجِعات الخصائصخاص وفقًا للاتفاقيةمراجعة - مدير الحسابات البنكية5التغليف
الأعضاء العامة والخاصةالتحقق من الصحة باستخدام دوال الضبطإخفاء المعلوماتالخصائص للقراءة فقطمراجعة - نظام سجلات الطلاب8مفاهيم متقدمة في البرمجة كائنية التوجه
التركيب مقابل الوراثةالأصناف الداخليةالعُقد كمكوّناتRefCounted مقابل Nodeالتعدادات في الأصنافتدرّب بنفسك: مترجم GDScript عبر الإنترنت