介绍
这篇文章给大家分享的是有关python如何实现简单的井字棋小游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
用python实现的一个井字棋游戏:
# Tic-Tac-Toe 井字棋游戏 #全局常量 X=癤" O=癘" 空=?“ #询问是否继续 def ask_yes_no(问题): ,反应=没有; ,while response  not 在(“y",“n"): 反应才能=输入(提问).lower () return 响应 #输入位置数字 def ask_number (question ,低、高): 响应=None ,while response  not 拷贝范围(低,高): 反应才能=int(输入(问题)) return 响应 #询问谁先走,先走方为X,后走方为O #函数返回计算机方,玩家的角色代号 def 碎片(): ,go_first=ask_yes_no(“玩家你是否先走(y/n):“) ,if go_first==皔": 打印才能(“\ n玩家你先走!”) 人类才能=X 电脑才能=O ,其他的: 打印才能(“\ n计算机先走!”) ,电脑=X 人类才能=O return 计算机,人类 #产生新的棋盘 def new_board (): ,董事会=[] ,for square 拷贝范围(9): board.append才能(空的) return 董事会 #显示棋盘 def display_board(板): 董事会,board2=[:] ,for 小姐:拷贝范围(len(董事会)): if 才能;董事会[我]==空: ,,board2[我]=我 ,打印(“\ t" board2 [0],“|”, board2 [1],“|”, board2 [2]) ,打印(“\ t",“- - - - - - - - - - -“) ,打印(“\ t" board2 [3],“|”, board2 [4],“|”, board2 [5]) ,打印(“\ t",,“- - - - - - - - - - -“) ,打印(“\ t" board2 [6],“|”, board2 [7],“|”, board2 [8],“\ n") ,#产生可以合法走棋位置序列(也就是还未下过子位置) def legal_moves(板): ,移动=[] ,for square 拷贝范围(9): if 才能;董事会(广场)==空: ,,moves.append(广场) return 移动 ,#判断输赢 def 赢家(板): #才能,所有赢得可能情况,例如(0,1,2)就是第一行,(0、4、8),(2、4、6)就是对角线 ,WAYS_TO_WIN=((0, 1, 2), (3、4、5), (6、7、8), (0、3、6), (1、4、7), (2、5、8), (0、4、8), (2、4、6)) ,for row  WAYS_TO_WIN拷贝: if 才能;董事会[行[0]]==板[行[1]]==板[行[2]]!=空: ,,赢家=董事会(行[0]) ,,return 赢家 ,,#棋盘没有空位置 ,if EMPTY  not 拷贝;板: return 才能“TIE" return 假 #人才能走的棋 def human_move (董事会、人力):=,legal  legal_moves(董事会) move =None ,while move  not 拷贝;法律: 行动才能=ask_number(“你走那个位置?(主):“,0,9) if 才能;move  not 法律:拷贝 ,才能打印(“\ n此位置已经落过子了,) ,,,,#打印(“好…“) return 移动 #才能计算机走的棋 def computer_move(董事会、computer 、人力): 董事会,董事会=[:] ,,#按优劣顺序排序的下棋走子 ,BEST_MOVES=(4 0 2 6 8、1, 3, 5, 7), #最佳下棋位置顺序表 ,,#如果计算机能赢,就走那个位置 ,for move  legal_moves拷贝(板): ,,董事会[行动]=电脑 ,,if 赢家(董事会)==电脑: ,,,print(“计算机下棋位置…“,移动) ,,,return 移动 ,,,#取消走棋方案 ,,董事会[行动]=空的 ,,#如果玩家能赢就堵住那个位置 ,for move  legal_moves拷贝(板): ,,董事会[行动]=人类 ,,if 赢家(董事会)==人类: ,,,print(“计算机下棋位置…“,移动) ,,,return 移动 ,,,#取消走棋方案 ,,董事会[行动]=空的 ,,#如果不是上面情况,也就是这一轮赢不了 ,,#则是从最佳下棋位置表中挑出第一个合法位置 ,for move  BEST_MOVES拷贝: if 才能;move 拷贝legal_moves(板): ,才能打印(“计算机下棋位置....“,移动) ,,return 移动 #才能转换角色 def next_turn(转): ,if turn ==X: ,,return O ,其他的: return 才能;X #主才能函数 def main (): 计算机,人类才能=块() ,turn =X 董事会才能=new_board () display_board才能(董事会) while 才能;not 赢家(板): ,,if turn 人类:==,,,移动=human_move(人类), ,,,董事会[行动]=人类 ,,: ,,,移动=computer_move(板、计算机、人力) ,,电脑板[行动]=,,display_board(董事会) ,才能把=next_turn(转),#转换角色 ,,,,#游戏结束输出输赢或和棋信息 the_winner才能=赢家(董事会) if 才能the_winner==电脑: ,才能打印(“计算机赢! \ n") elif 才能;the_winner==人类: ,才能打印(“玩家赢! \ n") elif 才能the_winner==癟IE": ,才能打印(“平局,游戏结束\ n") main () nullpython如何实现简单的井字棋小游戏