五子棋是是一种两人对弈的纯策略型棋类游戏。

玩法介绍:

玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。玩法二:自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。

案例展示:

源码介绍:

import pygame
# 导入pygame模块
print(pygame.ver)
# 检查pygame的版本,检查pygame有没有导入成功EMPTY = 0
BLACK = 1
WHITE = 2
# 定义三个常量函数,用来表示白棋,黑棋,以及 空black_color = [0, 0, 0]
# 定义黑色(黑棋用,画棋盘)
white_color = [255, 255, 255]
# 定义白色(白棋用)# 定义棋盘这个类
class RenjuBoard(object):def __init__(self):# self._board = board = [[EMPTY] * 15 for _ in range(15)]# 将棋盘每一个交叉点都看作列表的一个元素位,一共有15*15共225个元素self._board = [[]] * 15self.reset()#重置棋盘def reset(self):for row in range(len(self._board)):self._board[row] = [EMPTY] * 15#定义棋盘上的下棋函数,row表示行,col表示列,is_black表示判断当前点位该下黑棋,还是白棋def move(self, row, col, is_black):if self._board[row][col] == EMPTY:self._board[row][col] = BLACK if is_black else WHITEreturn Truereturn False# 给棋盘定义一个函数将自己在screen上面画出来,使用pygame.draw()函数。并且顺便将下了的棋子也画出来def draw(self, screen):for h in range(1, 16):pygame.draw.line(screen, black_color,[40, h * 40], [600, h * 40], 1)pygame.draw.line(screen, black_color,[h * 40,40], [h * 40, 600], 1)# 给棋盘加一个外框,使美观pygame.draw.rect(screen, black_color, [36, 36, 568, 568], 3)# 在棋盘上标出,天元以及另外4个特殊点位pygame.draw.circle(screen, black_color, [320, 320], 5, 0)pygame.draw.circle(screen, black_color, [160, 160], 3, 0)pygame.draw.circle(screen, black_color, [160, 480], 3, 0)pygame.draw.circle(screen, black_color, [480, 160], 3, 0)pygame.draw.circle(screen, black_color, [480, 480], 3, 0)#做2次for循环取得棋盘上所有交叉点的坐标for row in range(len(self._board)):for col in range(len(self._board[row])):# 将下在棋盘上的棋子画出来if self._board[row][col] != EMPTY:ccolor = black_color \if self._board[row][col] == BLACK else white_color# 取得这个交叉点下的棋子的颜色,并将棋子画出来pos = [40 * (col + 1), 40 * (row + 1)]# 画出棋子pygame.draw.circle(screen, ccolor, pos, 18, 0)# 定义函数,传入当前棋盘上的棋子列表,输出结果,不管黑棋白棋胜,都是传回False,未出结果则为True
def is_win(board):for n in range(15):# 判断垂直方向胜利flag = 0# flag是一个标签,表示是否有连续以上五个相同颜色的棋子for b in board._board:if b[n] == 1:flag += 1if flag == 5:print('黑棋胜')return Falseelse:# else表示此时没有连续相同的棋子,标签flag重置为0flag = 0flag = 0for b in board._board:if b[n] == 2:flag += 1if flag == 5:print('白棋胜')return Falseelse:flag = 0# 判断水平方向胜利flag = 0for b in board._board[n]:if b == 1:flag += 1if flag == 5:print('黑棋胜')return Falseelse:flag = 0flag = 0for b in board._board[n]:if b == 2:flag += 1if flag == 5:print('白棋胜')return Falseelse:flag = 0# 判断正斜方向胜利for x in range(4, 25):flag = 0for i,b in enumerate(board._board):if 14 >= x - i >= 0 and b[x - i] == 1:flag += 1if flag == 5:print('黑棋胜')return Falseelse:flag = 0for x in range(4, 25):flag = 0for i,b in enumerate(board._board):if 14 >= x - i >= 0 and b[x - i] == 2:flag += 1if flag == 5:print('白棋胜')return Falseelse:flag = 0#判断反斜方向胜利for x in range(11, -11, -1):flag = 0for i,b in enumerate(board._board):if 0 <= x + i <= 14 and b[x + i] == 1:flag += 1if flag == 5:print('黑棋胜')return Falseelse:flag = 0for x in range(11, -11, -1):flag = 0for i,b in enumerate(board._board):if 0 <= x + i <= 14 and b[x + i] == 2:flag += 1if flag == 5:print('白棋胜')return Falseelse:flag = 0return Truedef main():# 创建棋盘对象board = RenjuBoard()# 用于判断是下黑棋还是白棋is_black = True# pygame初始化函数,固定写法pygame.init()pygame.display.set_caption('五子棋-小游戏') # 改标题# pygame.display.set_mode()表示建立个窗口,左上角为坐标原点,往右为x正向,往下为y轴正向screen = pygame.display.set_mode((640,640))# 给窗口填充颜色,颜色用三原色数字列表表示screen.fill([125,95,24])board.draw(screen)  # 给棋盘类发命令,调用draw()函数将棋盘画出来pygame.display.flip()  # 刷新窗口显示running = True# while 主循环的标签,以便跳出循环while running:# 遍历建立窗口后发生的所有事件,固定写法for event in pygame.event.get():# 根据事件的类型,进行判断if event.type == pygame.QUIT:running = Falseelif event.type == pygame.KEYUP:pass# pygame.MOUSEBUTTONDOWN表示鼠标的键被按下elif event.type == pygame.MOUSEBUTTONDOWN and \event.button == 1:# button表示鼠标左键x, y = event.pos  # 拿到鼠标当前在窗口上的位置坐标# 将鼠标的(x, y)窗口坐标,转化换为棋盘上的坐标row = round((y - 40) / 40)col = round((x - 40) / 40)if board.move(row, col, is_black):is_black = not is_blackscreen.fill([125, 95, 24])board.draw(screen)pygame.display.flip()# 调用判断胜负函数if not is_win(board):#breakrunning = Falsepygame.quit()if __name__ == '__main__':main()

