كيفية صنع لعبة تيك تاك تو Python مع Code مثال

⚡ ملخص ذكي

تيك تاك تو في Python هو مشروع سهل للمبتدئين يُعيد ابتكار لعبة الشبكة الكلاسيكية ثنائية اللاعبين. يُعزز بناؤه المهارات الأساسية مثل الحلقات، والشروط، والقوائم، والدوال، والتكرار، مع فحص الصفوف والأعمدة والأقطار لتحديد الفائز.

  • 🎮 اللعب: يقوم لاعبان بوضع علامة X و O على شبكة مربعة حتى يكمل أحدهما صفًا أو عمودًا أو قطرًا.
  • 🧩 المنطق الأساسي: تقوم القوائم المتداخلة بتخزين اللوحة بينما تقوم الحلقات والشروط بتوجيه الأدوار والكشف عن الفوز أو التعادل.
  • ؟؟؟؟ ️ خطوات البناء: قم بإنشاء اللوحة، واختر اللاعب الأول، واستقبل المدخلات، وقم بتحديد الخلايا، ثم تحقق من وجود فائز في كل جولة.
  • 🔁 الإعادة: يؤدي استدعاء play() المتكرر إلى إعادة تشغيل المباراة، ويمنع التحقق من صحة الإدخال التحركات المشغولة أو الخارجة عن النطاق.
  • 🤖 أهمية الذكاء الاصطناعي: تُعدّ اللوحة نفسها ملعبًا مثاليًا لخوارزمية minimax ووكلاء التعلم المعزز.
  • 🛠️ الأدوات: فقط Python ومحرر مثل PyCharm لا حاجة إلى مكتبات خارجية.

لعبة تيك تاك تو في Python

لعبة تيك تاك تو في Python إنه مشروع شيق يمكنك تجربته. إنه مشروع رائع وممتع لحل التحديات، ويمكن أن يساعدك على إتقان المفاهيم الأساسية في Pythonيساعدك ابتكار لعبة تيك تاك تو ممتعة على تنمية مهاراتك.

يمكنك استخدام جيدة Python محرر مثل PyCharm أو واجهة سطر الأوامر.

كيف تلعب لعبة إكس أو؟

لعبة إكس أو هي لعبة بسيطة ثنائية اللاعبين يمكن لأي شخص لعبها دون الحاجة إلى لوحة لعب. تتضمن اللعبة قيام لاعبين بوضع علامات على خانات مختلفة حتى تنتهي اللعبة بفوز أحدهما أو تعادله.

إليك كيفية لعب لعبة تيك تاك تو.

الخطوة 1) تبدأ لعبة إكس أو بخانات فارغة في شبكة مربعة. هذه هي لوحة لعبة إكس أو.

الخطوة 2) يختار كلا اللاعبين من بين رمزين، عادةً Xs أو Os. يمكنك استخدام أي رمز فريد آخر في اللعبة.

الخطوة 3) يقوم اللاعب الحالي بوضع علاماته بالتناوب عن طريق ملء خلايا لوحة لعبة إكس أو حتى يُكمل أحد اللاعبين مجموعة فائزة. أي صف كامل أو عمود أو قطر يحمل نفس العلامة.

الخطوة 4) من الممكن أيضاً أن تنتهي المباراة بالتعادل في حال امتلاء جميع الخلايا وعدم وجود فائز واضح.

متطلبات الدراسة

بناء لعبة إكس أو Python يتطلب المشروع فهمًا على مستوى المبتدئين لـ Python لغة البرمجة. يتضمن ذلك فهم حلقات "for" والتكرارات، واستخدام عبارة "if" في Python.

أنت أيضا بحاجة إلى أن يكون لديك Python و Python قم بتثبيت محرر نصوص على جهاز الكمبيوتر الخاص بك لإكمال لعبة تيك تاك تو Python مشروع. بما أن هذه لعبة تيك تاك تو للمبتدئين Pythonلن تحتاج إلى أي شيء Python مكتبة.

قد تحتاج إلى بعض مهارات تصحيح الأخطاء لإيجاد حلول للأخطاء في التعليمات البرمجية الخاصة بك، ويجب أن يكون لديك أيضًا فهم كافٍ لمكونات اللعبة.

تيك تاك تو Python خوارزمية

اتبع هذه الخطوات لإنشاء لعبة تيك تاك تو في Python لغة البرمجة:

