如何用Python实现简易五子棋游戏
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了如何用Python实现简易五子棋游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何用Python实现简易五子棋游戏文章都会有所收获,下面我们一起来看
千家信息网最后更新 2026年11月01日如何用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安全错误
数据库的锁怎样保障安全
互联网科技公司的优势
科技股互联网
互联网 科技创新
奇酷互联网科技公司
善班互联网科技有限公司
互联网科技美容
互联网科技宣传片
广州优美互联网科技
互联网之后的科技是什么
中国的互联网科技企业的崛起
银川新华互联网科技职业技术培训学校图片
湖南诚度互联网科技有限公司
呼和浩特新华互联网科技学院
开一家科技互联网公司需要多少钱
吉林省码上互联网科技电话
互联网科技平台产品运营
互联网界的黑科技
第三届互联网大会安防黑科技
互联网科技大会大佬
10位科技互联网大佬
上海睿民互联网科技有限公司
互联网是第几次科技革命的成果
互联网科技垄断
互联网科技论坛
科技类的互联网平台
搜狐科技互联网
互联网科技和法律行业
烟台灵鸽互联网科技有限公司
美国互联网科技实力
黑科技 体验场景 互联网大会