python井字棋游戏代码
以下是一个简单的Python井字棋游戏代码:
import random
board = [' ' for x in range(10)]
def insert_letter(letter, pos):
board[pos] = letter
def space_is_free(pos):
return board[pos] == ' '
def print_board(board):
print(' | |')
print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])
print(' | |')
print('-----------')
print(' | |')
print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])
print(' | |')
print('-----------')
print(' | |')
print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])
print(' | |')
def is_winner(bo, le):
return (bo[7] == le and bo[8] == le and bo[9] == le) or \
(bo[4] == le and bo[5] == le and bo[6] == le) or \
(bo[1] == le and bo[2] == le and bo[3] == le) or \
(bo[7] == le and bo[4] == le and bo[1] == le) or \
(bo[8] == le and bo[5] == le and bo[2] == le) or \
(bo[9] == le and bo[6] == le and bo[3] == le) or \
(bo[7] == le and bo[5] == le and bo[3] == le) or \
(bo[9] == le and bo[5] == le and bo[1] == le)
def player_move():
run = True
while run:
move = input("Please select a position to place an 'X' (1-9): ")
try:
move = int(move)
if move > 0 and move < 10:
if space_is_free(move):
run = False
insert_letter('X', move)
else:
print("Sorry, this space is occupied!")
else:
print("Please type a number within the range!")
except:
print("Please type a number!")
def computer_move():
possible_moves = [x for x, letter in enumerate(board) if letter == ' ' and x != 0]
move = 0
for let in ['O', 'X']:
for i in possible_moves:
board_copy = board[:]
board_copy[i] = let
if is_winner(board_copy, let):
move = i
return move
corners_open = []
for i in possible_moves:
if i in [1, 3, 7, 9]:
corners_open.append(i)
if len(corners_open) > 0:
move = select_random(corners_open)
return move
if 5 in possible_moves:
move = 5
return move
edges_open = []
for i in possible_moves:
if i in [2, 4, 6, 8]:
edges_open.append(i)
if len(edges_open) > 0:
move = select_random(edges_open)
return move
def select_random(li):
ln = len(li)
r = random.randrange(0, ln)
return li[r]
def is_board_full(board):
if board.count(' ') > 1:
return False
else:
return True
def main():
print("Welcome to Tic Tac Toe!")
print_board(board)
while not is_board_full(board):
if not is_winner(board, 'O'):
player_move()
print_board(board)
else:
print("Sorry, O's won this time!")
break
if not is_winner(board, 'X'):
mo_