Tic-Tac-Toe Game

بسم الله الرحمن الرحيم
فى هذا المقال سوف نتحدث عن كيفيه عمل لعبه بسيطه وهى لعبه Tic-Tac-Toe الشهيره بطريقه بسيطه

واللعبه عباره عن لعبه تخمين حيث انها تتكون من 9 مربعات وعندما تضغط على كل مربع فيهم يظهر فى هذا المربع قطعه معدنيه لونها  اصفر او احمر
وتنتهى اللعبه عندما يتم الانتهاء من الضغط على جميع المربعات

وطريقه الفوز فى اللعبه هى تجميع  نفس اللون من القطعة المعدنيه سواء كان احمر او اصفر بالطول او بالعرض او بطريقه قطريه فى المربعات .


نبدا اولا بعمل مشروع جديد على اندرويد استديو ونقوم بانشاء ملف Xml بعنوان activity_main.xml

ونقوم بوضع بداخله GridLayout  مكونه من 3 صفوف و3 اعمدة

ونضع خاصيه الBackground  لها صوره المربعات ال 9

وفى كل مربع من المربعات نضع  ImageView  ليصبح لدينا 9 صور

ونضع ايضا LinearLayout لكى نظهر فيها نتائج اللعبه

ليكون الكود النهائى للشاشه كالتالى:

والناتج يكون كالتالى :

Screenshot_2016-03-09-21-37-14بعد ذلك ننتقل الى ملف الجافا MainActivity.Java

نبدا اولا بتعريف المتغيرات التى سنحتاجها

المتغير activePlayer يدل على لون العمله فاذا كان 0 سيكون اصفر واذا كان 1 سيكون احمر

والمتغير gameState للتاكيد انه عندما يتم وضع عمله فى مربع لا يتم استبدالها او تغيرها بعمله اخرى وتظل ثابته

اما المصفوفه winningPositions  فهى عباره عن مصفوفه مخزن فيها  اوضاع الفوز فى اللعبه فمثلا  1,2,3  يدل على اول صف فى المربعات اذا كانات الوانه متشابه يفوز المتسابق فى اللعبه  وهكذا فى باقى الارقام

ثم بعد ذلك نقوم بعمل داله dropIn  وهى يتم تنفيذها عندما  يتم الضغط على اى مربع من المربعات :

ثم بعد ذلك نقوم بعمل دالة playAgain  وهى يتم تنفيذها عند انتهاء اللعبه وبدء اللعبه من جديد فهى وظيفها تفريغ المربعات وبدء لعبه جديدة

ليصبح الشكل النهائى للكود فى ملف ال MainActivity.java

ويكون شكل اللعبه عند التنفيذ كالتالى :

 

 

Screenshot_2016-03-09-21-35-46 Screenshot_2016-03-09-21-36-32 Screenshot_2016-03-09-21-37-07

 

ولتحميل ملف الكود النهائى للمشروع من هنا

يرجي تقييم الموضوع

Facebooktwittergoogle_plusredditpinterestlinkedinmailby feather
The following two tabs change content below.

Comments

comments

2 تعليقات علي “Tic-Tac-Toe Game

  1. شكرا جزيلا .. حضرتك شرحت ال design
    ممكن شرح بسيط مختصر عن دالة dropIn

    خصوصا
    counter.setTranslationY(-1000f);
    و

    if (gameState[winningPosition[0]] == gameState[winningPosition[1]] &&
    gameState[winningPosition[1]] == gameState[winningPosition[2]] &&
    gameState[winningPosition[0]] != 2)

  2. دالة dropIn هى تنفيذ لحدث الضغط يعنى بمعنى اصح لما تدوس على اى صوره الكود اللى جواها هيتنفذ ..
    اما counter.setTranslationY(-1000f);
    فهمى خاصه بحركه القطع المعدنيه يعنى لما بتدوس على المربع الفاضى القيمه 1000 وباقى القيم هى اللى بتخلى العمله تنزل من فوق بالشكل ده …
    اما بخصوص
    if (gameState[winningPosition[0]] == gameState[winningPosition[1]] &&
    فدى واللى زيها هى احتمالات الفوز والخساره يعنى بمعنى اصح
    لما 3 قطع يكونو نفس اللون بالطول او بالعرض او بشكل قطرى يبقى فى لاعب منهم فاز عن طريق الاحتمالات دى .

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *