古老的游戏

莫里斯九子棋

九子棋(Nine Men's Morris)是一个非常古老的智力的游戏。其历史甚至可以追溯到公元前1400多年的古埃及时代。

  1. 棋盘有24个格点,对弈双方各有九个棋子,轮流下到棋盘的空位上。
  2. 如果一方有三个棋子连成一线,就可以选择吃掉对方的一个棋子。被吃的棋子不可以是位于对方所形成的三连之内,除非对方所有棋子都形成了三连。
  3. 在九个棋子都布放到棋盘上以后,可以沿棋盘上的线条移动到相邻的位置来形成三连以吃掉对方的棋子。一个三连可以开开合合重复使用。如果一方所剩下的棋子只有三个时,棋子可以飞到任意空位。
  4. 当一方的棋子少于三枚,则告负,游戏结束。

此外,国内还有几个变种:​​成三棋,打三棋(12子棋),九连棋等。

成三棋

与莫里斯九子棋类似,但一方仅剩3子时不能飞子。

打三棋(12子棋)

  1. 双方各12颗子,棋盘有斜线;
  2. 摆棋阶段被提子的位置不能再摆子,直到走棋阶段;
  3. 摆棋阶段,摆满棋盘算先手负;
  4. 走棋阶段,后摆棋的一方先走;
  5. 一步出现几个“三连”就可以提几个子;
  6. 其它规则与成三棋基本相同。

九连棋

  1. 规则与成三棋基本相同,只是它的棋子有序号;
  2. 相同序号,位置的“三连”不能重复提子;
  3. 走棋阶段不能行动(被“闷”),则由对手继续走棋;
  4. 一步出现几个“三连”就可以提几个子。

应用程序说明

用户界面

系统支持

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的特性,其模式后期可以扩展到各种棋类游戏。

许可协议

本项目所有类代码全部原创。 
详见文末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

  • 发行版下载(Gitee),请选择最新版:https://gitee.com/liuweilhy/NineChess/releases

  • 如果你没有Gitee账号,可以在本人CSDN资源下载(非及时更新):https://download.csdn.net/download/liuweilhy/10871298

  • 如果你以上都没有,那么用百度云盘(非及时更新):https://pan.baidu.com/s/1NZnmAUozbPt9K04fTouxMA

QT做的成三棋、打三棋、九连棋、莫里斯九子棋应用程序及其源码相关推荐

  1. 成三棋、九子棋、十二子棋

    目录 成三棋 九子棋 十二子棋 成三棋 apk下载:资源分享汇总 (这个apk做的很差,有重大bug) 规则: 1.游戏分两个阶段――下棋阶段和走棋阶段.在第一阶段(下棋阶段)下棋双方各有9颗棋子,将 ...

  2. [Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句

    [Qt教程] 第23篇 数据库(三)利用QSqlQuery类执行SQL语句 楼主  发表于 2013-5-15 22:39:29 | 查看: 813| 回复: 0 利用QSqlQuery类执行SQL语 ...

  3. 古之成大事者必经三境界--王国维《人间词话》

    古今成大事者 必经过三种境界 王国维在<人间词话>说: "古今之成大事业.大学问者,必经过三种之境界:'昨夜西风凋碧树.独上高楼,望尽天涯路'.此第一境也.'衣带渐宽终不悔,为伊 ...

  4. [Qt教程] 第29篇 XML(三)Qt中的SAX

    [Qt教程] 第29篇 XML(三)Qt中的SAX 楼主  发表于 2013-5-21 22:27:59 | 查看: 615| 回复: 5 Qt中的SAX 版权声明 该文章原创于Qter开源社区(ww ...

  5. [Qt教程] 第33篇 网络(三)FTP(一)

    [Qt教程] 第33篇 网络(三)FTP(一) 楼主  发表于 2013-9-4 14:52:46 | 查看: 392| 回复: 8 FTP(一) 版权声明 该文章原创于作者yafeilinux,转载 ...

  6. [Qt教程] 第43篇 进阶(三)对象树与拥有权

    [Qt教程] 第43篇 进阶(三)对象树与拥有权 楼主  发表于 2013-9-12 16:39:33 | 查看: 255| 回复: 1 对象树与拥有权 版权声明 该文章原创于Qter开源社区 导语 ...

  7. 小学生计算机编程题,真题|小学组倒数第二道编程题,做不出来罚你点赞三遍!...

    原标题:真题|小学组倒数第二道编程题,做不出来罚你点赞三遍! 十年前,当我们还是小学生的时候,碰到电脑你们都会干什么? 是熟练地在网址栏输入www.4399.com,然后一个接一个的点开网页小游戏,还 ...

  8. js 把字符串转成json对象的三种方法

    js 把字符串转成json对象的三种方法 不管字符串是否含有转义字符,都能转换成 Json 对象 1, js自带的eval函数,其中需要添加小括号eval('('+str+')'); function ...

  9. 7d聚拉提的功效和原理,做完7d聚拉提三天后脸变大是怎么回事

    7d聚拉提的功效和原理,做完7d聚拉提三天后脸变大是怎么回事 7D聚拉提max是韩国上市公司CLASSY公司发布的第三代抗衰仪器,已经通过多国权威药监局安全性.有效性认证,是一款可用在面部及身体安全有 ...

  10. 香港公司做账报税需要注意这三点!

    香港蕴藏着无限商机,是通往全球经贸的平台,因而注册香港公司具有较大的优势.而香港公司注册申请下来以后,需要做账报税以维持香港公司的正常运转.为了让投资者更好地了解香港的经营环境.企业管理以及帐务税务处 ...

最新文章

  1. 22、Java Swing JTable:表格
  2. 直播回顾丨B2B 企业如何高效获客增长
  3. Java学习总结之第十一章 Java集合
  4. c语言中字符数字加'0',C语言中的NULL与转义字符'\0'以及数值0的关系
  5. 华为云开天aPaaS 上线,服务千万开发者,使能行业场景化创新
  6. java核心教程_核心Java教程
  7. cornerstone4.0下载安装
  8. 计算机操作系统-1days
  9. Layui 表单验证汇总
  10. pcd点云文件成功转成npy文件
  11. 高仿360云盘android端的ui实现,高仿360云盘android端的UI实现
  12. 【数据结构】--队列之循环队列
  13. gateway官网文档解读(六) 汇总
  14. 「兔了个兔」CSS如此之美,看我如何实现可爱兔兔LOADING页面(万字详解附源码)
  15. 微信小程序自动生成打卡海报
  16. 编程初学者必备的基础知识
  17. c++ nvcc编译CUDA程序入门示例
  18. 15个很有趣的开源项目推荐
  19. 关于pip下载很慢很慢
  20. 【泛微ecology】ecology的补丁包升级

热门文章

  1. listview优化方案
  2. 部分AMD RAID驱动程序需及时升级
  3. 实验五 Flash在线编程实验
  4. 安装Lr11.0(LoadRunner) 出现安装LoadRunner时出现:缺少vc2005_sp1_with_atl_fix_redist的解决办法
  5. 搜狗输入法精简_搜狗输入法10.10去图标精简版+9.4.21小米定制版
  6. 图像识别从零写出dnf脚本关键要点
  7. CentOS7.2安装linux版QQ
  8. 句柄详解,什么是句柄?句柄有什么用?
  9. greensock是个很不错的类库,故转载了一些关于其中类使用方法的文章。
  10. SketchUp Pro 2021 v21.0.391 草图大师安装说明