أهلا ومرحبا.
أود تقديم حل لتحدي تيك تاك تو.
الآن تذكر ، هناك الكثير حلول لمشكلة معينة.
هذا سيكون مجرد الحل الخاص بي.
إذا كان حلك مختلفًا طالما أنك تتبع ممارسات البرمجة
الجيدة وتستخدمها لغة البرمجة c بالطريقة الصحيحة
، فلا بأس بذلك.
أنا فقط أقدم الحل الخاص بي.
أنا متأكد من أنه يمكن تحسينه.
اذا هيا بنا نبدأ.
سأقوم بإنشاء ملف من الواضح أن المشروع يسمى tic-tac-toe
، وسنقوم بذلك ابدأ بمحاولة تعديله.
حاولت كسرها كما فعلت في وصف المحاضرة.
سأقوم بإنشاء ملف بضع وحدات فقط أو ينبغي أن أقول
بعض الوظائف.
نأمل أن يكون هذا حسنًا وعمل جيدًا لك.
أنا أستخدم حالة الجمل لجميع تسمياتي الاتفاقيات فقط ما اعتدت عليه.
يمكننا في الواقع أن نفصل هذا إلى ملفات مصدر متعددة أيضًا
إذا أردنا.
لذلك لدينا رئيسي لدينا.
دعونا نتخلص من هذه النسخة المطبوعة.
سوف أقوم بتضمين تشمل إضافية.
هذا سوف يسمح لي في الأساس القيام ببعض تصفية نظامنا وبعض
الأشياء اللطيفة ، اسمح أنا أيضا أعتقد إزالة حرف.
إذن بالإضافة إلى هؤلاء 2 المكتبات ، دعنا ندرج conio. ح.
وما أريد أن أفعله وأنا تريد مهاجمة هذه المشكلة.
أريد أن أحاول الوحدة بقدر ما أستطيع.
ذكرت أنني ذاهب لاستخدام صفيف أحادي البعد
، صفيف ثنائي الأبعاد قد تعمل بشكل أفضل.
لكنني سأقوم بتنفيذها هذا باستخدام مصفوفة
أحادية الأبعاد تمثل لعبتنا المجلس ، لدينا لوحة tic-tac-toe.
سأقوم بإنشاء هذا كمتغير عالمي.
أنا أستخدم متغيرًا عامًا هنا
لأنني لم أوضح مفهوم تمرير البيانات بالإشارة في ج.
لا أريد أن أربطك.
لن أضطر إلى استخدام العالمية البيانات هنا ويمكنني
تمرير البيانات إلى الوظائف ، لكنني سأفعل تحتاج إلى استخدام تمرير بالإشارة.
عليّ أن أتجول مؤشرات ، ولم نناقش أيًا
من ذلك حتى الآن.
لذلك سأستخدم البيانات العالمية.
سامحني ، احفظ أن البيانات العالمية هي عادة ليس بالأمر
الجيد القيام به ولكن لأننا ، مرة أخرى ، نحاول ذلك إظهار التعلم ، وتقسيم الفتح ونحن نحاول
أن نظهر كيفية استخدام الوظائف ، أحتاج إلى استخدام البيانات العالمية
لأننا لم أتحدث عن المؤشرات حتى الآن.
لذا فإن بياناتي العالمية هنا التي سأذهب إليها المراد استخدامه هو المربع الذي يمثل
شبكتي ، لوح tic-tac-toe الخاص بي.
ستكون هذه أغنية واحدة منطقة الأبعاد لعشرة
عناصر بشكل أساسي لأنني لا تريد استخدام العنصر 0.
سأستخدم هذه المجموعة ل اختر الأرقام للعب اللعبة.
سيسمح أيضًا بـ لي أن يكون لدي الإحداثيات الخاصة بي.
سأقوم بتهيئة هذا بقيم من 1 إلى 9 فقط.
وهذا سيكون مصفوفة المحارف لأنني بحاجة
لوضع x و o بداخلها.
لم نتحدث عن الشخصية المصفوفات حتى الآن ، ولكن هذا سيسمح لي
بوضع أحرف مفردة.
إنها تمامًا مثل مفهوم المصفوفة ints إلا أنه يحتوي على أحرف.
الشخصيات ، تذكر ، لديها اقتباسات مفردة من حولهم.
إذن واحد 2 3 9 و 0 هناك سأقوم بالتخطي فقط ، لن أستخدمها
، لأنني أريد استخدام تلك.
يجعل البرمجة أسهل قليلاً.
يمكنني استخدام القيمة التي يستخدمها المستخدم يدخل كمؤشر ، كفهرس صالح.
أنا أيضا سأضطر إلى ذلك إنشاء متغيرين عالميين للاختيار
في دور اللاعب.
لذا فإن الاختيار سيكون ما هم عليه عبر لوحة المفاتيح ، إما
من واحد إلى 9 حسب المكان يريدون وضع x أو o.
لاعب سوف فقط تمثل دور اللاعب الذي يكون
دوره ، اللاعب الأول أو اللاعب الثاني.
لست بحاجة إلى أي بيانات عالمية أخرى.
أنا فقط بحاجة إلى وظيفتي الإعلانات هنا.
سأبدأ مع إنشاء 3 وظائف.
لذا سأحصل على 3 إعلانات الوظائف.
سأحصل على واحدة للتحقق من الفوز.
لن يأخذ أي بيانات.
سيعود عدد صحيح.
سأحصل على واحدة لا تقوم بإرجاع أي بيانات
تعرض اللوحة بالأحرف الصحيحة فقط.
كما أنه لا يأخذ أي بيانات.
وسأحصل أيضًا على ملف الوظيفة التي تحدد اللوحة فقط.
هذا سوف يأخذ مدخلات المستخدم.
واعتمادا على ما دخلوا ، سيضع x أو o في المكان الصحيح في المصفوفة
ثم يعرض تلك المجموعة باستخدام لوحة العرض.
لذلك سنقول هنا فقط لوحة العلامات وسيأخذ ذلك في
الواقع علامة بعلامة x أو o.
لذلك يمكنني إعادة استخدام هذا.
يمكنني إعادة استخدام هذا من أجل لاعب واحد أو لاعب 2.
3 إعلانات وظيفة حتى أتمكن من ذلك ضع وظائفي في أي مكان في البرنامج
، لقد أعلنتهم في المقدمة.
وستلاحظ أن اثنين من هؤلاء الدوال لا تعيد أي بيانات
وواحد فقط يأخذ معلمة.
دعونا ننفذ هذه الوظائف قبل تنفيذ اللعبة المسرحية.
لذا فلنبدأ أولاً تنفيذ تحقق من أجل الفوز.
هذه الوظيفة ستذهب في الأساس إلى العمل حيث سيتحقق من اللوحة لمعرفة
ما إذا كان هناك أي فوز.
لذلك سوف تحتوي على الكثير من عبارات "إذا".
ربما يمكنني التحسن هذا الرمز لا بأس به.
لكنني سأضع بعض التعليقات هنا لأنه يجب أن يكون لدينا دائمًا
تعليقات في الجزء العلوي من وظيفتنا.
هذه مبسطة جدا.
يجب أن يكون لدينا اسم الوظيفة.
هذا في الأساس يقول ذلك ستعيد الوظيفة
حالة لعبة واحدة إذا كانت اللعبة انتهى ، أخبرك إذا فزت ، نتيجة سلبية
واحدة إذا كان اللعبة قيد التقدم و 0 إذا انتهت اللعبة وكانت نتيجة
التعادل.
لذلك هذه الوظيفة تحقق من واحد يعود عدد صحيح.
لذا سأذهب إلى الأمام وتحديد هذا.
وكل ما سيفعله هذا هو سوف ينظر إلى المصفوفة ويرى
ما إذا كانت هناك أية نقاط هناك ، إذا تمت مطابقة 3x.
لذلك هناك الكثير من عبارات مختلفة لو.
فكيف نعرف إذا كان اللاعب واحدًا.
حسنًا ، نحن نعلم ما إذا كان اللاعب كذلك واحد إذا كانت تتطابق في
صف قطري أو عمود.
لذلك علينا التحقق من كل منهما واحدة من تلك المواقف.
ونعرف الصفوف الموجودة في الأعمدة على أساس المصفوفة.
لذلك إذا كان المربع الأول الخاص بي متساويًا إلى
المربع 2 والمربع 2 يساوي المربع 3 ، وهذا يعني أننا لدينا تطابق في صفنا الأول.
لذلك أنا أيضا ذاهب إلى إنشاء قيمة العودة هنا.
في الجزء العلوي ، سأقول فقط إرجاع القيمة ، قم بتهيئة هذا إلى 0.
سنقوم بتهيئة هذا إلى 0 لانتهاء اللعبة.
وإذا كان لدينا مباراة في الصف الأول ، سأعيد
واحدًا ، انتهت اللعبة.
ثم علينا أن نحصل على سلسلة من حالات أخرى للمطابقة وفي الواقع لا أريد
العودة واحد أريد تعيين قيمة الإرجاع الخاصة بي.
لأننا نستطيع العودة ولكن ذلك يجعل متابعة البرنامج أكثر صعوبة.
وإلا فإننا ذاهبون إلى تحقق من جميع صفوفنا الأخرى.
لذلك سأقوم بالنسخ واللصق بعض التعليمات البرمجية هنا لأنها تحتوي على الكثير
من التعليمات البرمجية الزائدة عن الحاجة.
الشيء الوحيد هو المثير للاهتمام هو إذا كان لدينا التعادل.
لذلك اسمحوا لي أن أدخل كل وإلا إذا كان للفائزين.
وبعد ذلك سأذهب أيضًا إلى إرجاع قيم مختلفة.
بدلاً من الحصول على مجموعة من الأشياء الأخرى ifs ، يمكن أن يكون لدي علامات
العطف ، لكن من الصعب قراءتها.
لذلك إذا كان لدينا تطابق في الصف الأول.
ودعنا نتأكد من المسافة البادئة صحيحة.
إذا كانت لدينا مباراة في صفنا الثاني ، هذا ما يفعله الشخص الثاني.
إذا كانت لدينا مباراة في صفنا الثالث ، إرجاع واحد إضافة بعض الأسطر الجديدة لسهولة
القراءة ، لا تحتاج إلى أي أقواس لأنهم عبارات فردية.
في السطر 37 ، يبدو نحن نطابق واحد و 4 و 7.
لذلك يبدو هذا مثل أ تطابق قطري ، إرجاع واحد.
أربعون ، نحن نطابق 2 5 و 8.
هذا يبدو وكأنه مباراة وسط النزول ، لذلك العمود الثاني.
3 6 ، يمكنك أن ترى مباريات أخرى كذلك.
يجب أن نحصل على جميع المباريات بشكل أساسي للصفوف والأعمدة والأقطار.
وهذا ما فعلناه مع الجميع هذه البيانات تبحث في المصفوفة.
الآن الشيء الوحيد الذي يخبرنا إذا كنا ليس لدينا مباراة أو لدينا تعادل ، يجب
أن نقارن بينهم جميعًا و تأكد فقط من أنها ليست الأرقام التي
تمت تهيئتها.
لذلك إذا كان لدينا مربع المصفوفة الخاص بنا ولا تحتوي على 1 2
3 1 2 3 4 5 6 8 أو 9 لأي من القيم ، هذا يعني أن لدينا رسمًا لأنها
تحتوي على 0 أو x.
لذا يمكننا كتابة شيء آخر إذا كان هذا
يشير بشكل أساسي إلى أنه تعادل ويمكننا تعيين القيمة المرتجعة إلى 0 ، قيمة الإرجاع تساوي 0.
ومرة أخرى هذا مجرد أساس التحقق من هذا الأخير إذا ، إذا
كانت الأرقام هي نفسها كما تم تهيئتها.
إذا كانوا جميعًا مختلفين ، إذن هذا يعني أنه يمكننا إرجاع 0.
دعونا نضع ذلك.
خلاف ذلك ، إذا لم يكن لدينا ملف ارسم وليس لدينا فائز ، هذا
يعني أننا لم ننتهي.
لذلك يمكن القول بعبارة أخرى أخيرة القيمة المرجعة تساوي واحدًا سالبًا.
لأن تذكر ، الوظيفة انتهى إرجاع واحد
سلبي للمباراة قيد التقدم و 0 للعبة بدون نتيجة.
ثم آخر شيء أريد القيام به هل أريد إرجاع القيمة المعادة.
لذا ها أنا ذاهب إلى قل العودة ، إرجاع القيمة.
وهذا سيكمل الوظيفة.
وماذا تلاحظ متى نحن نفعل هذا ، نحن
نقسم وننتصر.
كل ما نركز عليه بشكل صحيح الآن يتحقق من اللوحة لمعرفة ما إذا
كان هناك فوز.
سنعمل بشكل صغير قطع مثل هذه تمامًا وسنختبرها
باستمرار.
هذا يسمح لنا بالتركيز على التصميم ويسمح لنا أيضًا بتقليل أو عزل
أخطائنا بشكل أسهل.
الآن بعد أن انتهينا من ملف لوحة اللعبة ، نريد المضي
قدمًا وتنفيذ لوحة العرض.
لوحة العرض عادلة سوف تظهر اللوحة.
لذلك كل هذا حقا هو القيام به ارسم المصفوفة بتنسيق معين.
لذلك سنكتب أ وظيفة تسمى لوحة العرض.
لن يتم إرجاع أي بيانات ، لن يأخذ أي معلمات.
السبب هو رقم دالة واحد لأننا
سنحتاج إلى رسم اللوحة عدة مرات وهي أيضًا أفضل لأنها
تؤدي مهمة محددة.
الآن هذا واحد فقط سيكون لديه حفنة من وظائف printf فيه.
وسوف يكون حفنة من التنسيق.
لذلك سأقوم بنسخه ولصقه فيه.
الشيء الفريد هنا هو أقوم بمسح الشاشة في كل مرة.
ولكن إذا قلت نظام و windows وأنت تقول cls ، سيؤدي ذلك إلى
مسح الشاشة.
إنها تجعلها أكثر نظافة.
ثم نذهب إلى فقط القيام بمجموعة من printfs.
سنقوم بطباعة عنوان اللعبة. سنقوم بطباعة المشغل 1 و 0.
وبعد ذلك نذهب لطباعة السبورة.
المجلس سيكون لطيفا منسقة ببعض الأشرطة المتوازية
ثم سنقوم بطباعة ملف قيم جميع القيم في المصفوفة.
وإذا كانت القيمة x أو 0 ، سيتم عرضه.
إذا لم يكن كذلك ، فسيتم عرض ملف رقم حتى نتمكن من استخدام هذا
الرقم لتحديد خيارنا للرسم وهذا هذا كل ما تفعله هذه الوظيفة.
الآن بعد أن انتهينا من عرض اللوحة ، نريد
الآن إنشاء وظيفتنا الأخيرة وهو تعليم السبورة.
حتى علامة المجلس سوف يتم تعيينها المصفوفة ذات
قيمة معينة ، وسوف تكتب علامة إما في x أو o.
لذلك سوف تأخذ شخصية.
ما سيفعله هذا هو سيكون لها مجموعة
من العبارات الأخرى.
لذا هنا في لوحة علامتنا ، نحن سأرغب
في تقديم بعض التعليقات بشكل أساسي وقول ذلك ستضع اللوحة
بالحرف الصحيح x أو o في المكان الصحيح في المصفوفة.
لذلك آمل أن يكون هذا منطقيًا.
كما ترى رمز أنا يجب أن أنهي تعليقاتي.
أريد تنسيقه بشكل لطيف إذن فهو سطرين هنا.
وكل هذا سيفعله ستتحقق
لترى ما أدخله المستخدم.
لذا تذكر ، لدينا 2 بيانات عالمية قيم لما أدخله المستخدم.
لدينا أيضا قيمة للاعب الحالي.
لذلك سيكون الاختيار في الأساس ما يتم إدخاله عبر لوحة المفاتيح.
لم ننفذ هذا بعد لأننا سنقوم بتنفيذ ذلك في
الوظيفة الرئيسية.
اللاعب سيكون اللاعب الحالي.
سنحتاج كليهما من هؤلاء لجعل علاماتنا.
إذن ما سنفعله هو أننا سيكون لدينا مجموعة من عبارات
else ، إذا كانت عبارات أخرى.
سنقوم بفحص الاختيار ، وهو ما يدخله المستخدم.
وإذا كان الاختيار يساوي 1 ، فإننا تريد رسم شيء ما في ذلك المربع.
نريد ايضا ان نتأكد أن هذا المربع متاح.
لذلك إذا كانت تساوي 1 وهي ليست كذلك يساوي حاليًا 1 ، وهذا يعني
أن شخصًا ما وضع بالفعل x بالفعل أو هناك ولا يمكننا استخدامه.
إذا كان يساوي واحد وهم أدخل واحدًا ، وهذا يعني أنه يمكننا ضبط
المصفوفة على قيمة محددة.
سنقوم بتعيين المصفوفة على ماذا تم تمريره إما في x.
وسنكرر ذلك للقيام بذلك لكل اختيار.
إذا كان الخيار 2 3 4 5 6 8 أو 9.
لذا مجموعة من الأشياء الأخرى التي تفعل نفس الشيء.
إذا أدخل المستخدم الخيار 2 ، فنحن سوف نتأكد من أن المسافة
البادئة جيدة وأن المربع 2 متاح ، سنضع علامة على المربع 2 بكل ما مررنا
به هنا.
واعتمادًا على ما يتحول إليه اللاعب هو أننا سنمرر في x أو x.
الآن آخر شيء يتعين علينا القيام به هذه الوظيفة علينا التحقق من صحتها.
إذا مروا في أي شيء بخلاف واحد إلى 9 ، فهذه
حركة غير صالحة.
إذن آخر بيان آخر لدينا هنا ستطبع رسالة تفيد بأن هذه الخطوة غير صحيحة ، ستفعل ضع علامة على
اللاعب لأسفل.
لأن تذكر اللاعبين إما واحد أو 2.
وسنضع علامة على اللاعب مرة أخرى ثم نزيدها في حلقتنا
في وظيفتنا الرئيسية.
ثم يحصل هذا الشيء الأخير يقوم char فقط بإيقاف البرنامج مؤقتًا بحيث
يتعين على المستخدم النقر فوق العودة بعد تحرك غير صالح.
خلاف ذلك ، فإن الحركة غير الصالحة من شأنها يتم عرضها ثم يتم مسحها
على الفور بسبب كنا نعيد رسم اللوحة مرة أخرى.
لذا احصل على شار يوقفه مؤقتًا.
يجبرك على الضغط على زر الدخول للمتابعة لإدخال قيمة أخرى.
وهذه هي وظائفنا الثلاث.
تذكر ، هذه الوظيفة لا يعيد أي شيء.
حتى نتمكن من الاحتفاظ بها في الأسفل.
الآن علينا في الواقع تنفيذ اللعب.
يذهب اللعب في الوظيفة الرئيسية.
لذلك من أجل اللعب ، هذا هو المكان سنطلب من المستخدم إدخال رقم
، وسنقوم برسم مجلس الإدارة ، سوف نتحقق من الفوز.
لذلك سننشئ 2 المتغيرات المحلية هنا ، وسنقوم
بتهيئة مشغلنا.
هنا نحن ذاهبون إلى إنشاء عدد صحيح لدينا I.
سيتم استخدام هذا في حلقتنا.
وستكون علامتنا إما x أو o ، حسب دوره.
مارك سيكون x أو o على ما أعتقد.
مارك سيكون x أو o.
والاختيار سيكون ماذا يدخل المستخدم عبر لوحة المفاتيح.
إذن 2 متغيرين محليين.
سنقوم أيضًا بتعيين player ، وهو متغير عالمي.
في البداية ، ستعمل فقط كن اللاعب الأول لبدء اللعبة.
ثم سنحصل على حلقة.
سنحصل بشكل أساسي على ملف حلقة حتى ننتهي من اللعب.
سأستخدم وقتًا حلقة هنا لأنني أريده أن ينفذ
مرة واحدة على الأقل.
اريد عرض ال مجلس مرة واحدة على الأقل.
لذلك سأقوم بعرض لوح وألعب اللعبة
حتى أحصل على التعادل أو الفوز.
لذلك سأفعل ذلك لفترة طويلة لأن I يساوي سالب 1.
ما الذي يمثله سالب 1؟ يمثل أن اللعبة قيد التقدم.
سأكون العودة قيمة للتحقق من الفوز.
وسترى ذلك في ثانية ، ولكن بشكل أساسي عندما
يكون لدي حلقة تستمر في فعل نفس الشيء مرة أخرى ومرة أخرى حتى تنتهي اللعبة.
وستكون اللعبة انتهى إذا لم تكن سلبية.
إذن ما الذي يتعين علينا القيام به أولاً.
أول شيء علينا القيام به هو علينا أن نعرض السبورة.
لذا يمكنني فقط الاتصال بـ لوحة عرض وظيفة.
ثم علينا حساب اللاعب.
ويبدأ اللاعب اللاعب الأول.
ما سنفعله هنا هو
سنستخدم عامل تشغيل ثلاثي ، وسنقول إذا كان اللاعب mod
2 ، فإن اللاعب يساوي 1 آخر يساوي 2.
هذه طريقة لتحديد اللاعب المناسب.
كل تكرار للحلقة سيحدث للتغيير من واحد إلى 2 أو 2 إلى واحد.
عندما تبدأ كلاعب واحد ، سيقول لاعب mod
2 ، واحد مقسوم على 2 أو الباقي من واحد على 2 هو ماذا ، واحد.
لذا إذا كانت واحدة ، فأنت سيكون اللاعب الأول.
وعندما تعود إلى في التكرار التالي ،
سيساوي اللاعب 2 لأن سنقوم بزيادته.
2 mod 2 يساوي 0.
لذلك إذا كان لا يساوي واحد ، إذن اللاعب سيكون
مساويا للاعب 2.
سوف يقوم فقط بضبطه على لاعب واحد إذا كان لاعب mod 2 واحد.
تذكر ، هذا الخطف عامل نأمل.
الشيء التالي الذي يجب أن أفعله هو أنا بحاجة إلى الحصول على المدخلات من المستخدم.
لذلك سأقول هنا ، أنا ذاهب لمطالبة المستخدم بإدخال رقم.
سأقول لاعب في المئة د إما اللاعب 1 أو 2 ، أدخل رقمًا ، ثم سأضع اللاعب
للطباعة ، مشغل واحد أو 2.
ثم سأقرأ الإدخال من المستخدم باستخدام scanf.
وسيكون هذا عددًا صحيحًا ، هذا سيمثل بقعة
على السبورة من واحد إلى 9.
وأنا ذاهب للتخزين هذا في متغير خياري.
الاختيار شبر واحد ، لذلك أنا يجب أن تمر في العنوان ،
ويجب أن أقول الاختيار.
فقط إذا كانت سلسلة سأفعل لا تمر في العنوان.
ثم يمكنني تحديد ذلك بشكل أساسي سواء كانت العلامة أم لا.
لا بد لي من تحديد ما إذا كانت العلامة هو x أو لا يعتمد على المشغل.
لذلك سأستخدم ملف العامل الثلاثي مرة أخرى.
وسأقوم بتعيين لتمييز إما x أو o.
إذا كان اللاعب يساوي 1 ، سأذهب لتعيينه لتمييز x ، كبير x.
خلاف ذلك ، أنا ذاهب إلى إسناده س ، س العاصمة.
إذن هذا العامل الثلاثي جدا مفيد عندما يتعين عليك تعيين
متغيرات بناءً على شرط.
مرة أخرى ما يقوله هذا إذا كان اللاعب يساوي 1 ، فستكون
العلامة مساوية لـ x.
عدا ذلك ، ستكون مساوية لـ o.
علامة الاستفهام تمثل إذا التقييم المنطقي صحيح ، يمثل
القولون ما إذا كان خطأ.
الآن بعد أن حصلت على الحرف الصحيح ، يمكنني استدعاء
وظيفتي لتمييز اللوحة بمجرد قول العلامة المجلس ، ويمر في x أو o.
بعد أن أضع علامة على السبورة وهم قاموا باختيارهم
، يجب أن أتحقق مما إذا كان هناك فائز.
لدي المتغير الذي يجب أن يكون
اسمًا أفضل حقًا.
دعونا نسميها فحص الحالة ، لعبة تحقق ماذا عن ذلك أو حالة اللعبة.
وستكون حالة اللعبة يساوي واحدًا سالب واحد أو 0.
حالة اللعبة ستذهب إلى تكون مساوية لكل ما يتم إرجاعه
من الشيك لتحقيق الفوز.
لأن تذكر ، هذه الوظيفة سوف إرجاع واحد على 0 أو سالب واحد.
واحد إذا انتهت اللعبة النتيجة ، سلبية واحدة إذا كانت اللعبة جارية ، 0 إذا
انتهى بدون نتيجة.
حتى الآن بعد أن قمنا بتخزين اللعبة الحالة ، سنريد أيضًا
تغيير حالة الحلقة.
لذلك إذا كانت حالة اللعبة هي يساوي سالب واحد
، سنقفز من الحلقة.
خلاف ذلك ، كل ما نحتاج إلى القيام به هو تغيير دور اللاعب.
كيف نغير دور اللاعب ، نحن فقط نزيد اللاعب بواحد.
بهذه الطريقة في المرة القادمة سوف ترتفع وستكون 2 واللاعب
يساوي 2 وسنعود للأسفل.
عندما يقومون بمحاولات باطلة ماذا يحدث في القوالب غير الصالحة
، فإنه يقلل من عدد اللاعبين.
عندما تقوم بتقليل عدد اللاعبين ، تعود إلى المشغل الصحيح.
لذا إذا كانت واحدة ، فإنك تنقصها إلى 0 ، سيكون الدور التالي واحدًا
، إنه دورك نفسه مرة أخرى.
هذا هو السبب في أننا نزيدها.
الآن إذا كان اللاعب 2 ، نزيده بواحد.
وما يحدث هو 2 على 2 يساوي 0.
لذلك في الواقع يتم تعيينها اللاعب يعود إلى واحد.
هذه هي الطريقة التي يعمل بها.
لكن هذا هو كل المنطق.
لقد فعلنا الكثير هنا.
لا يجب أن تكتب كل شيء هذا الرمز واختباره مرة واحدة.
كان يجب أن تعمل مع فرق تسد ، تختبر باستمرار أثناء
تشغيل الشفرة.
الآن سأقدم هذا الحل ، ولكن دعونا نشغله
ونختبره.
ستعمل تمامًا كما فعلت في العرض من محاضرة التحدي.
لكن مرة أخرى ، ادرس هذا الرمز واصنعه تأكد من أنك تفهم ما يحدث.
استخدام المصفوفات والقسمة قهر النهج ، ولكن انظر كيف تبدو هذه الطريقة
الرئيسية جميلة.
من السهل جدًا معرفة ما هو يحدث في الطريقة الرئيسية.
لوحة العرض وتغيير اللاعب وأنت ربما تريد وضع التعليقات هنا.
تغيير المنعطفات ، وبعد ذلك هنا أيضا الحصول على المدخلات.
ثم قم بتعيين الصحيح حرف ، اضبط الحرف الصحيح
بناءً على دور اللاعب.
لا تحتاج حتى حقًا هذه التعليقات لأن
الوظائف وصفية للغاية.
وضع علامة على اللوحة ، وتعيين اللوحة على أساس اختيار المستخدم أو اختيار غير صالح.
ثم تحقق من حالة اللعبة للفوز ، جميلة لا تحتاج إلى شرح.
ثم نقفز للخارج إذا انتهت اللعبة.
دعونا نبني هذا.
آمل ألا تحصل على أخطاء ، لا تحذيرات ، نحن لا نفعل ذلك ، وهو أمر لطيف.
الآن دعنا نديرها وأنت ذاهب إلى نرى أنه يعمل تمامًا كما هو الحال في العرض التوضيحي الخاص بنا.
أول شيء يفعله هو ذاهب لعرض الشاشة.
وسوف تسمح لنا لطباعة إدخال.
ولديها شبكتنا ، واحدة 2 3 4 5 6 7 8 9 مجموعتنا.
لذلك يخبرني اللاعب الأول أدخل شيئًا وسأدخل
شيئًا صالحًا.
وهو يرسمه و يمسح الشاشة.
لذلك تبدو لطيفة.
والآن يوجد x في 3.
الآن حان دور اللاعب 2.
سوف أترك شيئًا غير صالح.
تقول حركات غير صحيحة ، تتوقف مؤقتًا.
ضربت العودة ، أحصل للذهاب مرة أخرى لاعب 2.
الآن ضربت واحدة ، أعيد رسمها مع o في مكان واحد.
وأستمر في هذا حتى لدينا فائز أو خاسر.
لذلك دعونا نتسبب في فائز لذلك.
الآن x ستكون ، 2 o تساوي ستكون 5 ، x ستكون
6 و o ستكون 9.
انتهت اللعبة لأننا رسمنا للتو 3 0 ثانية.
لذا فإن الشيء الوحيد الذي نسيته هو بعد حلقة الوقت لعرض
التهاني التي فزت بها.
وكل ما علينا فعله هناك هو علينا التحقق من حالة اللعبة.
إذا كانت حالة اللعبة تساوي واحد ، هذا يعني أن هناك لاعبًا واحدًا وسيكون
آخر لاعب يفوز.
لذلك سوف نطبع لاعب في المئة د يفوز.
وإلا فإننا ذاهبون لمجرد طباعة رسم.
لأنه إذا خرجنا من حلقتنا وكانت الحالة سلبية ، ونعلم
أن اللعبة انتهت وقد حصلت على نتيجة ، ربما كان علينا
أن نحصل على هذا الأخير إذا بيان لعرض النتائج.
فلنبدأ الآن في تشغيله مرة أخرى كفائز.
والآن سنقوم بالفعل رؤية شخص ما يفوز.
لذلك سأقوم فقط بوضعها في صالح الأرقام هنا ، تسبب
ربحًا سريعًا لـ x وعليك فعل ذلك في الواقع البرنامج لأن هذا واحد يذهب بعيدا.
ها هو ، لاعب واحد يفوز و شغلت صوتًا لطيفًا آخر هناك.
لذلك كانت هذه محاضرة طويلة.
أعتذر عن المحاضرة الطويلة.
ادرس هذا الرمز ، سأفعل تقديمه كملف مصدر.
نأمل أن تتعلم الكثير عنها أساليب فرق تسد.
شكرًا لك