اذهب إلى المحتوى

السؤال

نشر (معدل)

 

fullgame = {
    1: " ",
    2: " ",
    3: " ",
    4: " ",
    5: " ",
    6: " ",
    7: " ",
    8: " ",
    9: " ",
}

def if_is_equl(a, b, c):
    if a == b == c and b != " ":
        print(f"game over you {b} win>>>>>>> ")

cont = "x"

for i in fullgame:
    print(f"{fullgame[1]} | {fullgame[2]} | {fullgame[3]} ")
    print("-------------")
    print(f"{fullgame[4]} | {fullgame[5]} | {fullgame[6]} ")
    print("-------------")
    print(f"{fullgame[7]} | {fullgame[8]} | {fullgame[9]} ")

inp = int(input("Enter number: "))

if inp > 9:
    print("the number is beger than a limit 1 to 9 try again .....")

if fullgame[i] == " " and cont != "o":
    fullgame.update({inp: cont})
    cont = "o"
elif fullgame[i] == " " and cont != "x":
    fullgame.update({inp: cont})
    cont = "x"

if_is_equl(fullgame[2], fullgame[5], fullgame[8])
if_is_equl(fullgame[1], fullgame[4], fullgame[7])
if_is_equl(fullgame[3], fullgame[6], fullgame[9])
if_is_equl(fullgame[1], fullgame[2], fullgame[3])
if_is_equl(fullgame[4], fullgame[5], fullgame[6])
if_is_equl(fullgame[7], fullgame[8], fullgame[9])
if_is_equl(fullgame[1], fullgame[5], fullgame[9])
if_is_equl(fullgame[3], fullgame[5], fullgame[7])

 

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال ونص السؤال

Recommended Posts

  • 1
نشر

لكي تستطيع أن تحتفظ بالتوالي بقيم الـX والـO بالشكل الصحيح في لوحة اللعبة لديك بعض الأخطاء في الكود التي قد تؤدي إلى عدم العمل الصحيح للعبة سأساعدك على تصحيحها وشرح ما تم تعديله.

المشكلة 1: هناك مشكلة في توالي تبديل اللاعبين X و O الكود كان يحاول تغيير اللاعب بناءً على حالة الخلية الحالية ولكن هذا لا يعمل بشكل صحيح ولكي يتم حل المشكله قم باستخدام متغير cont لتتبع اللاعب الحالي عندما يتم الضغط على خلية صالحة سيتم تغيير اللاعب الحالي من "X" إلى "O" والعكس باستخدام هذا الشرط:

cont = "o" if cont == "x" else "x"

المشكلة 2: يوجد مشكلة في التحقق من حالة الخلية قبل تغييرها يجب عليك التحقق مما إذا كانت الخلية فارغة قبل تغييرها لتقوم بحل هذه المشكله قم بإضافة هذا الشرط:

if fullgame[inp] == " ":
	fullgame[inp] = cont

للتحقق مما إذا كانت الخلية الحالية فارغة  قبل تغييرها إذا كانت الخلية محجوزة سيتم طباعة رسالة تعلم اللاعب بأنه يجب اختيار رقم آخر.

هذا الكود كامل بعد التعديل :

fullgame = {1: " ", 2: " ", 3: " ", 4: " ", 5: " ", 6: " ", 7: " ", 8: " ", 9: " "}

def if_is_equal(a, b, c):
    if a == b == c and b != " ":
        print(f'Game over! Player {b} wins!')
        return True
    return False

cont = "x"

while True:
    # عرض لوحة اللعبة
    for i in range(1, 10):
        print(fullgame[i], " |", end=" ")
        if i % 3 == 0:
            print("\n-------------")
    
    inp = int(input("Enter number: "))
    
    # التحقق من صحة الرقم
    if inp > 9:
        print("The number is greater than the limit (1 to 9). Please try again.")
        continue
    
    # التحقق من احتلال الخلية
    if fullgame[inp] == " ":
        fullgame[inp] = cont
        
        # التحقق من انتهاء اللعبة
        if if_is_equal(fullgame[1], fullgame[2], fullgame[3]) or \
           if_is_equal(fullgame[4], fullgame[5], fullgame[6]) or \
           if_is_equal(fullgame[7], fullgame[8], fullgame[9]) or \
           if_is_equal(fullgame[1], fullgame[4], fullgame[7]) or \
           if_is_equal(fullgame[2], fullgame[5], fullgame[8]) or \
           if_is_equal(fullgame[3], fullgame[6], fullgame[9]) or \
           if_is_equal(fullgame[1], fullgame[5], fullgame[9]) or \
           if_is_equal(fullgame[3], fullgame[5], fullgame[7]):
            break
        
        # تغيير اللاعب الحالي
        cont = "o" if cont == "x" else "x"
    else:
        print("This cell is already occupied. Please choose another number.")

ستعمل معك اللعبه بشكل صحيح كما هو موضح بالصوره:

Screenshot_1.png

  • 0
نشر

عليك باستخدام عبارة if للتحقق مما إذا كان الإدخال يساوي الحرف "o"،  وإذا كان الأمر كذلك، يمكنك طباعة رسالة إلى المستخدم ومطالبته بإدخال رقم مختلف.

مثل إضافة الكود التالي إلى الدالة if_is_equl():

if inp == 'o':
  print('لا يمكنك إدخال o. يرجى إدخال x أو 1 إلى 9.')
  inp = int(input('أدخل رقمًا: '))

سيتحقق الكود مما إذا كان الإدخال يساوي الحرف "o". إذا كان الأمر كذلك، فسيطبع رسالة إلى المستخدم ويطلب منه إدخال رقم مختلف. ثم سيُطلب من المستخدم إدخال رقم جديد.

يمكنك أيضًا إضافة ذلك الكود إلى حلقة while في الوظيفة الرئيسية:

while True:
  inp = int(input("أدخل رقمًا: "))
  if inp > 9:
    print("الرقم أكبر من الحد الأقصى وهو 1 إلى 9. أعد المحاولة .....")
  elif inp == 'o':
    print('لا يمكنك إدخال o. يرجى إدخال x أو 1 إلى 9.')
    continue
  else:
    break

وسيمنع ذلك المستخدم من إدخال الحرف "o" بدلاً من الحرف "x".

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...