概述
本项目实现了一个带GUI的五子棋程序, 源码可以从github获取. 除此之外, 源码目录下还有一个命令行式的五子棋代码.
特色
- 界面使用
tkinter 设计; - 提供了一个简单的Minxmax博弈算法;
- 游戏双方均可设置为通过鼠标人工下子;
- 游戏双方均可设置为AI下子;
- 游戏支持自动重复开局(方便测试AI算法);
- 方便嵌入其他算法;
流程
- 运行
gobang.py , 启动程序; - 点击菜单"Option", 切换"player 0"和"player 1"使用的算法. “player 0” 执黑子(先手), "player 1"执白子(后手), 其中, "ManualAgent"为人工下子(通过鼠标左键点击), "RandomAgent"为随机在界面空白位置下子, “Minimax"为 采用极大极小值算法. 默认都为"人工下子”.
- 如果需要重复开始游戏(用于测试算法性能), 选择菜单"Game| repeat"中的重复次数, 默认不重复.
- 点击菜单"Game| Start", 开始游戏.
- 在游戏过程中, 可以点击菜单"Game|Restart", 重启游戏.
文件组成
文件 | 说明 |
---|
agent.py | 包含 Agent meta类 | gobang_cli.py | 命令行式的五子棋程序. | gobang.py | 主要包含带GUI的五子棋类Gobang , 该类继承自mainwindow.Mainwindow . | mainwindow.py | 包含主窗体类Mainwindow . | minimax.py | 极大极小值算法类Minimax 定义, 该类继承自agent.Agent | random_agent.py | 随机下棋的agent类RandomAgent , 该类继承自agent.Agent | utils.py | 工具类和函数. 包含检查是否获胜的check 函数, 棋盘显示函数show_board , 以及表示棋子的枚举类Piece . |
关于嵌入你的AI算法
你可以很容易地嵌入你的AI算法. 所有AI算法应该继承自 agent.Agent 类, 可以参考 random_agent.RandomAgent 类 和 minimax.Minimax 类的设计. 然后将你的AI算法添加到 gobang.py 中的player_agents 列表即可.
期待您通过github分享您的AI算法.
|