python实现五子棋游戏(控制台版)

时间:2024-10-15 01:00:16

  使用python实现控制台版的五子棋游戏;  游戏规则:    1.分两位棋手对战,默认*棋手先下;当按照提示输入坐标(A1),并按回车键<Enter>即可在棋盘上显示下的棋(*);    2.自动切换到o棋手下棋,当按照提示输入坐标(C1),并按回车键<Enter>即可在棋盘上显示下的棋(o);    3.轮流切换棋手下棋,当那方先形成5子连线者获胜(横、竖、斜、反斜四个方向)。  游戏运行界面如下:  

python实现五子棋游戏(控制台版)
python实现五子棋游戏(控制台版)

工具/原料

Sublime Text

Git

新建类

1、  根据游戏需要,新建类“Settings”,用来定义一些必须的基本属性和初始值:  1.number设置棋盘格数;  2.game_active为True则开始游戏,False则结束;  3.chess_player值1为*棋手,-1为o棋手;  4.win_number用来累计下棋步数。

python实现五子棋游戏(控制台版)

2、  新建类“Checkerboard”,主要是利用二维列表(数组)存放棋盘数据,棋子位置都用“-”表示,代码如下图:

python实现五子棋游戏(控制台版)

业务逻辑函数

1、  文件“game_functions.py”存放跟游戏有关的所有业务逻辑函数(分析重点代码),代洁船诼抨码如下图:  1.函数printed_board用来打印棋盘,包括标题、横竖参考坐标等:    1)使用“\033[显示方式;前景色;背景色m”设置打印字体和背景色格式,使页面美观;使用“\033[0m”可关闭属性,前面设置的格式不影响下面的数据;    2)print默认换行,使用end=''设置不换行;      2.函数win_condition用来判断是否5子连线,参数line_checkerboard分别为当前下棋子四个方向的数组,只要有一个方向存在连续5个元素的5-1==4(x or y)则判断5子连线;连线成功则打印获胜方并设置游戏结束;  3.函数check_stats用来循环四个方向,获取当前下子四个方向的数据,并把值line_checkerboard传给函数win_condition;该函数判断情况比较多,特别是斜线和反斜线,可用实际坐标替换上去理解;  4.函数check_input用来校验输入数据情况:    1)当空输入时(len(inputStr) == 0),按回车键提示“请输入坐标(例如A1)!”;    2)当输入exit(inputStr == 'exit'),按回车键退出程序;    3)第二位非数字情况(not inputStr[1].isdigit()),按回车键提示“您输入的坐标不正确,请重新输入(例如A1)!”;    4)当前面校验通过,获取输入的数据转化为下标(i, j),坐标未溢出且未有棋子,则在该坐标显示棋子;  5.函数update_board用来切换棋手,并更新棋盘信息。

python实现五子棋游戏(控制台版)
python实现五子棋游戏(控制台版)
python实现五子棋游戏(控制台版)
python实现五子棋游戏(控制台版)
python实现五子棋游戏(控制台版)

主函数

1、  主函数用来初始化程序,并同步更新程序的信息,代码如下图(分析重点代码):  1.namedtuple创建类似于元组的数据类型,除了可以用索引访问,能够迭代,还能用属性名访问数据,后面就是利用属性进行访问;  2.设置“while ck_settings.game_active”让程序一直运行,持续更新棋盘信息;  3.gf.printed_board(checkerboard)用来打印棋盘信息;  4.gf.update_board(ck_settings, checkerboard, position)用来更新棋盘信息。

python实现五子棋游戏(控制台版)

运行程序

1、  如下图环境下(gobang.py文件路径下),执行语句“python gobang.py”,则打印棋盘,并可对其操作游玩。

python实现五子棋游戏(控制台版)
© 手抄报圈