用Qt 编写黑白棋程序
用Qt 编写黑白棋程序
前言:这是继三天学习c++后,学习了两天Qt 做的项目。
软件设计开发流程:
瀑布模型:
可行性分析
时间:
共8天(其中前两天学习Qt3.1 与Qt4.3.5,中间编程,最后的两天用来移植到arm板上运行)
经济:
无任何经济问题
技术:
学过三天c++,两天的Qt
借助Qt 的assistant ,应该没有什么大的问题
需求分析
基本功能:1、下棋;2、计数;3、提示该谁下棋;4、跳过;5、棋子、背景图片;6、胜负判断;7、重新开始;
扩展功能:8、音效;9、背景音乐;10、人机对战;11、联网;13、难度设置;14、历史记录;15、窗口菜单;16、游戏大厅;17、计时;;18、双方起名;19、重新开始;20、游戏说明;21、开场动画;22、悔棋;23、游戏存盘;
概要设计
棋盘类
提示类
整体类
详细设计
提示类:
Class movie
{
构造函数:
初始化QTimer *timer
设置先画红棋子或蓝棋子的标志flag = 0
连接信号timer和槽update()
Slot:Myslot(int FLAG)
根据传进的FLAG判断该哪个棋子在走
该红棋子走时,
红白开始闪烁
蓝白停止闪烁
该蓝棋子走时
红白停止闪烁
蓝白开始闪烁
绘图函数paintevent
flag = 0 时画红旗子或蓝棋子(再根据color决定到底画蓝还是红),画完 flag 置 1
flag = 1时画白棋子,画完置 0
私有成员 int color :
color = 0表示画红旗子,color = 1 画蓝棋子
}
棋盘类:
class chessboard
{
构造函数:
初始化棋盘,在期盼中间画上四个棋子
设置红方先走
设置默认情况是人与人之间的对战
设置棋盘的背景颜色
paintevent :
paintChessboard()
画棋盘,棋盘大小能随窗口的改变而改变:分窗口的高比宽长和 高比宽短两种情况;
intichessboard()
测试,先在棋盘上画棋子
同样由窗口的宽和高分两种情况,同时根据数组chessnum【8】【8】的值分情况画上棋子:值为1 代表红棋子,2 代表蓝棋子,0 代表此处为空。
鼠标事件(下棋)mousepressevent()
取得鼠标点击处的屏幕坐标
根据屏幕坐标计算相应的chessnum【】【】数组的下标,也分宽高的长短不同两种情况
调用下棋规则函数,若能在此处下棋,下棋,把标志flag 置给对方
统计此时双方的棋子个数,发射信号到相应的lcd上
判断游戏是否结束,弹出最终的胜负信息
slot:
restartgame()
再次初始化棋盘,设好各相应的标志
skip()
跳过功能,己方无棋子可走时把下棋的标志置给对方
同时改变相应的提示信息
playwithpc()
人机对战
signals:
redNumChanged()
发射红棋子数量
blueNumChanged()
发射蓝棋子数量
成员函数:
redChessmanNum()
统计红棋子数量,发给相应的lcd 显示
blueChessNum()
统计蓝棋子的数量,发给相应的lcd
playChess(int i, int j, int FLAG) , 其中i, j , FLAG 分别代表横坐标,纵坐标,棋子的标志位
下棋规则
分八个方向判断此处是否能下棋
playWithPC()
人机对战
遍历数组,取出值为0 的元素,根据下棋规则判断此处能否下棋,能则下,把下棋标志置给人,返回
对象成员QMessageBox
结束时弹出相应的胜负消息
整体类
class gameboard
{
棋盘上的两侧放上两个计数的lcd;
lcd下方
棋盘的下方放quit 、skip、playwithPC、newgame 分别代表 退出、跳过、人机对战、重 新开始的四个按钮
棋盘中间的两侧放上提示的棋子,闪烁方下棋
棋盘放在中间
}
编码
测试
维护
程序源代码 链接:
http://download.csdn.net/source/1237678
环境:
RedHat 9.0
Qt 4.3.5
g++ RedHat--linux 3.2.2-5
vi 6.1.320
用Qt 编写黑白棋程序相关推荐
- 【转】Qt编写串口通信程序全程图文讲解
Qt编写串口通信程序全程图文讲解 本文章原创于www.yafeilinux.com 转载请注明出处. (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或 ...
- Windows下Qt编写Android应用程序的环境搭建记录
目录 前言 配置开发环境 安装JDK1.8 安装SDK 安装NDK Qt配置OpenCV C++&Java混合编程 结语 前言 由于要在手机上实现一些应用,例如部署目标检测模型.添加单目测距定 ...
- c语言大作业黑白棋,C语言编写黑白棋游戏源代码.doc
C语言编写的黑白棋游戏源代码 /*3.3.4 源程序*/ #include "graphics.h" /*图形系统头文件*/ #define LEFT 0x4b00 /*光标左键值 ...
- 发布我的下棋作品--Monkey黑白棋(AI还可以,战胜了不少其它的黑白棋程序)
采用了AlaphBeta剪枝法,深度4至8 . 本软件由C#2005开发,以下是界面: 持白子的话,能够战胜不少黑白棋的软件(当然,像"伤心黑白棋"这样的高手,我的程序是差一截). ...
- Qt编写串口通信程序全程图文讲解
(说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或直接用源码编写,程序稍有不同,请自己改动.) 在Qt中并没有特定的串口控制类,现在大部分人使用的是第三 ...
- Qt编写守护程序保证程序一直运行(开源)
没有任何人敢保证自己写的程序没有任何BUG,尤其是在商业项目中,程序量越大,复杂度越高,出错的概率越大,尤其是现场环境千差万别,和当初本地电脑测试环境很可能不一样,有很多特殊情况没有考虑到,如果需要保 ...
- qt编写的android程序在android系统中运行,中文显示乱码的解决方法
在main函数中添加 QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); QTextCodec::setCodecForTr(QTextC ...
- java drawboard_学习一个月JAVA写的黑白棋程序(欢迎高手来指点)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 public void clean(Graphics g) //清屏 { g.setColor(0xffffff); g.fillRect(0,0,180 ...
- windows下如何使用QT编写dll程序 .
Windows 下如何使用 QT 编写 dll 程序 因为 QT 必须有调用 QApplication 的 exec 方法,这样才能产生消息循环, QT 的程序才可以运行.所以说如果我们使用了 QT ...
最新文章
- Java线上问题排查思路及Linux常用问题分析命令学习
- python多态的例子_Python编程之多态用法实例详解
- [sqlserver脚本]查看指定SQL语句生成了哪些执行计划
- tensorflow随笔-二分法求解一元方程
- boost::type_erasure::tuple相关的测试程序
- 每天学习点--------第五天(2017-10-9) 摘要: 常用的集合
- 收藏 | Python必备技能之 25个Matplotlib常用代码!
- Yii2语言国际化配置Twig翻译解决方案
- Java设计模式开篇
- 【OpenCV学习笔记】【函数学习】十九(感兴趣区域)
- 华为NP课程笔记6-路由控制
- 新增汉字英文数字标点转区位码api
- 【Android -- 开源库】BottomNavigation 的基本使用
- 使用CLion开发STM32时无法生成hex文件的解决办法
- c语言海报,竞选海报 c语言
- 10053 事件详解
- 史上最著名的10个思想实验(思想解放运动)
- 超牛逼的性能调优神器 — 火焰图
- 2012.4.29~2012.5.1平谷(二)
- 从零开始学习机器学习五:决策树算法特征工程