python设计井字棋小游戏

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()

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值