Python简短代码实现五子棋小游戏。。。相关推荐

  1. python博弈树实现AI五子棋小游戏

    python博弈树实现AI五子棋小游戏 运行比较慢,后续优化. 完整项目代码可从 https://github.com/hfq0219/wuziqi.git 下载. 功能有选择先后手和先手禁手规则. ...

  2. python 一行代码实现童年小游戏

    第一步,安装freegames库 命令: pip install freegames (python 环境) conda install freegames (anaconda环境) 第二步,查看fr ...

  3. 用python实现简易控制台五子棋小游戏

    finish = False # 游戏是否结束 flagNum = 1 # 当前下棋者标记 flagch = '*' # 当前下棋者棋子 x = 0 # 当前棋子的横坐标 y = 0 # 当前棋子的纵 ...

  4. python五子棋代码_python实现五子棋小游戏

    本文实例为大家分享了python实现五子棋小游戏的具体代码,供大家参考,具体内容如下 暑假学了十几天python,然后用pygame模块写了一个五子棋的小游戏,代码跟有缘人分享一下. import n ...

  5. Python:五子棋小游戏

    临近期末考试,班主任把所有的不参与考试的副科课程全都停了,天天语数外历史物理,实在是无聊,同学们便在课间互相约战五子棋,棋盘便是平时写作业用的玛丽大号写字本,棋子就是xo,不到两个星期,我就成功地用完 ...

  6. Python五子棋小游戏源代码,支持人机对战和局域网对战两模式

    Python五子棋小游戏源代码,支持人机对战和局域网对战两模式,程序运行截图: 核心程序代码 WuZi.py ''' Function:五子棋小游戏-支持人机和局域网对战 Author:Charles ...

  7. [Python教程入门教程]Python五子棋小游戏实例分享

    本文实例为大家分享了Python实现五子棋小游戏的具体代码,供大家参考,具体内容如下 使用的库 pygame.pyautogui 流程简述 1.画棋盘 设置网格间隔40px ,留白 80 px ,与网 ...

  8. python小游戏代码大全-20行python代码的入门级小游戏的详解

    背景: 作为一个python小白,今天从菜鸟教程上看了一些python的教程,看到了python的一些语法,对比起来(有其他语言功底),感觉还是非常有趣,就随手添了一点内容,改了一个小例程,当着练练手 ...

  9. c++编写手机小游戏代码_玩过自己开发的贪吃蛇吗?点这里,教你用Python写一个贪吃蛇小游戏!(附源代码)...

    后台回复'0816',加入Python交流群~ 往日回顾:Python必读好书,这9本份量十足~ 本文代码的实现效果,获取源代码,请直接滑到文末~都说Python除了生孩子,什么都能干.咱们今天,就用 ...

最新文章

  1. CSS实现强制换行-------Day 78
  2. 擒贼先擒王,简单谈一下JavaScript作用域链(Scope Chain)
  3. OpenCV在ARM上的移植
  4. python strftime格式化显示_Python 格式化输出时间字符串函数 strftime
  5. boost::fusion::pop_front用法的测试程序
  6. 指令篇: 查看系统版本信息___uname
  7. ubuntu install baidu inputmethod
  8. 20145207 《Java程序设计》第4周学习总结
  9. Zookeeper集群搭建(配置详解)
  10. mysql.sock问题
  11. 学习C++,知识点太多记不住怎么办?
  12. Conda solving environment一晚上还不能完成有解吗?
  13. iOS中AutoLayout自动布局,自适应高度
  14. mac安装mysql出错_Mac 安装MySQL过程遇到的问题
  15. X509 PKCS7 PKCS12
  16. 微信公众号自定义菜单创建
  17. 科普|股东需要对企业债务承担连带责任
  18. IM 去中心化概念模型与架构设计
  19. 简单通俗易懂 汽车入门知识图解大集合
  20. CSP 202203-2出行计划

热门文章

  1. 史上最全电子元器件知识讲解
  2. 各种编程语言学习网站汇总【精品】
  3. Activity 左滑退出
  4. 67.220.92.12 forum index.php,index.asp
  5. 【Linux】Linux常见指令
  6. 怎么样提高青少年的口才能力?
  7. 如何手工关闭有漏洞的端口----分步详解
  8. 苹果大力扩张Apple Pay 即将在韩国等地推出
  9. 猪八戒网创始人朱明跃:蛰伏9年明白三件事
  10. Interaction Diagrams