কম্পিউটার টিউটোরিয়াল

পাইথনে অটোমেটিক টিক-ট্যাক-টো গেম (র‍্যান্ডম মুভ)


গেমের বিবরণ

দুই খেলোয়াড় (১ এবং ২) বোর্ডে যাদুকরি করে মুভ দেয়। কেউ জিতলে বা ড্র হলে গেম শেষ। কোনো ইউজার ইনপুট লাগে না।

সম্পূর্ণ কোড


import numpy as np
import random
from time import sleep

def create_board():
    return np.array([[0, 0, 0], [0, 0, 0], [0, 0, 0]])

def possibilities(board):
    """খালি সেলগুলো রিটার্ন করে"""
    return [(i, j) for i in range(3) for j in range(3) if board[i][j] == 0]

def random_place(board, player):
    """যাদুকরি খালি সেলে খেলোয়াড়ের মার্ক দেয়"""
    selection = possibilities(board)
    if selection:
        current_loc = random.choice(selection)
        board[current_loc] = player
    return board

def row_win(board, player):
    for row in board:
        if all(cell == player for cell in row):
            return True
    return False

def col_win(board, player):
    for col in range(3):
        if all(board[row][col] == player for row in range(3)):
            return True
    return False

def diag_win(board, player):
    # প্রধান ডায়াগোনাল
    if all(board[i][i] == player for i in range(3)):
        return True
    # সেকেন্ডারি ডায়াগোনাল
    if all(board[i][2-i] == player for i in range(3)):
        return True
    return False

def evaluate(board):
    for player in [1, 2]:
        if row_win(board, player) or col_win(board, player) or diag_win(board, player):
            return player
    if np.all(board != 0):
        return -1  # ড্র
    return 0  # গেম চলছে

def play_game():
    board = create_board()
    winner = 0
    counter = 1
    
    print("Initial board:")
    print(board)
    sleep(2)
    
    while winner == 0:
        for player in [1, 2]:
            board = random_place(board, player)
            print(f"\nBoard after {counter} move:")
            print(board)
            sleep(2)
            counter += 1
            winner = evaluate(board)
            if winner != 0:
                break
    return winner

# ড্রাইভার
if __name__ == "__main__":
    result = play_game()
    if result == -1:
        print("\nGame Drawn!")
    else:
        print(f"\nWinner is: Player {result}")

নমুনা আউটপুট

Initial board:
[[0 0 0]
 [0 0 0]
 [0 0 0]]

Board after 1 move:
[[0 1 0]
 [0 0 0]
 [0 0 0]]

Board after 2 move:
[[0 1 0]
 [0 0 0]
 [0 0 2]]
...
Winner is: Player 1

উন্নতির সুযোগ

  • Minimax অ্যালগরিদম দিয়ে অপ্টিমাল খেলোয়াড় বানানো।
  • GUI (Tkinter/Pygame) যোগ করা।
  • স্ট্যাটিস্টিক্স ট্র্যাক করা (জয়/পরাজয়/ড্র)।
  1. পাইথনে বল ক্যাচিং গেম তৈরি

  2. পাইথনে কনওয়ের গেম অফ লাইফ (Conway's Game of Life)

  3. পাইথনে UUID ব্যবহার করে র‍্যান্ডম আইডি জেনারেট করা

  4. পাইথন Tkinter-এ কালার গেম তৈরি