الخطوة 1) قم بإنشاء اللوحة لبدء لعبة تيك تاك تو.

الخطوة 2) اطلب من المستخدم أن يقرر أبعاد لوحة اللعبة.

الخطوة 3) اختر اللاعب الأول بشكل عشوائي.

الخطوة 4) تبدأ لعبة إكس أو.

الخطوة 5) يلعب اللاعبون عن طريق تحديد مكان فارغ على اللوحة.

الخطوة 6) املأ المكان الفارغ المحدد بعلامة اللاعب.

الخطوة 7) حدد ما إذا كان اللاعب سيفوز أو يحصل على التعادل في اللعبة باستخدام منطق اللعبة.

الخطوة 8) قم بعرض لوحة اللعبة بعد كل لعبة إذا لم يفز أي لاعب أو حصل على التعادل مع اللاعب الثاني.

الخطوة 9) عرض رسالة التعادل أو الفوز، على التوالي.

الخطوة 10) أنهِ لعبة تيك تاك تو مع خيارات لبدء لعبة جديدة.

طويل Python رمز تيك تاك تو

# Guru99
# Code developed by Guru99.com
# Guru99 tic-tac-toe game
#Get input
def getInput(prompt, cast=None, condition=None, errorMessage=None):
  while True:
      try:
          val = cast(input(prompt))
          assert condition is None or condition(val)
          return val
      except:
          print(errorMessage or "Invalid input.")
# Print the game board
def printBoard(board):
  print()
  for row in board:
      print(*row)
  print()
# Check if player won using the winning combinations
def checkWin(board):
  # Check rows
  for row in range(len(board)):
      for col in range(len(board)-1):
          if board[row][col] == "_" or board[row][col+1] == "_" or board[row][col] != board[row][col+1]:
              break
      else:
          return True
  # Check column numbers
  for col in range(len(board)):
      for row in range(len(board)-1):
          if board[row][col] == "_" or board[row+1][col] == "_" or board[row][col] != board[row+1][col]:
              break
      else:
          return True
  # Check left diagonal
  for cell in range(len(board)-1):
      if board[cell][cell] == "_" or board[cell+1][cell+1] == "_" or board[cell][cell] != board[cell+1][cell+1]:
          break
  else:
      return True
  # Check right diagonal
  for cell in range(len(board)-1):
      emptyCell = board[cell][len(board)-cell-1] == "_" or board[cell+1][len(board)-cell-2] == "_"
      different = board[cell][len(board)-cell-1] != board[cell+1][len(board)-cell-2]
      if emptyCell or different:
          break
  else:
      return True
  # No win
  return False
# Play tic tac toe game
def play():
  # Introduction
  print("------------\nN-DIMENSIONAL TIC TAC TOE game by guru 99.com \n------------")
  # Set up variables
  N = getInput(prompt="Guru99 says>>> Enter N, the dimensions of the board: ",
               cast=int,
               condition=lambda x: x >= 3,
               errorMessage="Invalid input. Please enter an integer greater than or equal to 3 as explained on guru99.com")
  board = [['_'] * N for _ in range(N)]
  used = 0
  turn = 0
  # Play guru99 tic tac toe game in Python using while infinite loop
  while True:
      # Print guru99 tic tac toe game board
      printBoard(board)
      # Get user pick
      pick = getInput(prompt=f"Player {turn+1} - Pick location (row, col): ",
                      cast=lambda line: tuple(map(int, line.split(" "))),
                      condition=lambda pair: min(pair) >= 0 and max(pair) < N and board[pair[0]][pair[1]] == "_",
                      errorMessage="Invalid input. Please enter a valid, unoccupied location as an integer pair.")
      # Populate location
      board[pick[0]][pick[1]] = "X" if turn == 0 else "O"
      used += 1
      # Check for win
      #Guru99 tutorial
      if checkWin(board):
          printBoard(board)
          print(f"Game over, Player {turn+1} wins.")
          break
      # Check for tie
      elif used == N*N:
          printBoard(board)
          print("Game over. Players have tied the match.")
          print("Guru99.com tic tac toe game ")
          break
      # If no win yet, update next user
      turn = (turn+1)%2
  # Check for rematch
  playAgain = getInput(prompt="Play Guru99 tic tac toe_Game again? (y/n): ",
                       cast=str,
                       condition=lambda ans: ans.strip("\n").lower() in {"y", "n"},
                       errorMessage="Invalid input. Please enter 'y' or 'n'.")
  if playAgain == 'n':
      # End the game
      print("\nGuru99 TicTacToe game ended.")
      return
  else:
      # Rematch
      play()
