# 九联棋 NineChess
## 古老的游戏
### 莫里斯九子棋
![莫里斯九子棋](./screenshot/莫里斯九子棋.PNG "Optional title")
九子棋(Nine Men's Morris)是一个非常古老的智力的游戏。其历史甚至可以追溯到公元前1400多年的古埃及时代。
+ 棋盘有24个格点,对弈双方各有九个棋子,轮流下到棋盘的空位上。
+ 如果一方有三个棋子连成一线,就可以选择吃掉对方的一个棋子。被吃的棋子不可以是位于对方所形成的三连之内,除非对方所有棋子都形成了三连。
+ 在九个棋子都布放到棋盘上以后,可以沿棋盘上的线条移动到相邻的位置来形成三连以吃掉对方的棋子。一个三连可以开开合合重复使用。如果一方所剩下的棋子只有三个时,棋子可以飞到任意空位。
+ 当一方的棋子少于三枚,则告负,游戏结束。
此外,国内还有几个九子棋的变种:成三棋、打三棋(12子棋)、九连棋等。
### 成三棋
+ 与莫里斯九子棋类似,但一方仅剩3子时不能飞子。
### 打三棋(12子棋)
![12子棋](./screenshot/12子棋.PNG "Optional title")
1. 双方各12颗子,棋盘有斜线;
2. 摆棋阶段被提子的位置不能再摆子,直到走棋阶段;
3. 摆棋阶段,摆满棋盘算先手负;
4. 走棋阶段,后摆棋的一方先走;
5. 一步出现几个“三连”就可以提几个子;
6. 其它规则与成三棋基本相同。
### 九连棋
![九连棋](./screenshot/九连棋.PNG "Optional title")
1. 规则与成三棋基本相同,只是它的棋子有序号;
2. 相同序号、位置的“三连”不能重复提子;
3. 走棋阶段不能行动(被“闷”),则由对手继续走棋;
4. 一步出现几个“三连”就可以提几个子。
## 应用程序说明
### 用户界面
![GUI](./screenshot/GUI.PNG "Optional title")
### 系统支持
+ Windows版支持64位Windows 7、8、10系统,不支持32位系统及Windows XP。
+ Linux版支持Debian系列(如Ubuntu、Deepin等等)。
### 程序功能
1. 含四种不同规则的游戏(成三棋,打三棋,九连棋,莫里斯九子棋);
2. 鼠标放在规则菜单下各规则项,有会有详细的规则提示;
3. 可以限制时间,限制步数;
4. 落子音效,落子动画;
5. 行棋状态栏提示;
6. 棋谱的前后遍历(可以悔棋);
7. 棋谱的自动演示;
8. 棋局转变(翻转,镜像,旋转),棋子颜色交换;
9. 对战电脑,及不同AI引擎对战(待完善);
10. 联网对战(待完成);
11. 文本棋谱显示,打开及保存;
12. 其它。
## 源码说明
### 软件构架
+ GUI框架:Qt5.11,QT5大版本下均可通用。
+ 编译器:MSVC2017,MSVC2013及以上版本可用。
+ 源文件编码:所有头文件(* .h)中和源文件(*的.cpp)采用UTF-8 + BOM编码格式的.pro文件等采用UTF-8无BOM编码。
+ 本程序采用MVC(模型 - 视图 - 控制器)设计规范,对应类如下:
```
MVC
├─Model
│ ├─NineChess: 用标准C++写的棋类模型,处理下棋过程
│ └─NineChessAi_ab: 用标准C++写的alpha-beta剪枝算法AI模型,模仿人类下棋
├─View
│ ├─NineChessWindow: 从QMainWindow派生的主窗口类,由Qt自动生成
│ ├─ManualListView: 从QListView派生的列表框,用于显示棋谱
│ ├─GameView: 从QGraphicsView派生的视图框,用于显示棋局
│ ├─GameScene: 从QGraphicsScene派生的场景类
│ ├─BoardItem: 从QGraphicsItem派生的棋盘图形类
│ └─PiecedItem: 从QGraphicsItem派生的棋子图形类
└─Controller
├─GameController: 从QObject派生的控制类
└─AiThread: 从QThread派生的AI线程类
```
这个程序用到了很多Qt的特性,其模式后期可以扩展到各种棋类游戏。
### AI算法说明
相见Wiki目录下的《Alpha-Beta剪枝算法在直棋中的运用》
### 许可协议
**本项目所有类代码全部原创。**
详见文末Gitee项目内的License文件。请取用的朋友尊重知识产权。
### 更新历史
详见文末Gitee项目内的History文件。
## 作者声明
由于本人非IT科班出身,未经专业培训,也没有现成的QT棋类游戏源码做参考,源码中肯定有很多不合理,不规范之处。望好心的前辈不吝赐教。对于同道初学者,可以参考,相互学习,共同进步。
多年前上大学那会儿,笔者就打算做这么个程序出来,然而条件比较艰苦:
一来没有老师教,课上只学了Ç语言和VB,C++是笔者自学的,一个人啃晦涩过时的MFC;
二来我穷到连个电脑都没有......
三嘛,就是贪玩......
工作之后有条件了,我又自学了C#和Qt,但都很肤浅,没深入学,只用来做几个小工具而已。
这个项目,我在2013年用标准C++写了个模型类,然后扔了不管;2015年自学Qt写了个简单的界面,又扔了不管;直到2018年5月才重新开始做。
如果你发现本程序有什么问题或好的建议,请与本人联系。我的邮箱是:liuweilhy@163.com
> by liuweilhy 2018年11月26日
## 项目源码及发行版下载
+ 源码下载(Gitee):[https://gitee.com/liuweilhy/NineChess](https://gitee.com/liuweilhy/NineChess)
+ 发行版下载(Gitee),请选择最新版:[https://gitee.com/liuweilhy/NineChess/releases](https://gitee.com/liuweilhy/NineChess/releases)
+ 如果你没有Gitee账号,可以在本人CSDN资源下载(非最新版):(链接待补充)
+ 如果你以上都没有,那么用百度云盘(非最新版):(链接待补充)
没有合适的资源?快使用搜索试试~ 我知道了~
NineChess九连棋(成三棋,morris九子棋)
共94个文件
png:46个
h:12个
wav:10个
需积分: 50 16 下载量 193 浏览量
2018-12-23
22:25:05
上传
评论
收藏 708KB ZIP 举报
温馨提示
成三棋、九连棋、莫里斯九子棋的源码。GUI框架Qt5,在Windows 10和Deepin Linux平台下编译通过。详细介绍请看本人博客及开源项目首页。
资源推荐
资源详情
资源评论
收起资源包目录
NineChess-v1.5.zip (94个子文件)
NineChess
范例棋谱.txt 1KB
Readme.md 6KB
History.txt 677B
NineChess
resource.h 1KB
ninechesswindow.qrc 2KB
NineChess.rc 2KB
src
ninechess.h 11KB
gamescene.cpp 3KB
ninechessai_ab.cpp 13KB
pieceitem.cpp 4KB
ninechesswindow.cpp 27KB
graphicsconst.h 360B
gameview.cpp 3KB
gamescene.h 1KB
main.cpp 194B
ninechessai_ab.h 3KB
aithread.h 1KB
gameview.h 544B
pieceitem.h 2KB
boarditem.cpp 4KB
gamecontroller.cpp 26KB
aithread.cpp 3KB
manuallistview.h 3KB
ninechess.cpp 62KB
boarditem.h 1KB
gamecontroller.h 4KB
ninechesswindow.h 2KB
ninechess.vcxproj.user 1KB
ninechess.pro 1KB
ninechesswindow.ui 28KB
ninechess.sln 1KB
ninechess.ico 90KB
.qmake.stash 1KB
ninechess.vcxproj 50KB
ninechess.pro.user 23KB
resources
sound
warning.wav 117KB
remove.wav 3KB
newgame.wav 28KB
capture.wav 6KB
loss.wav 8KB
choose.wav 7KB
move.wav 6KB
drog.wav 6KB
forbidden.wav 12KB
win.wav 31KB
image
black_piece.png 5KB
donate.png 62KB
white_piece.png 6KB
xy.png 1003B
board.png 19KB
current.png 926B
background.png 33KB
remove.png 292B
icon
White.png 636B
Play.png 355B
LegendHS.png 650B
Black.png 380B
Error.png 865B
Last.png 515B
FlipHorizontalHS.png 560B
RestartHS.png 473B
SaveHS.png 595B
Pause.png 297B
Previous.png 420B
Refresh.png 633B
FullScreenHS.png 574B
LeftHS.png 685B
EditTableHS.png 665B
PrimaryKeyHS.png 472B
1.png 228B
2.png 528B
NewDocumentHS.png 574B
First.png 527B
Invert.png 869B
RightHS.png 672B
EditInformationHS.png 621B
BreakpointHS.png 736B
Web.png 3KB
DocumentHS.png 390B
ActualSizeHS.png 757B
Next.png 427B
HomeHS.png 619B
Help.png 761B
FlipVerticalHS.png 597B
OptionsHS.png 572B
OpenHS.png 743B
Request.png 773B
ninechess.vcxproj.filters 9KB
Licence.txt 597B
.gitignore 5KB
screenshot
九连棋.PNG 43KB
GUI.PNG 95KB
12子棋.PNG 50KB
莫里斯九子棋.PNG 51KB
共 94 条
- 1
资源评论
liuweilhy
- 粉丝: 31
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 探索tecreate:软件开发的未来之星.zip
- 打标机项目C#源码连接扫码
- 基于SSM的房屋租赁系统的设计与实现
- xyctf:从入门到精通的实用指南.zip
- mmqrcode1714153659780.png
- Screenshot_2024-04-27-06-08-58-486_com.baidu.xin.aiqicha.jpg
- 基于Javaweb+Tomcat+MySQL的大学生公寓管理系统+sql文件.zip
- 实训作业基于javaweb的订单管理系统源码+数据库+实训报告.zip
- 多机调度问题贪心算法基于最小堆和贪心算法求解多机调度问题.zip
- 基于同态加密技术的匿名电子投票系统源码.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功