如何用Python实现简易五子棋游戏
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要介绍了如何用Python实现简易五子棋游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用Python实现简易五子棋游戏文章都会有所收获,下面我们一起来看
千家信息网最后更新 2025年11月08日如何用Python实现简易五子棋游戏
这篇文章主要介绍了如何用Python实现简易五子棋游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用Python实现简易五子棋游戏文章都会有所收获,下面我们一起来看看吧。
具体代码如下
class CheckerBoard(): '''棋盘类''' def __init__(self,col=0,row=0,piece_type='--'): self.col = col self.row = row self.piece_type = piece_type self.labelx = range(self.col) self.labely = range(self.row) def chessboard(self): '''棋盘初始化数据(棋子的状态)''' checkerboardl = [] for y in self.labely: heading_list = [] checkerboardl.append(heading_list) for x in self.labelx: heading_list.append(self.piece_type) return checkerboardl def chess_show(self,checkerboardl): '''显示棋子的状态''' print('\0\0\0',end=' ') for x_title in self.labelx: print(str(x_title).zfill(2),end=' ') for y_title in range(len(checkerboardl)): print('\n',str(y_title).zfill(2),end=' ') for instans in checkerboardl[y_title]: print(instans,end=' ')class User(): '''玩家类''' def __init__(self,id,name,piece_type): '''构造函数 id :玩家 id标识 name:玩家名称 piece_type:棋子的状态 ''' self.id = id self.name = name self.piece_type = piece_type def play(self,x,y,pool,data): '''play(): 玩家下棋子 x:下棋子的x坐标 y:下棋子的y坐标 pool:棋子的状态集合 data:棋盘上的棋子状态数据 ''' if data[y][x] not in pool: data[y][x] = self.piece_type return data,True else: print('\n位置错误,已经有棋子了,重新输入:') return data,False def __col_list(self, x, y, col,row, data): '''获取下棋子的x轴所有棋子的状态 x:下棋子的x坐标 y:下棋子的y坐标 col:棋盘的最大横向坐标 row:棋盘的最大纵向坐标 data:棋盘中棋子的状态数据 ''' # slist = [] slist = data[y] print(slist,'__col_list') return slist def __row_list(self, x, y, col,row, data): '''获取下棋子的y轴所有棋子的状态 x:下棋子的x坐标 y:下棋子的y坐标 col:棋盘的最大横向坐标 row:棋盘的最大纵向坐标 data:棋盘中棋子的状态数据 ''' slist = [] for i in data: slist.append(i[x]) print(slist, '__row_list') return slist def __left_cut_list(self, x, y, col,row, data): '''获取下棋子的左斜角所有棋子的状态 x:下棋子的x坐标 y:下棋子的y坐标 col:棋盘的最大横向坐标 row:棋盘的最大纵向坐标 data:棋盘中棋子的状态数据 ''' slist = [] if 0 <= x+y and row > x+y: x_val_init = x+y y_val_init = 0 while x_val_init >= 0 and y_val_init <= row-1: val = data[y_val_init][x_val_init] slist.append(val) x_val_init -= 1 y_val_init += 1 else: x_val_init = col-1 y_val_init = y while x_val_init > 0 and y_val_init <= row-1: val = data[y_val_init][x_val_init] slist.append(val) x_val_init -= 1 y_val_init += 1 print(slist, '__left_cut_list') return slist def __right_cut_list(self, x, y, col,row, data): '''获取下棋子的右斜角所有棋子的状态 x:下棋子的x坐标 y:下棋子的y坐标 col:棋盘的最大横向坐标 row:棋盘的最大纵向坐标 data:棋盘中棋子的状态数据 ''' slist = [] if 0 <= x-y : x_val_init = x-y y_val_init = 0 while x_val_init <= col-1 and y_val_init <= row-1: val = data[y_val_init][x_val_init] slist.append(val) x_val_init += 1 y_val_init += 1 else: x_val_init = 0 y_val_init = y-x while x_val_init <= col-1 and y_val_init <= row-1: val = data[y_val_init][x_val_init] slist.append(val) x_val_init += 1 y_val_init += 1 print(slist, '__right_cut_list') return slist def fif_diff(slef,list5): '''判断连续五个棋子状态都一样''' # list5:5个元素的列表 piece_type = slef.piece_type for i in range(len(list5)): if list5[i] != piece_type: return False return True def rule(self,x, y, col,row, data): '''规则:连续5个棋子状态都一样时,返回True x:下棋子的x坐标 y:下棋子的y坐标 col:棋盘的最大横向坐标 row:棋盘的最大纵向坐标 data:棋盘中棋子的状态数据 ''' status = False rule_list = [self.__col_list,self.__row_list,self.__left_cut_list,self.__right_cut_list] for i in range(len(rule_list)): get = rule_list[i] slist = get(x, y, col,row, data) if len(slist) >= 5: start = 0 end = 5 while end < len(slist) + 4: fif_ele_list = slist[start:end] if self.fif_diff(fif_ele_list) : print('%s赢了' %self.name,'11111111111111') status = True break else: start += 1 end += 1 return statusdef inputbox(obj, pool, checkerboardl_init): ''' 输入横向纵向坐标''' print('\n*************************************************') x = int(input('%s请输入横坐标:'%obj.name).strip()) if not 0 <= x < 15: x = int(input('%s请输入横坐标:'%obj.name).strip()) y = int(input('%s请输入纵坐标:'%obj.name).strip()) if not 0 <= y < 15: y = int(input('%s请输入纵坐标:'%obj.name).strip()) checkerboardl,static = obj.play(x, y, pool, checkerboardl_init) if static: s = obj.rule(x, y, 15, 15, checkerboardl) chess.chess_show(checkerboardl) if s: return True else: inputbox(obj, pool, checkerboardl_init)pool = []checkerboardl=[]static = ''if __name__ == '__main__': ST = True chess = CheckerBoard(15,15) checkerboardl_init = chess.chessboard() chess.chess_show(checkerboardl_init) s1 = User(1,'jack','@@') pool.append(s1.piece_type) s2 = User(2, 'chen', '##') pool.append(s2.piece_type) z =1 while ST: if z == 1: a = inputbox(s1, pool, checkerboardl_init) if a : break z = 2 continue if z == 2: b = inputbox(s2, pool, checkerboardl_init) if b : break z = 1简化图:
关于"如何用Python实现简易五子棋游戏"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"如何用Python实现简易五子棋游戏"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
棋子
坐标
棋盘
状态
最大
数据
输入
横向
纵向
五子棋
简易
五子
玩家
知识
内容
斜角
横坐标
篇文章
纵坐标
代码
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库去掉重复
极数宝数据库产品叫什么
服务器管理员权限命令行
校园网络安全告家长书
金税盘安全接入服务器地址是哪个
危险化学品数据库
用数据库登陆
xampp 数据库连接
供水单位网络安全责任制
西安java软件开发月薪
郓城租房软件开发
哪些科研院所有网络安全研究生
土地利用数据库的编码系统有哪些
计算机网络技术专修课程
数据库java连接前端
下雪视频软件开发
供电局网络安全整改方案
深信服最新网络安全
数据库的逻辑结构图解
苏州戴尔服务器客服电话
178魔兽数据库
软件开发实习内容详细
网络安全的证书
网络安全法复习资料
crm软件开发团队
第一届指挥控制网络安全大会
数据库连接池参数配置优化
十年无人管理的服务器
web前端开发和网络安全哪个好
温州p2p软件开发