# Main
if __name__ == '__main__':
  play()

تيك تاك تو Python Code الناتج

بعد تشغيل الكود المصدري أعلاه، ستكون النتائج المتوقعة للوحة لعبة إكس أو 3 × 3 كما يلي:

------------
N-DIMENSIONAL TIC TAC TOE game by guru 99.com
------------
Guru99 says>>> Enter N, the dimensions of the board: 3

_ _ _

_ _ _

_ _ _

Player 1 - Pick location (row, col): 1 1

_ _ _

_ X _

_ _ _

Player 2 - Pick location (row, col): 0 1

_ O _

_ X _

_ _ _

Player 1 - Pick location (row, col): 1 2

_ O _

_ X X

_ _ _

Player 2 - Pick location (row, col): 0 2

_ O O

_ X X

_ _ _

Player 1 - Pick location (row, col): 1 0

_ O O

X X X

_ _ _

Game over, Player 1 wins.
Play Guru99 tic tac toe_Game again? (y/n):

طويل Code انهيار

خلق تيك تاك تو في Python الأمر بسيط. دعونا نحلل الوظائف المختلفة جزءًا جزءًا لفهم ما يحدث في كل سطر:

طباعة اللوح

لوحة لعبة إكس أو هي الشاشة الرئيسية للعبة. Pythonتُستخدم نافذة عرض لعرض لوحة اللعبة.

إليك الخطوات التي تساعدك على إنشاء لوحة للعبة تيك تاك تو Python:

Python رمز تيك تاك تو

def getInput(prompt, cast=None, condition=None, errorMessage=None):
   while True:
       try:
           val = cast(input(prompt))
           assert condition is None or condition(val)
           return val
       except:
           print(errorMessage or "Invalid input.")
# Print the board
def printBoard(board):
   print()
   for row in board:
       print(*row)
   print()
N = getInput(prompt="Guru99 says>>> Enter N, the dimensions of the board: ",
            cast=int,
            condition=lambda x: x >= 3,
            errorMessage="Invalid input. Please enter an integer greater than or equal to 3 as explained on guru99.com")
board = [['_'] * N for _ in range(N)]
used = 0
turn = 0
printBoard(board)

Code انتاج:

------------
N-DIMENSIONAL TIC TAC TOE game by guru 99.com
------------
Guru99 says>>> Enter N, the dimensions of the board: 3

_ _ _

_ _ _

_ _ _

لعبة تيك تاك تو – الترتيب الفائز

للتحقق من فوز أي لاعب، نحتاج إلى التحقق من المجموعات الفائزة عبر الصفوف والأعمدة والأقطار. إذا كان هناك فائز، فنحن بحاجة إلى إظهار رسالة فائزة.

الصفوف

  • بالنسبة للصف، تأخذ الدالة كل زوج متتالي من الأعمدة وتتحقق من المجموعة الفائزة.
  • أول لاعب يملأ الصفوف يفوز. وبالتالي يخسر اللاعب الثاني.
  • إذا كان زوج من الأعمدة المتتالية متطابقًا، فمن الواضح أن جميع العناصر الموجودة داخل ذلك الصف متطابقة.
  • إذا كان اثنان منهم مختلفين أو كان الصف يحتوي على خلية فارغة، فلا يوجد فائز حتى الآن.
  • نقوم بعد ذلك بتنفيذ شروط الخسارة وإضافة استراحة. إذا كان أي من شروط الخسارة هذه صحيحًا، فلن يكون لدينا فائز في الصف المحدد.
  • العبارة else تعطي عائدًا حقيقيًا لإظهار أن هناك فائزًا.
  • ينقطع الاستراحة عن هذه الحلقة للانتقال إلى الصف التالي.

الأعمدة

بالنسبة للأعمدة، نكرر نفس الوظيفة كما في الصفوف. نتحقق مما إذا كان اللاعب قد فاز بعد أن يختار كل لاعب مكانه.

يفوز الصف القطري

بالنسبة للقطر الأيسر، تصبح المهمة أبسط. سنقارن دائمًا الخلايا في الأقطار. ولكن في حال عدم وجود فائز، يمكننا الانتقال إلى التعليمات التالية.

