นี่คือเกมที่สนุก ไม่ต้องมีผู้เล่น เป็นเกมอัตโนมัติทั้งหมด
ใช้โมดูล numpy และ random เครื่องหมายบนกระดานจะถูกวางอัตโนมัติแทนที่จะถามผู้ใช้ แสดงกระดานหลังจากแต่ละตา จนกว่าผู้เล่นจะชนะ คืนค่า -1 หากเสมอ
โค้ดตัวอย่างสมบูรณ์
import numpy as np
import random
from time import sleep
# สร้างกระดานว่าง 3x3
def my_create_board():
return np.array([[0, 0, 0], [0, 0, 0], [0, 0, 0]])
# หาตำแหน่งว่างบนกระดาน
def my_possibilities(board):
l = []
for i in range(len(board)):
for j in range(len(board)):
if board[i][j] == 0:
l.append((i, j))
return l
# เลือกตำแหน่งสุ่มสำหรับผู้เล่น
def my_random_place(board, my_player):
selection = my_possibilities(board)
current_loc = random.choice(selection)
board[current_loc] = my_player
return board
# ตรวจสอบชนะแนวนอน
def my_row_win(board, my_player):
for x in range(len(board)):
win = True
for y in range(len(board)):
if board[x, y] != my_player:
win = False
break
if win:
return True
return False
# ตรวจสอบชนะแนวตั้ง
def my_col_win(board, my_player):
for x in range(len(board)):
win = True
for y in range(len(board)):
if board[y, x] != my_player:
win = False
break
if win:
return True
return False
# ตรวจสอบชนะแนวทแยง
def my_diag_win(board, my_player):
win = True
for x in range(len(board)):
if board[x, x] != my_player:
win = False
break
return win
# ประเมินเกม
def evaluate_game(board):
my_winner = 0
for my_player in [1, 2]:
if (my_row_win(board, my_player) or
my_col_win(board, my_player) or
my_diag_win(board, my_player)):
my_winner = my_player
if np.all(board != 0) and my_winner == 0:
my_winner = -1 # เสมอ
return my_winner
# ฟังก์ชันหลักเริ่มเกม
def my_play_game():
board, my_winner, counter = my_create_board(), 0, 1
print(board)
sleep(2)
while my_winner == 0:
for my_player in [1, 2]:
board = my_random_place(board, my_player)
print("Board after " + str(counter) + " move")
print(board)
sleep(2)
counter += 1
my_winner = evaluate_game(board)
if my_winner != 0:
break
return my_winner
# Driver Code
print("Winner is: " + str(my_play_game()))
ผลลัพธ์ตัวอย่าง
[[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]]
...
Board after 7 move
[[0 1 1] [2 1 2] [0 1 2]]
Winner is: 1
หมายเหตุ: โค้ดต้นฉบับมีข้อผิดพลาดเล็กน้อยใน my_diag_win (มี colon เหลือ) และ my_row_win/my_col_win ใช้ continue แทน break โค้ดด้านบนแก้ไขแล้ว