لعبه x , o (جوالات ، computers)


المفروض لما يكون حرف ال X. كما هو في الصورة ينكسر اللوب و تنتهي اللعبة لكن هذا لايحدث و يبقى اللعب مستمر عادي رغم أني عملت الbreak
بحق كل عزيز عليك ساعدني …

5 إعجابات

اتوقع المشكله في ملف (pion) فى الداله (position) لانها بترجع احداثيات مش x,o فبتالي فى الداله (update_letters) انت بتضيف لـ(self.all_x_y_coordinates) احداثيات مش x,o . فإنت فى الملف الرئيسي لما تتحقق من ان x,o في (self.all_x_y_coordinates) حيقول لا لانها مفهاش x,o اصلا بل فيها احداثيات.

جرب تعدل عليها وقولى وصلت لايه :heart:.

3 إعجابات

آسف على التأخير في الرد :rose:

4 إعجابات

خلاص حليت هذه المشكله… المشكلة كانت في أني كان لازمني أعمل شرط يتحكم في كتابة X\O
أنا كنت عامله تصميم للدالة update_letters بأنها تأخذ الأحداثيات من عند الدالة onscreenclick
و تقوم مباشرة بطباعة ال X أو ال O … فلذلك كانت الطباعة تبقى مستمرة حتى لو فاز أحد اللاعبين
الحمد لله انتبهت لهذا و عملت شرط للطباعة… لو تحقق الشرط تتم الطباعة و لو لم يتحقق لا تتم الطباعة
أنا الأن عالقة عند لو كان احد اللاعبين روبوت :sweat_smile: صارلي يومين أحاول و لسه مالقيت طريقة
البرمجة ليست بتلك السهولة

5 إعجابات

من فضلك اشرحلي هذا الجزء, لم أفهمه

4 إعجابات
  else :
    open_locations = []

ننشأ قائمه لاحتواء الاماكن المتاحه

    for x in range (9):

نصنع لوب يدور 9 مرات (عدد المربعات فى لعبه x,o )

      if locations [x-1] != 'o' and locations [x-1] != 'x':

نرى اذا كانت قائمه locations بإنداكس ما قبل x بواحد (لان بايثون تعد من الصفر ليس من الواحد ) لا يساوي x او o

        open_locations.append (x-1)

نضيف هذه الاحداثيات الى قائمه الاماكن المتاحه

    if len (open_locations) == 8 and locations [4] == 'o':

نرى اذا ضغط المستخدم فى مكان واحده وكان ذالك المكان هو المنتصف (لان هناك طريقه سهله للفوز اذا ضغط المستخدم فى المنتصف ولم يضغط الكمبيوتر فى احد الزوايا)

      angles = (0,2,6,8)
      return choice (angles)

أُخبر الكمبيوتر بالزوايا ونرجع قيمه عشوائيه من تلك الزوايا

    if open_locations :
      return choice (open_locations)

اذا كانت قائمه «open_locations» ليست فارغه نرجع منها قيمه عشوائيه

    else :
      return 100

والا اذا كانت فارغه نرجع الرقم 100 كدليل على ان اللعبه قد انتهت (it’s a tie)

3 إعجابات

ملاحظه : انا كاتب شرح كل جزء من الكود تحته وليس فوقه

3 إعجابات

السلام عليكم ورحمة الله وبراكاته
هل هذا الكود كلة مما تعلمناه
ولا في حاجات متقدمة شوية احنا مش عارفنها
لان انا اخر اختبار عملتو كان الي بعد ال PING PONG

4 إعجابات

هذه هي الداله الوحيده الجديده :

3 إعجابات

شكرا جزيلا لحضرتك ،🩵🤍

3 إعجابات

عفوا اخي الكريم @IBRAHIMELSAYED :sparkling_heart:

3 إعجابات

الله ينور عليك يا بطل مجهود جميل جداا منك
عاااش بجد

3 إعجابات

شكرا جزيلا لكلامك الجميل اخى :rose: :sparkling_heart:

3 إعجابات

سامحني على فهمي الضعيف , أنا أعرف أن لغة البرمجة تبدأ العد من 0 وليس من 1 مثل البشر
ولكن أنت عندما كتبت
for x in range (9):
بأستعمالك ال range
أنت بالفعل بدأت العد من ال 0
أذا لمذا كتبت
if locations [x-1] != ‘o’ and locations [x-1] != ‘x’:
لمذا أنقصت ال1 من الx
بما أن قيمة الx
ستبدأ تلقائيا من عند ال0
أليس من الأولى أنك كنت استعملت الxبدون أن تنقئ منها ال1

3 إعجابات

اتوقع انى اتلخبط بس عادى لان اول مره x = 0 و 0 - 1 = -1 واللى هو الانداكس الاخير وتانى مره x=1 و 1-1=0 واللى هو الانداكس الاول وهاكذا الى النهايه ولاكن انتى ممكن تخليها من غير انقاص الواحد او به او بإنقاص اثنين او ثلاثه حتى التسعه وستكون النتيجة واحده :rose:

3 إعجابات

تمام … شكرا على الرد:+1:

3 إعجابات

العفو … (◉‿◉) :grin: (◉‿◉)

إعجابَين (2)

السلام عليكم ورحمه الله وبركاته كيف حالك يا اخي

انا حاولت اعمل العبة لاكن وقفت عند شي ال هوا

انو انا لما اضغط علي الماوس كيف اعرف المكان الي هوا فيه عشان اكتب في x

إعجابَين (2)

وعليكم السلام ورحمة الله وبركاته الحمدُلله بخير :rose:

تقدر تعرف مكان الضغط عن طريق if العاديه لأن اكس تكون متغير فتستطيع ان تتحقق باكثر من طريقه مثل :

  1. if x in range (100,350)
  2. if 350 > x > 100
  3. if x > 100 and x < 350

وكذالك مع متغير الواي مثل :

  1. if y in range (100,350)
  2. if 350 > y > 100
  3. if y > 100 and y < 350

كما انا فعلت فى هذا الجزء من الكود لتحديد هل كنت ستلعب مع صديق ام ستلعب مع روبوت :

def choi (x,y):

  if -250 < y < -150:
    write.clear ()
    window.bgcolor ('indian red')
    create_screen (write)
    window.onscreenclick (play_with_robot)

  elif -400 < y < -300 :
    write.clear ()
    window.bgcolor ('indian red')
    create_screen (write)
    window.onscreenclick (play_with_friend)

انشاء الله تكون فهمت :tulip:
اذا في شيئ انت ما فهمته قولي :sparkling_heart: :heart:

3 إعجابات

سامحني هتعبك معي ممكن توضح اكثر

الي انا مش فاهمو

انو انا اعرف هوا في x وي y كيف بس

يعني انتا في الفانكشن واخد 2 معلومة الي هوا مكان الماوس الي ضغط فيه
كيف حصلت عليهم

3 إعجابات