لعب منطق اللعبة

هذه هي وظيفة اللعبة الرئيسية. لهذا يمكننا استخدام المتغيرات التي تخزن المعلومات.

  • المتغير الأول هو حجم اللوحة المخزنة في "N". ستحصل اللعبة على حجم اللوحة بعد مطالبة المستخدم بإدخال رقم.
  • لذلك، عند إدخال القيمة، تتم معالجتها.
  • نقوم أيضًا بإنشاء رسالة خطأ لإظهار اللاعبين عند كتابة أي رقم غير صالح.
  • يمكننا بعد ذلك إنشاء متغيرين يملأان "X" أو "O" عند ملء الخلية.
  • ثم أظهر للاعبين لوحة اللعبة. بعد ذلك، احصل على مدخلات اللاعب.
  • سيقوم المنطق بعد ذلك بوضع علامة على الخلية المحددة كمملوءة والتحقق من الفوز أو التعادل.
  • إذا لم يكن هناك فائز، تطلب اللعبة من اللاعب التالي أن يلعب. إذا كان هناك فوز أو تعادل، فيمكن للعبة أن تسأل المستخدمين عما إذا كانوا يريدون لعبة جديدة.

الأسئلة الشائعة

نعم. لعبة تيك تاك تو مشروع كلاسيكي للمبتدئين، يحوّل الحلقات والشروط والدوال إلى لعبة عملية. يبني الثقة، ويعزز قواعد اللغة الأساسية، ويهيئك لمشاريع أكبر دون الحاجة إلى أي مكتبات خارجية.

يعزز هذا الأسلوب استخدام القوائم المتداخلة للوحة، وحلقات for و while لتحديد الأدوار، وعبارات if للتحقق من الفوز، والدوال لتحديد البنية، والتكرار لإعادة التشغيل. تنتقل هذه الأساسيات مباشرةً إلى مستويات أكثر تقدماً. Python البرامج.

نعم. بالإضافة إلى إصدار وحدة التحكم، تُضيف مكتبات مثل Tkinter وPygame أزرارًا قابلة للنقر، وشبكة مرسومة، وإدخالًا بالماوس. يبقى منطق اللعبة كما هو؛ فقط طبقات العرض والإدخال تتغير.

لعبة إكس أو لعبةٌ محسومة. عندما يلعب كلا اللاعبين بأفضل ما لديهما، يمكن صدّ كل تهديد، فلا يستطيع أحدٌ حسم الفوز. ولهذا السبب، تنتهي المباراة المثالية، سواءً بين لاعبين بشريين أو حاسوبيين، بالتعادل دائمًا.

يستغرق إعداد نسخة أساسية من البرنامج على وحدة التحكم من ساعة إلى ثلاث ساعات للمبتدئين بمجرد أن يصبحوا على دراية بالحلقات والشروط. أما إضافة التحقق من صحة المدخلات، أو لوحة قابلة للتوسيع، أو واجهة رسومية، فتؤدي إلى تمديد مدة المشروع إلى عطلة نهاية أسبوع من التدريب.

استبدل أحد اللاعبين بدالة مينيمكس. تستكشف هذه الدالة بشكل متكرر كل حركة ممكنة، وتسجل الفوز والخسارة والتعادل، ثم تختار الحركة التي تضمن أفضل نتيجة. على رقعة لعب صغيرة، يجعل هذا من المستحيل هزيمة الكمبيوتر.

نعم. تتحسن خوارزميات التعلم المعزز، مثل خوارزمية Q-learning، من خلال لعب آلاف المباريات ومكافأة الحركات الفائزة. تُخزن اللوحات على شكل مصفوفات. نمباي، مما يسمح للنموذج بتعلم استراتيجية شبه مثالية دون قواعد مبرمجة مسبقًا.

نعم. يمكن لبرنامج GitHub Copilot ومساعدي الذكاء الاصطناعي المشابهين إنشاء هيكل رقعة الشطرنج، وتكرار الأدوار، وتحقيق الفوز في الكشات بمجرد توجيه سريع. اعتبر الناتج بمثابة مسودة أولية، ثم اختبر بنفسك الحالات الاستثنائية مثل التعادلات والحركات غير الصالحة.

تلخيص هذه التدوينة بـ: