一、效果展示

二、功能介绍

五子棋是一种两人对弈的纯策略型棋类游戏。五子棋有两种玩法。玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。玩法二:自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。本代码实现的是第一种玩法。

三、开发环境搭建

首先安装Python,再安装pip命令,最后安装pygame模块。

目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。

  1. 从python官网:https://www.python.org/ 下载

    ​​​

  2. pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。pip 官网: https://pypi.org/project/pip  注意:Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具。

你可以通过以下命令来判断是否已安装:pip --version

3. 安装pygame:pip install pygame

四、关键代码

1. 设置棋盘宽高颜色,棋子尺寸等样式

SIZE = 30  # 棋盘每个点之间的间隔
Line_Points = 19  # 棋盘每行/每列点数
Outer_Width = 20  # 棋盘外宽度
Border_Width = 4  # 边框宽度
Inside_Width = 4  # 边框跟实际的棋盘之间的间隔
Border_Length = SIZE * (Line_Points - 1) + Inside_Width * 2 + Border_Width  # 边框线的长度
Start_X = Start_Y = Outer_Width + int(Border_Width / 2) + Inside_Width  # 网格线起点(左上角)坐标
SCREEN_HEIGHT = SIZE * (Line_Points - 1) + Outer_Width * 2 + Border_Width + Inside_Width * 2  # 游戏屏幕的高
SCREEN_WIDTH = SCREEN_HEIGHT + 200  # 游戏屏幕的宽Stone_Radius = SIZE // 2 - 3  # 棋子半径
Stone_Radius2 = SIZE // 2 + 3
Checkerboard_Color = (0xE3, 0x92, 0x65)  # 棋盘颜色
BLACK_COLOR = (0, 0, 0)
WHITE_COLOR = (255, 255, 255)
RED_COLOR = (200, 30, 30)
BLUE_COLOR = (30, 30, 200)

2. 绘制棋盘

# 画棋盘
def _draw_checkerboard(screen):# 填充棋盘背景色screen.fill(Checkerboard_Color)# 画棋盘网格线外的边框pygame.draw.rect(screen, BLACK_COLOR, (Outer_Width, Outer_Width, Border_Length, Border_Length), Border_Width)# 画网格线for i in range(Line_Points):pygame.draw.line(screen, BLACK_COLOR,(Start_Y, Start_Y + SIZE * i),(Start_Y + SIZE * (Line_Points - 1), Start_Y + SIZE * i),1)for j in range(Line_Points):pygame.draw.line(screen, BLACK_COLOR,(Start_X + SIZE * j, Start_X),(Start_X + SIZE * j, Start_X + SIZE * (Line_Points - 1)),1)

3. 胜负判定

 def _get_direction_score(self, point, x_offset, y_offset):count = 0   # 落子处我方连续子数_count = 0  # 落子处对方连续子数space = None   # 我方连续子中有无空格_space = None  # 对方连续子中有无空格both = 0    # 我方连续子两端有无阻挡_both = 0   # 对方连续子两端有无阻挡# 如果是 1 表示是边上是我方子,2 表示敌方子flag = self._get_stone_color(point, x_offset, y_offset, True)if flag != 0:for step in range(1, 6):x = point.X + step * x_offsety = point.Y + step * y_offsetif 0 <= x < self._line_points and 0 <= y < self._line_points:if flag == 1:if self._checkerboard[y][x] == self._my.Value:count += 1if space is False:space = Trueelif self._checkerboard[y][x] == self._opponent.Value:_both += 1breakelse:if space is None:space = Falseelse:break   # 遇到第二个空格退出elif flag == 2:if self._checkerboard[y][x] == self._my.Value:_both += 1breakelif self._checkerboard[y][x] == self._opponent.Value:_count += 1if _space is False:_space = Trueelse:if _space is None:_space = Falseelse:breakelse:# 遇到边也就是阻挡if flag == 1:both += 1elif flag == 2:_both += 1if space is False:space = None

五、启动命令

启动游戏:python aivsman.py

重置游戏: 任一方获胜后,按esc或enter键复原初始状态

六、源码下载

【源码】【G1】基于Python+pygame实现的人机AI对战五子棋游戏.zip-其他文档类资源-CSDN下载

【定制开发】【M3】基于Python+pygame实现的人机AI对战五子棋游戏(保姆级入门讲解)相关推荐

  1. autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术

    AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...

  2. 学习《Flask Web开发:基于Python的Web应用开发实战》分享

    学习<Flask Web开发:基于Python的Web应用开发实战>分享一直在说学习Python,对同事,对朋友,都说我正在学习Python,这无形给自己一定的压力,促使自己要去学习,进步 ...

  3. 《FlaskWeb开发:基于Python的Web应用开发实战》笔记

    开源库的cdn加速 可以在这里直接搜索复制script链接 https://www.bootcdn.cn/ requirements.txt文件的生成与使用 生成requirements文件:$ pi ...

  4. 《Flask Web开发:基于Python的Web应用开发实战》笔记(原创)

    内容提要 在学习"狗书"<Flask Web开发:基于Python的Web应用开发实战>的过程中,一直遇到各种各样的坑.该书的第一部分是"Flask简介&qu ...

  5. Flask Web开发:基于Python的Web应用开发实战

    <Flask Web开发:基于Python的Web应用开发实战> 虽然简单的网站(Flask+Python+SAE)已经上线,但只是入门.开发大型网站,系统地学习一遍还是有必要的. 201 ...

  6. 基于Python pygame简易版斗兽棋小游戏源代码

    基于Python pygame简易版斗兽棋小游戏源代码 游戏规则如下: 胜利条件: 1.吃掉对方全部棋子 2.走入对方兽穴(不可进入自己洞穴) 吃法: 1.象>狮>虎>豹>狼& ...

  7. 基于java平台和运用5种设计模式的五子棋游戏

    软件设计模式--基于java平台和运用5种设计模式的五子棋游戏 点击链接查看文档代码 二.设计要求 仿照教材上面围棋软件的设计思路,设计一款五子棋,采用至少5种设计模式. 三.引言 五子棋相传起源于四 ...

  8. python自动化测试开发_基于python的selenium2自动化测试从基础到实战(Python3、selenium2、自动化测试、web测试)...

    Selenium2是目前比较流行的一款针对web页面测试的自动化测试工具,他的前身是Selenium .Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozi ...

  9. python对abaqus本构二次开发_基于Python的Abaqus二次开发实例讲解

    第 1 页 共 11 页 基于 Python 的 Abaqus 二次开发实例讲解 ( asian58 2013.6.26 ) 基于 Python 的 Abaqus 的二次开发便捷之处在于: 1 .所有 ...

  10. 基于python的abaqus二次开发_基于PYTHON的ABAQUS二次开发实例讲解

    第 1 页 共 11 页 基于 Python 的 Abaqus 二次开发实例讲解 ( asian58 2013.6.26 ) 基于 Python 的 Abaqus 的二次开发便捷之处在于: 1 .所有 ...

最新文章

  1. MaxCompute动态更新表中某个(多个)字段的数据
  2. Maven在Windows上的安装与配置
  3. go get 命令提示没有权限问题解决
  4. 哈夫曼编码c语言论文,哈夫曼编码的实现及应用论文.doc
  5. LeetCode 链表的插入排序
  6. 使用IDEA在引入Schema空间时报错URI is not registered解决方法
  7. (06)Vivado约束基础
  8. git获得当前分支url_笔记本拿出来!软件工程师必须要知道的Git命令语句大汇总...
  9. 团队作业3 需求分析与系统设计
  10. php 通过 谷歌邮箱发送邮件
  11. 生活在压力下不得不读的好书---《此生未完成》读后感
  12. 是香蕉还是芭蕉,芭蕉和香蕉的区别
  13. 本科阶段学习经验分享(未整理)
  14. 【PostgreSQL-15的 \watch命令】
  15. C++ boost库中的sp_counted_base实现解析
  16. android ca证书的安装,如何在Android上以编程方式安装CA证书,无需用户交互
  17. 虚拟偶像2022:复制下一个A-SOUL?
  18. 学人工智能需要什么学历?AI学历要求
  19. 万魔手游豆 1MORE × omthing AirFree Buds
  20. 软件测试需要学什么(软件测试人员怎么入行)?

热门文章

  1. TeeChart Pro Activex 2022.1/32/64/Crack
  2. Linux系统版本大全
  3. 【转载】扫描渗透等工具介绍
  4. 如果可以不上班《不上班的23种活法》免费下载及经典语录
  5. 计算机课用英语怎么说cute,原来英语可以如此cute
  6. pinterest类网站差异化发展 时光轴成稀饭网突围利器
  7. linux脚本对登录密码加密,shell 脚本明文密码加密小工具
  8. 45分布式电商项目 - SpringDataSolr 入门例子
  9. 程序员这口饭,职业规划解决方案---程序员职业规划(二)
  10. puk码怎么查询_手机PUK码怎么查询?使用PUK码解锁手机电话SIM/USIM卡的教程