python如何实现简单的井字棋小游戏

  介绍

这篇文章给大家分享的是有关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 ()   null

python如何实现简单的井字棋小游戏