python五子棋游戏的设计与实现
这个python的小案例是五子棋游戏的实现,在这个案例中,我们可以实现五子棋游戏的两个玩家在指定的位置落子,画出落子后的棋盘,并且根据函数判断出输赢的功能。
这个案例的思路如下所示:
首先,根据棋盘的样子画出棋盘
然后,对棋盘进行初始化,将可以落子的位置进行统一化处理
接下来,就是进入游戏的环节,双方轮流落子,落子后,并将棋盘画出
最后,根据落子的位置判断选手的的输赢情况,游戏结束
五子棋游戏的设计和实现
代码如下:
defmain(): print("五子棋游戏".center(50,'=')) guige=int(input("请输入棋盘的规格:")) #按照五子棋的棋盘样式,画出棋盘 print_init(guige) #初始化棋盘 wzq={} foriinrange(1,guige+1): forjinrange(1,guige+1): wzq[(i,j)]="+" #重画棋盘 reprint(guige,wzq) #按照五子棋的棋盘样式,画出棋盘 defprint_init(guige): #打印出首行的棋盘列 foriinrange(guige): print("%4d"%(i+1),end='') print() #双重循环,第一重为棋盘的行,隔一行输出棋盘的行数 foriinrange(guige*2-1): #打印出类似“1+---+---+---+---+---+”,行号,+,— if(i%2==0): print("%-3d"%((i+2)/2),end='') #第二重循环,为棋盘的列,主要在于找出对应位置显示的内容 forjinrange(guige*4-3): if(j%4==0): print("+",end='') else: print("-",end='') #打印出类似“||||||” else: print("%3s"%'',end='') forjinrange(guige*4-3): if(j%4==0): print("|",end='') else: print("",end='') #每行输出完成之后换行 print() #重画棋盘,对双方下子进行重画 defreprint(guige,wzq): foriinrange(guige*guige): ifi%2==0: xuanshou="X" else: xuanshou="O" #双方轮流下棋 while1: print("现在轮到%s方落子"%xuanshou) position=input("请输入落子位置:") x_position=int(position.split()[0]) y_position=int(position.split()[1]) #判断输入的位置是否有子,有子一直输入,直到输入的位置无子 ifwzq[(x_position,y_position)]in["X","O"]: print("您输入的位置有子,请重新输入!") else: break ifwzq[(x_position,y_position)]=="+": #重画棋盘 wzq[(x_position,y_position)]=xuanshou foriinrange(guige): print("%4d"%(i+1),end='') print() foriinrange(guige*2-1): if(i%2==0): print("%-3d"%((i+2)/2),end='') forjinrange(guige*4-3): if(j%4==0): x=(i+2)/2 y=j/4+1 print(wzq[(x,y)],end='') else: print("-",end='') else: print("%3s"%'',end='') forjinrange(guige*4-3): if(j%4==0): print("|",end='') else: print("",end='') print() else: isture=True print("您输入的位置已经有子,请重新输入!") #判断输赢 #第一种情况 wzq_win1(wzq,guige,xuanshou) #第二种情况 wzq_win2(wzq,guige,xuanshou) #第三种情况 wzq_win3(wzq,guige,xuanshou) #第四种情况 wzq_win4(wzq,guige,xuanshou) else: print("游戏结束,平局!") #判断输赢 defwzq_win1(wzq,guige,xuanshou): #第一种输赢情况 foriinrange(1,guige+1): forjinrange(1,guige-3): if(wzq[(i,j)]==wzq[(i,j+1)]==wzq[(i,j+2)]==wzq[(i,j+3)]==wzq[(i,j+4)]andwzq[(i,j)]in["X","O"]): print("%s获胜,游戏结束!"%xuanshou) exit() defwzq_win2(wzq,guige,xuanshou): #第二种输赢情况 foriinrange(1,guige-3): forjinrange(1,guige+1): if(wzq[(i,j)]==wzq[(i+1,j)]==wzq[(i+2,j)]==wzq[(i+3,j)]==wzq[(i+4,j)]andwzq[(i,j)]in["X","O"]): print("%s获胜,游戏结束!"%xuanshou) exit() defwzq_win3(wzq,guige,xuanshou): #第三种输赢情况 foriinrange(1,guige-3): forjinrange(1,guige-3): if(wzq[(i,j)]==wzq[(i+1,j+1)]==wzq[(i+2,j+2)]==wzq[(i+3,j+3)]==wzq[(i+4,j+4)]andwzq[(i,j)]in["X","O"]): print("%s获胜,游戏结束!"%xuanshou) exit() defwzq_win4(wzq,guige,xuanshou): #第四种输赢情况 foriinrange(1,guige-3): forjinrange(5,guige+1): if(wzq[(i,j)]==wzq[(i+1,j-1)]==wzq[(i+2,j-2)]==wzq[(i+3,j-3)]==wzq[(i+4,j-4)]andwzq[(i,j)]in["X","O"]): print("%s获胜,游戏结束!"%xuanshou) exit() main()
结果如下:
======================五子棋游戏======================= 请输入棋盘的规格:8 12345678 1+---+---+---+---+---+---+---+ |||||||| 2+---+---+---+---+---+---+---+ |||||||| 3+---+---+---+---+---+---+---+ |||||||| 4+---+---+---+---+---+---+---+ |||||||| 5+---+---+---+---+---+---+---+ |||||||| 6+---+---+---+---+---+---+---+ |||||||| 7+---+---+---+---+---+---+---+ |||||||| 8+---+---+---+---+---+---+---+ 现在轮到X方落子 请输入落子位置:55 12345678 1+---+---+---+---+---+---+---+ |||||||| 2+---+---+---+---+---+---+---+ |||||||| 3+---+---+---+---+---+---+---+ |||||||| 4+---+---+---+---+---+---+---+ |||||||| 5+---+---+---+---X---+---+---+ |||||||| 6+---+---+---+---+---+---+---+ |||||||| 7+---+---+---+---+---+---+---+ |||||||| 8+---+---+---+---+---+---+---+ 现在轮到O方落子 请输入落子位置:61 12345678 1+---+---+---+---+---+---+---+ |||||||| 2+---+---+---+---+---+---+---+ |||||||| 3+---+---+---+---+---+---+---+ |||||||| 4+---+---+---+---+---+---+---+ |||||||| 5+---+---+---+---X---+---+---+ |||||||| 6O---+---+---+---+---+---+---+ |||||||| 7+---+---+---+---+---+---+---+ |||||||| 8+---+---+---+---+---+---+---+ 现在轮到X方落子 请输入落子位置:44 12345678 1+---+---+---+---+---+---+---+ |||||||| 2+---+---+---+---+---+---+---+ |||||||| 3+---+---+---+---+---+---+---+ |||||||| 4+---+---+---X---+---+---+---+ |||||||| 5+---+---+---+---X---+---+---+ |||||||| 6O---+---+---+---+---+---+---+ |||||||| 7+---+---+---+---+---+---+---+ |||||||| 8+---+---+---+---+---+---+---+ 现在轮到O方落子 请输入落子位置:54 12345678 1+---+---+---+---+---+---+---+ |||||||| 2+---+---+---+---+---+---+---+ |||||||| 3+---+---+---+---+---+---+---+ |||||||| 4+---+---+---X---+---+---+---+ |||||||| 5+---+---+---O---X---+---+---+ |||||||| 6O---+---+---+---+---+---+---+ |||||||| 7+---+---+---+---+---+---+---+ |||||||| 8+---+---+---+---+---+---+---+ 现在轮到X方落子 请输入落子位置:66 12345678 1+---+---+---+---+---+---+---+ |||||||| 2+---+---+---+---+---+---+---+ |||||||| 3+---+---+---+---+---+---+---+ |||||||| 4+---+---+---X---+---+---+---+ |||||||| 5+---+---+---O---X---+---+---+ |||||||| 6O---+---+---+---+---X---+---+ |||||||| 7+---+---+---+---+---+---+---+ |||||||| 8+---+---+---+---+---+---+---+ 现在轮到O方落子 请输入落子位置:65 12345678 1+---+---+---+---+---+---+---+ |||||||| 2+---+---+---+---+---+---+---+ |||||||| 3+---+---+---+---+---+---+---+ |||||||| 4+---+---+---X---+---+---+---+ |||||||| 5+---+---+---O---X---+---+---+ |||||||| 6O---+---+---+---O---X---+---+ |||||||| 7+---+---+---+---+---+---+---+ |||||||| 8+---+---+---+---+---+---+---+ 现在轮到X方落子 请输入落子位置:33 12345678 1+---+---+---+---+---+---+---+ |||||||| 2+---+---+---+---+---+---+---+ |||||||| 3+---+---X---+---+---+---+---+ |||||||| 4+---+---+---X---+---+---+---+ |||||||| 5+---+---+---O---X---+---+---+ |||||||| 6O---+---+---+---O---X---+---+ |||||||| 7+---+---+---+---+---+---+---+ |||||||| 8+---+---+---+---+---+---+---+ 现在轮到O方落子 请输入落子位置:56 12345678 1+---+---+---+---+---+---+---+ |||||||| 2+---+---+---+---+---+---+---+ |||||||| 3+---+---X---+---+---+---+---+ |||||||| 4+---+---+---X---+---+---+---+ |||||||| 5+---+---+---O---X---O---+---+ |||||||| 6O---+---+---+---O---X---+---+ |||||||| 7+---+---+---+---+---+---+---+ |||||||| 8+---+---+---+---+---+---+---+ 现在轮到X方落子 请输入落子位置:22 12345678 1+---+---+---+---+---+---+---+ |||||||| 2+---X---+---+---+---+---+---+ |||||||| 3+---+---X---+---+---+---+---+ |||||||| 4+---+---+---X---+---+---+---+ |||||||| 5+---+---+---O---X---O---+---+ |||||||| 6O---+---+---+---O---X---+---+ |||||||| 7+---+---+---+---+---+---+---+ |||||||| 8+---+---+---+---+---+---+---+ X获胜,游戏结束!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。