‫مرحبًا بعودتك.
‫في هذا الفيديو ، نحن مهتمون بشروط الفوز والخسارة.
‫هذا هو أحد آخر الأشياء التي سنتعامل معها في مشروع اللعبة هذا.
‫الآن دعونا نلقي نظرة على خطة القسم الخاصة بنا.
‫الآن ، لقد قمنا بالفعل بفحص العناصر الخمسة الأولى في خطة الأقسام الخاصة بنا ، وآخر عنصرين هما
‫المؤثرات الخاصة وشروط الفوز والخسارة.
‫وأود تبديل هذين الأخيرين والتعامل مع ظروف الفوز والخسارة لمجرد أن هذا
‫هو آخر منطق برمجة اللعب لدينا والتأثيرات الخاصة تجميلية وتشبه اللمسات الأخيرة حتى
‫نتمكن من التعامل معها في النهاية.
‫لذلك في هذا الفيديو ، سنقوم بإنشاء وظيفة تجاوز اللعبة حتى نعرف متى تم الفوز
‫باللعبة أو خسارتها.
‫ومن أجل الفوز باللعبة ، سنحتاج إلى حساب عدد الأبراج في العالم ، لأنه بمجرد
‫تدمير جميع الأبراج ، فإننا نعلم أننا فزنا باللعبة.
‫وإذا تم تدمير الخزان نفسه ، فيمكننا اعتبار ذلك حالة خاسرة.
‫لذا عدت إلى هنا في وضع اللعبة وأول شيء أود القيام به هو إنشاء مخطط آخر قابل للتنفيذ.
‫لدينا وظيفة بدء اللعبة هذه ، والتي يمكننا استدعاؤها من C ++ ، لكننا نطبق منطقها في وضع اللعبة.
‫مخطط بفضل الحدث القابل للتنفيذ Blueprint ، أود إنشاء واحد آخر من هؤلاء لخسارة اللعبة.
‫لذلك سأقوم بإنشاء وظيفة باطلة تسمى Game Over.
‫ولهذه الطريقة ، أود أن آخذ معلمة إدخال منطقية تسمى B one game.
‫وبالطبع سيكون هذا حدثًا مخططًا قابلاً للتنفيذ لأن الشيء الوحيد الذي أرغب في
‫التعامل معه مع هذه الوظيفة هو إظهار أننا خسرنا اللعبة أو فزنا بها ويمكننا القيام به من المخططات.
‫لذلك لدينا لعبة فوق الوظيفة.
‫الآن نحتاج إلى معرفة متى يجب أن نسمي هذه الوظيفة.
‫حسنًا ، أولاً وقبل كل شيء ، نعلم أنه يمكننا استدعاء هذه الوظيفة عندما نخسر اللعبة
‫، وسيكون هذا إذا مات الدبابة.
‫لذلك دعونا ننتقل إلى وظيفة الممثلين ماتوا هنا في وضع لعبة دبابات ضبط CP ونرى أنه إذا كان الممثل الميت
‫هو الدبابة ، فإننا نتعامل مع تدمير الدبابة ونقوم بتعيين الحالة الممكّنة على
‫false.
‫شيء آخر يمكننا القيام به هنا هو إنهاء اللعبة ببساطة عن طريق استدعاء اللعبة مرة أخرى وهذه القيمة المنطقية هي لعبة واحدة يمكننا
‫تمريرها بشكل خاطئ لهذا الغرض.
‫لذلك فإن هذا يعتني بخسارة اللعبة ، على الأقل من جانب C ++.
‫الآن نحن بحاجة لمعرفة متى يجب أن نفوز بالمباراة.
‫الآن هنا مات ممثل.
‫إذا كان من الممكن إلقاء الممثل الميت في برج ، فنحن نعلم أننا دمرنا برجًا للتو.
‫الآن ، سيكون هذا هو المكان المثالي لتحديث عدد الأبراج أو متغير من نوع العدد الصحيح الذي يتتبع
‫عدد الأبراج الموجودة حاليًا في العالم.
‫حاليا.
‫للقيام بذلك ، نحتاج إلى متغير لتتبع عدد الأبراج حتى نتمكن من
‫إضافة متغير خاص هنا في ملف H.
‫وأود أن أفعل ذلك هنا.
‫لذلك سأقوم بإنشاء INT 32 وسأسمي هذه الأبراج المستهدفة.
‫يمكننا الآن تهيئة هذا فورًا من الخفاش إلى القيمة صفر ، لكننا بحاجة إلى تحديث هذا مع
‫انخفاض عدد الأبراج.
‫ونحتاج أيضًا إلى ضبط هذا على عدد الأبراج الموجودة في العالم.
‫يمكننا الآن ترميز هذا إلى أربعة ، ولكن ماذا يحدث عندما نبدأ في إضافة المزيد من الأبراج إلى مستوياتنا؟
‫حسنًا ، يصبح الأمر أكثر تعقيدًا بعض الشيء.
‫لذا ما أود فعله بدلاً من ذلك هو معرفة عدد الأبراج الموجودة في العالم.
‫الآن ، يمكنني إنشاء دالة لهذا تُرجع 32 ويمكن لهذه الوظيفة معرفة عدد الأبراج الموجودة
‫في العالم وإرجاع الرقم.
‫لذا سأسمي هذه الوظيفة ، أحصل على عدد برج مستهدف.
‫لذلك دعونا نمضي قدمًا ونعطي هذه الوظيفة جسمًا في ملف CP.
‫سأنتقل إلى الأسفل وأنشئ جسم الوظيفة ولا يمكنني أن أنسى أن أضع
‫اسم الفئة قبل اسم الوظيفة.
‫الآن سيعيد هذا نهاية 32 وعلينا أن نقرر كيف سنكتشف عدد الأبراج الموجودة.
‫الآن هناك وظيفة موجودة في احصائيات اللعب تسمى Get All Actors of class.
‫ها هي الوثائق.
‫تقول البحث عن جميع الممثلين في عالم الفئة المحددة.
‫لذلك نحن بحاجة إلى تحديد فئة معينة.
‫الآن هذه الوظيفة لها ثلاثة مدخلات.
‫الأول هو كائن سياق عالمي.
‫هذا سهل.
‫نحن نعرف كيف نتعامل مع ذلك.
‫لكن بعد ذلك لدينا فئة فرعية من PT للممثل وهذا يسمى فئة الممثل.
‫لقد رأينا الآن أن الوظائف التي تتطلب فئة فرعية من PT يمكن أن تقبل فئة u كمدخلات والمعلمة
‫الثالثة هي صفيف T.
‫يتطلب مجموعة من مؤشرات الفاعل ويتم تمرير هذا كمرجع وليس مرجعًا ثابتًا يبدو أنه
‫يشير إلى أن هذه الوظيفة قد تغير فقط معلمة الإدخال هذه التي تسمى الفعل.
‫إليكم تلميحًا آخر إلى أن هذا هو الحال ، وهو أنه يتم استدعاء ممثلين.
‫إنها معلمة خارجية ، مما يعني أننا نقوم بتمريرها ثم بعد استدعاء الوظيفة ، تحتوي على قيم تم
‫وضعها فيها بواسطة الوظيفة.
‫لذا يمكننا اعتبارها نوعًا من مخرجات الدالة.
‫الآن هو مكتوب هنا في الأسفل للمعلمات ، فئة الممثل هي فئة الممثل الذي يجب العثور عليه يجب تحديدها أو أن تكون
‫مصفوفة النتائج فارغة.
‫نريد أن نجد جميع الأبراج والممثلين الخارجيين عبارة عن مصفوفة إخراج من الممثلين من الفئة المحددة.
‫لذلك بمجرد استدعاء هذه الوظيفة وتمريرها في مصفوفة ، عندما تنتهي الوظيفة
‫، ستحتوي هذه المصفوفة على مؤشرات لجميع الممثلين في عالم الفئة المحددة.
‫لذلك نحن نعلم أن هذه الوظيفة تتطلب كائن سياق عالمي.
‫الآن ، إذا كنا سنقوم باستدعاء هذا من داخل وضع اللعبة ، فيمكننا المرور في التالي.
‫نحتاج إلى فئة PT الفرعية لتحديد الممثل A ونعلم أن هذا يمكن أن يكون مؤشر فئة جديد.
‫الآن نحن بحاجة إلى تحديد الفئة التي نريد إيجادها.
‫إذا حددنا ممثلاً ، فسنحصل على مجموعة كبيرة مليئة بالمؤشرات لكل ممثل في العالم.
‫لكننا لسنا بحاجة إلى كل الممثلين.
‫نحتاج فقط إلى الأبراج حتى نتمكن من استخدام فئة البرج الثابتة والتي ستعيد لنا فئة جديدة
‫تمثل فئة A Tower C ++.
‫الآن المعلمة الثالثة هي مجموعة T من مؤشرات الفاعل.
‫لذلك إذا أنشأنا متغيرًا محليًا من مصفوفة من النوع T يحدد مؤشر الممثل في أقواس الزاوية ، فيمكننا عندئذٍ تسميتك
‫بإحصائيات تشغيل اللعبة.
‫احصل على جميع الممثلين في الفصل الذين يجتازون هذه المدخلات الثلاثة ، وستكون نتيجة هذا الإجراء
‫أن مجموعة أبراجنا يجب أن تحتوي على مؤشرات لجميع الأبراج في عالمنا.
‫الآن الدرج عبارة عن فئة حاوية لطيفة يمكن أن تحتوي على عدد من العناصر طالما أنها تشترك جميعًا في
‫نفس النوع.
‫وهذه الفئة لديها قدر كبير من الوظائف التي يمكننا استخدامها عند تخزين العناصر في الدرج.
‫الآن سأقوم بالتمرير لأسفل وأظهر لك هذه الوظيفة هنا تسمى Num Short four number وهي
‫تقول إرجاع عدد العناصر في المصفوفة.
‫لذا يمكننا استخدام هذه الدالة للحصول على عدد العناصر في المصفوفة الخاصة بنا بمجرد أن يكون لدينا كل الأبراج في
‫العالم.
‫لذا ، إذا أطلقنا على Tower's num ، فيمكننا استخدام هذا كقيمة معادة لوظيفتنا.
‫وكما رأينا ، قمنا بتعيين القيمة المرتجعة لهذه الدالة التي نسميها الحصول على برج الهدف
‫على أنه n 32 ، يمكننا إرجاع عدد العناصر في مصفوفة البرج.
‫لذلك أود أن أتحداك لتنفيذ وظيفة الحصول على برج الهدف.
‫لذلك قم بإنشاء مجموعة t محلية من الممثل من النوع A.
‫يمكنك تسميتها أبراج أو أي شيء تريده.
‫استخدم الآن لعبتك ، ولعب وظيفة الإحصائيات ، واحصل على جميع الممثلين في الفصل وتأكد من تمرير معلمات
‫الإدخال الصحيحة.
‫الآن ، بعد استدعاء هذه الوظيفة ، ستحتوي درجتك على مؤشرات لجميع الأبراج في عالمنا
‫، لذا يمكنك ببساطة إرجاع عدد الأبراج باستخدام وظيفة الأسطوانات التي تنتمي إلى فئة
‫الدرج.
‫لذا انطلق وأوقف الفيديو وقم بالتنفيذ.
‫احصل على عدد برج الهدف الآن.
‫تمام.
‫إذاً هنا احصل على عدد البرج المستهدف.
‫الآن ، أول شيء سأفعله هو إنشاء مصفوفة t محلية تحدد مؤشر الممثل كنوع العنصر الذي
‫يجب أن تخزنه هذه المصفوفة.
‫وسأطلق على هذه الأبراج الآن أحتاج إلى الاتصال بك بإحصائيات اللعب ، لذلك أحتاج إلى التأكد
‫من تضمين هذا الرأس.
‫الآن أرى أنه لأننا نستخدمه في بعض وظائفنا الأخرى ، لكن من الجيد إجراء هذا الفحص.
‫بعد ذلك يمكنني استخدام احصائيات اللعب الخاصة بك وسأقوم بالاتصال بكافة الممثلين في الفصل.
‫الآن المدخل الأول هو كائن سياق عالمي سأقوم بتمريره في هذا ، ثم الفئة الفرعية
‫لتمثيل فئة الممثل.
‫وقد ذكرت أنه يمكننا استخدام فئة برج ثابتة والتي ستعيد فئة U التي تمثل فئة
‫البرج.
‫الآن مرة أخرى ، من الجيد التأكد من أننا نقوم بتضمين الأبراج ، وهو ما نحن عليه الآن.
‫الآن ، ستكون المعلمة الثالثة والأخيرة هي الدرج ويمكننا المرور في الأبراج.
‫لذلك بمجرد استدعاء هذه الوظيفة ، ستحتوي الأبراج الآن على مؤشرات لجميع الأبراج في العالم.
‫في الواقع ، إذا كان هناك أي كائنات من فئة مشتقة من الأبراج ، فسنحصل عليها أيضًا.
‫نظرًا لأن لدينا مجموعة أبراج ، يمكننا ببساطة إرجاع عدد العناصر في تلك المصفوفة.
‫لذلك سأستخدم بيان الإرجاع واستخدام عدد الأبراج dot num والآن لدينا حساب برج الهدف.
‫لذلك هذا شيء عظيم.
‫يمكننا استخدام هذا لتهيئة عدد الأبراج لدينا ، والذي أطلقنا عليه اسم الأبراج المستهدفة ويمكننا القيام بذلك عندما
‫نبدأ اللعبة.
‫لذلك سأقوم بوضع ذلك هنا والتعامل مع بداية اللعبة.
‫في الحقيقة ، أود أن يكون أول شيء نقوم به.
‫لذلك سأأخذ الأبراج المستهدفة وأضبطها على قدم المساواة مع القيمة المرجعة من الحصول على عدد الأبراج المستهدفة.
‫الآن يجب تهيئة الأبراج المستهدفة وفقًا لعدد الأبراج في عالمنا.
‫هذا رائع ، لكننا نحتاج إلى تحديث هذا العدد في كل مرة يموت فيها برج ، مما يعني أننا بحاجة
‫للذهاب إلى وظيفة الممثل المتوفى.
‫وهنا ، إذا قمنا بإلقاء ممثل ميت إلى برج مدمر ، فبعد أن نتعامل مع التدمير ، يجب أن نقوم بتحديث
‫متغير الأبراج المستهدفة لدينا حتى نتمكن من قول الأبراج المستهدفة ويمكننا استخدام مشغل التناقص.
‫يمكننا استخدام إما عامل التناقص اللاحق أو عامل المأزق.
‫كلاهما سينتج عنه نفس الإجراء الذي يأخذ الأبراج المستهدفة ويطرح منها واحدًا.
‫الآن ، بمجرد طرحنا واحدًا من الأبراج المستهدفة ، نحتاج الآن إلى التحقق لمعرفة ما إذا كانت أبراج الهدف
‫قد وصلت إلى الصفر.
‫لذلك سأضع علامة إذا كانت هنا لمعرفة ما إذا كانت الأبراج المستهدفة قد وصلت إلى الصفر.
‫الآن ، بمجرد أن يحدث ذلك ، نعلم أن اللعبة يجب أن تنتهي حتى نتمكن من استدعاء اللعبة
‫فوق الوظيفة التي تمر في لعبة 4b1 الحقيقية لأننا دمرنا جميع الأبراج ويمكننا اعتبار هذا فوزًا.
‫الآن دعنا نمضي قدمًا ونجمع الكود الخاص بنا.
‫الآن ، مرة أخرى هنا في المحرر ، ما أود فعله قبل أن نختتم هذا الفيديو هو الانتقال إلى مخطط وضع
‫اللعبة.
‫إذن ها هي نغمة التنبيه.
‫بفضل وضع اللعبة ولدينا لعبة بدء هذا الحدث.
‫وما نقوم به هو إنشاء أداة بدء اللعبة ، وإضافتها إلى منفذ العرض حتى نتمكن من رؤية مؤقت
‫العد التنازلي لبدء اللعبة.
‫لذلك نحن نعلم أنه يتم استدعاء لعبة البداية ، لكننا نحتاج أيضًا إلى تنفيذ لعبتنا على حدث مخطط قابل للتنفيذ.
‫لذا سأقوم بالنقر بزر الماوس الأيمن وأكتب اللعبة مرة أخرى ، وهنا حدثنا ، انتهت اللعبة وأتحقق من ذلك.
‫لاحظ أن لدينا هذه اللعبة وهي لعبة منطقية.
‫لذلك عندما نسمي هذه الوظيفة من C ++ ، فإننا نمرر قيمة منطقية للعبة B one.
‫تزيل عقدة حدث المخطط هذا الحرف B الصغير وتضع مسافة بين واحد واللعبة كنوع من المجاملة
‫بالنسبة لنا.
‫سنقوم الآن بإنشاء بعض الأدوات حتى نتمكن من معرفة متى فزنا باللعبة أو خسرناها ، لكننا سنفعل
‫ذلك في فيديو مستقبلي.
‫في الوقت الحالي ، أريد فقط أن أؤكد أنه يتم استدعاء هذا واستدعائه بشكل صحيح حتى أتمكن من القيام بذلك باستخدام
‫عقدة سلسلة طباعة ويمكننا طباعة القيمة بناءً على هذه القيمة المنطقية.
‫إذا نقرت وسحبت هذا المنطقي مباشرة إلى إدخال السلسلة ، فسنرى أن هناك تحويلًا منطقيًا
‫إلى سلسلة.
‫هذه عقدة تحويل مناسبة أخرى ستحول منطقية إلى سلسلة لنا ، وتتمثل وظيفتها
‫في أنها ستتحول إلى كلمة صواب أو خطأ بناءً على قيمة الحقيقة المنطقية.
‫فلماذا لا نختبر هذا؟
‫سأقوم بالتجميع والضغط على اللعب.
‫حسنًا ، الآن أنا جاهز لمحاولة الفوز بالمباراة.
‫آمل ألا أخسر قبل أن أفعل ذلك.
‫لقد خسرت اللعبة ويمكنك رؤية مطبوعات خاطئة أعلى يسار الشاشة.
‫لذلك نحن نعلم الآن أن خسارة اللعبة تؤدي إلى نتيجة مباراة الحدث بدلاً من استدعاء خطأ تمرير ، نحتاج إلى
‫التأكد من تمرير الصواب عندما نفوز بالمباراة.
‫لذلك دعونا نحاول قتل كل الأبراج.
‫لذلك أنا بحاجة إلى محاولة عدم الحصول على ضربة.
‫أوه ، لقد أصبت بالفعل.
‫هذا صعب للغاية.
‫وها نحن ذا.
‫ويتم طباعة "صحيح" في أعلى يسار الشاشة.
‫يظهر فقط لبضع ثوان ، لذلك ربما تكون قد فاتتك.
‫حسنا عظيم.
‫إذاً الآن لدينا شروط الفوز والخسارة.
‫الخطوة التالية هي إظهار ذلك في شكل عنصر واجهة مستخدم على الشاشة حتى لا نعتمد على عقدة
‫سلسلة الطباعة.
‫باختصار ، لدينا الآن شروط الفوز والخسارة ، وهناك فقط بعض الأشياء التي يتعين علينا القيام
‫بها لتحسين هذا الأمر ، مثل إنشاء عناصر واجهة مستخدم تخبر اللاعب بأنه قد فاز باللعبة أو خسرها.
‫قمنا أيضًا بإحصاء عدد الأبراج باستخدام درج ووظيفة احصائيات اللعب.
‫احصل على جميع الممثلين من الدرجة.
‫عمل عظيم.
‫هذه اللعبة قادمة حقا.
‫في الفيديو التالي سننشئ تلك الأدوات وبعد ذلك نكون مستعدين لبدء إضافة مؤثرات
‫خاصة وتحسين لعبتنا.
‫سأراك في الفيديو التالي.