用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、游戏存盘;

  • 概要设计

  1. 棋盘类

  2. 提示类

  3. 整体类

  • 详细设计

提示类:

Class movie

{

构造函数:

初始化QTimer *timer

设置先画红棋子或蓝棋子的标志flag = 0

连接信号timer和槽update()

 

Slot:Myslotint FLAG

根据传进的FLAG判断该哪个棋子在走

该红棋子走时,

红白开始闪烁

蓝白停止闪烁

该蓝棋子走时

红白停止闪烁

蓝白开始闪烁

 

绘图函数paintevent

flag = 0 时画红旗子或蓝棋子(再根据color决定到底画蓝还是红),画完 flag 1

flag = 1时画白棋子,画完置 0

 

私有成员 int color

color = 0表示画红旗子,color = 1 画蓝棋子

}

 

 

棋盘类:

class chessboard

{

构造函数:

初始化棋盘,在期盼中间画上四个棋子

设置红方先走

设置默认情况是人与人之间的对战

设置棋盘的背景颜色

 

paintevent

paintChessboard()

画棋盘,棋盘大小能随窗口的改变而改变:分窗口的高比宽长和 高比宽短两种情况;

intichessboard()

测试,先在棋盘上画棋子

同样由窗口的宽和高分两种情况,同时根据数组chessnum8】【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 skipplaywithPCnewgame 分别代表 退出、跳过、人机对战、重 新开始的四个按钮

棋盘中间的两侧放上提示的棋子,闪烁方下棋

棋盘放在中间

}

 

  • 编码

  • 测试

  • 维护

程序源代码 链接:

 

 http://download.csdn.net/source/1237678

 

环境:

RedHat 9.0  

Qt 4.3.5 

g++ RedHat--linux 3.2.2-5 

vi 6.1.320

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值