গেমের বিবরণ
দুই খেলোয়াড় (১ এবং ২) বোর্ডে যাদুকরি করে মুভ দেয়। কেউ জিতলে বা ড্র হলে গেম শেষ। কোনো ইউজার ইনপুট লাগে না।
সম্পূর্ণ কোড
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) যোগ করা।
- স্ট্যাটিস্টিক্স ট্র্যাক করা (জয়/পরাজয়/ড্র)।