如何用Python实现简易五子棋游戏
发表于:2025-02-19 作者:千家信息网编辑
千家信息网最后更新 2025年02月19日,这篇文章主要介绍了如何用Python实现简易五子棋游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用Python实现简易五子棋游戏文章都会有所收获,下面我们一起来看
千家信息网最后更新 2025年02月19日如何用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安全错误
数据库的锁怎样保障安全
服务器 管理 工具
有哪些数据库模型
服务器boss伊兰尼库斯
中国软件开发奇才
数据库安全集群
集合数据库
数据库多层级关系
校园网的网络安全
数据库ACCESS编程软件
信息与网络安全设计与实现
网络安全常识6条
EMIS数据库收费
软件开发基本费用
传统网络安全解决方案
华为服务器修改管理地址
多台linux服务器管理
如何自己做传奇3服务器
网络安全班会学校新闻稿
学习软件开发哪个网站好
房地产后台数据库需要什么
计算机网络技术怎么刷题
姬东鸿网络安全学院
百度网络安全红线总结
备份数据库怎么删除
无法安全的连接到服务器邮箱
湖北常用软件开发平均价格
受人称赞的语音会议软件开发
web如何使用mysql数据库
国家教育考试网络技术专业
vmware 数据库连接