python编写简易井字棋小游戏,是我们学校python课堂上作为作业的一道小练习。提供以下我自己编写的代码仅供参考
#全局变量
#此处为设置棋盘
X=‘X’
O=‘O’
EMPTY=’’
WAYS_TO_WIN=((0,1,2),(3,4,5),(6,7,8),(0,4,8),(2,4,6),(1,4,7),(0,3,6),(2,5,8))
def new_board():
board=[]
for i in range(9):
board.append(EMPTY)
return board
def display_board(board):
board2=board[:]
for i in range(len(board)):
if board[i]==EMPTY:
board2[i]=i
print("\t",board2[0],"|",board2[1],"|",board2[2])
print("\t","-----------")
print("\t",board2[3],"|",board2[4],"|",board2[5])
print("\t","-----------")
print("\t",board2[6],"|",board2[7],"|",board2[8],"\n")
def owinner(board):
for row in WAYS_TO_WIN:
if board[row[0]]==board[row[1]]==board[row[2]]!=EMPTY:
winner = board[row[0]]
return winner
if EMPTY not in board:
return "TIE"
return None
def legal_moves(board):
moves=[]
for s in range(9):
if board[s]==EMPTY:
moves.append(s)
return moves
def computer_move (board,computer,human):
board=board[:]#创建副本,修改不影响原来的board
BEST_MOVES=(4,0,2,6,8,1,3,5,7)#最佳下棋位置表
for move in legal_moves(board):#如果玩家可以胜利,则堵住那个位置
board[move]=computer
if owinner(board)==computer:
print(“电脑下棋的位置是:”,move)
return move
#取消走棋方案
board[move]=EMPTY
for move in legal_moves(board):
board[move] = human
if owinner(board) ==human:
print(move)
return move
board[move] = EMPTY
for move in BEST_MOVES:
if move in legal_moves(board):
print(move)
return move
def human_move(board,human):
legal=legal_moves(board)
move=None
while move not in legal:
move= eval(input(“你走哪个位置:(0~8)”))
if move not in legal:
print("\n这个位置已经下过棋子了")
return move
def pieces():
go_first=input(“玩家你是否先走(y/n):”)
if go_first==‘y’:
print("\n玩家你先走")
human=X
computer=O
#return human,computer
else:
print("\n电脑先走")
computer=X
human=O
return human,computer
def next_turn(turn):
if turn==X:
return O
else :
return X
def main():
human,computer = pieces()
turn=X
board=new_board()
display_board(board)
while not owinner(board):
if turn == human:
move = human_move(board,human)
board[move]=human
else:
move =computer_move(board,computer,human)
board[move]=computer
display_board(board)
turn=next_turn(turn)
the_winner = owinner(board)
if the_winner == computer:
print(“电脑赢了!\n”)
elif the_winner == human:
print(“玩家赢!\n”)
elif the_winner == “TIE”:
print(“平局\n”)
main()