黑白棋总结文档示例.docx

上传人:b****5 文档编号:6870878 上传时间:2023-01-11 格式:DOCX 页数:14 大小:3.88MB
下载 相关 举报
黑白棋总结文档示例.docx_第1页
第1页 / 共14页
黑白棋总结文档示例.docx_第2页
第2页 / 共14页
黑白棋总结文档示例.docx_第3页
第3页 / 共14页
黑白棋总结文档示例.docx_第4页
第4页 / 共14页
黑白棋总结文档示例.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

黑白棋总结文档示例.docx

《黑白棋总结文档示例.docx》由会员分享,可在线阅读,更多相关《黑白棋总结文档示例.docx(14页珍藏版)》请在冰豆网上搜索。

黑白棋总结文档示例.docx

黑白棋总结文档示例

 

1.项目说明1

1.1项目信息1

1.2项目背景1

1.3项目目标2

1.5参考资料3

2.开发过程4

2.1.基本流程图4

2.2进度6

2.3.问题及解决6

3.总结8

4.附录10

4.1组员作品展示10

1.项目说明

1.1项目信息

项目名称

黑白棋

项目编号

007

项目经理

周文平

提交时间

2012.9.5

项目组成员

田强孙志远马进庞志龙刘群厂周文平

1.2项目背景

黑白棋,又叫反棋(Reversi)、奥赛罗棋(Othello)、苹果棋或翻转棋。

黑白棋在西方和日本很流行。

游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。

它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。

有一种说法是:

只需要几分钟学会它,却需要一生的时间去精通它。

黑白棋是19世纪末英国人发明的。

直到上个世纪70年代日本人长谷川五郎将其进行发展和推广,借用莎士比亚名剧奥赛罗(Othello)为这个游戏重新命名(日语“オセロ”),也就是现在大家玩的黑白棋。

为何借用莎士比亚名剧呢?

是因为奥赛罗是莎士比亚一个名剧的男主角。

他是一个黑人,妻子是白人,因受小人挑拨,怀疑妻子不忠一直情海翻波,最终亲手把妻子杀死。

后来真相大白,奥赛罗懊悔不已,自杀而死。

黑白棋就是借用这个黑人白人斗争的故事而命名

1.3项目目标

实现双人对战

双人对战、交替落子

实现悔棋

撤销上次落子、重新落子

实现人机对战

人落子后机器自动落子

实现网路对战(创新)

通过局域网实现两台主机之间的对战

实现网络聊天(创新)

实现华丽界面(创新)

实现窗口美化,换皮肤。

换棋盘的功能

实现提示(创新)

实现人机人人均能提示所有可下子的地方

实现托管(创新)

实现人人,人机的托管;

实现残局模式(创新)

点击残局模式,试玩残局

保存记录(创新)

下一次打开程序可以接着玩未完成的比赛

实现背景音乐(创新)

可以在下棋时一键放音乐

保存棋盘画面(创新)

可实现将棋面以图片方式保存在本地

 

1.4项目步骤

阶段一(画界面)

1、画8*8的棋盘,可以规定窗口大小,或随着窗口大小同时改变。

2、添加窗口上的其它功能部件。

3、尽量美观。

􀂾阶段二(放棋子)

1、通过鼠标点击,可以在相应的方格内画棋子。

阶段三(实现算法)

实现双人对战功能

􀂾考虑可能出现的各种情况

􀂾函数尽量独力,方便人机对战的实现

2、实现悔棋功能

3、实现人机对战功能

1.5参考资料

⏹相关文档

文档

简介

Qt课件PDF

娟姐Qt课件

Qt帮助文档

QtCreator自带帮助文档、查看函数用法、参数

Qt网络编程.doc

下棋算法.doc

⏹其它

Internet、以前写的Qt小程序等

2.开发过程

2.1.基本流程图

人机模式与人人模式类似

 

算法:

2.2进度

编号

任务

时间

备注

1

画棋盘

2012.8.31

画棋盘背景及网格

2

放棋子

2012.8.31-9.1

实现鼠标点击处出现棋子

3

双人对战及悔棋

2012.9.1-9.2

实现不同角色下不同子,及吃子算法实现

4

人机对战

2012.9.3

实现人下一步机器自动下一步

5

优化

2012.9.4-9.5

继续实现人机对战及悔棋、跳过等,并进行代码优化及Bug解除

2.3.问题及解决

团队成员

问题及解决方案

田强

在整个黑白棋的项目的过程中我觉得最难得是在窗口的布局。

1、布局的一些技巧:

1)从大的方面讲,先将整个画面看成一个网格形式,再根据细节设水平或垂直局,最后将这些局部局加入到网格里面。

2)如果想让画面自适应图形的尺寸,可将你想改变的部分用setColStretch设置。

设置界面的颜色设置应用程序的颜色策略为spec。

颜色策略控制着当在一个显示颜色总数有限制的情况下运行应用程序如何分配颜色,例如8位/256色显示。

颜色策略必须在你创建QApplication对象之前设置。

2、在程序中最好多开几个线程,这样程序就不会很慢。

也不会出现死机的现象;QThread类还可以实现延时等一系列的问题。

孙志远

TCP协议的程序使用的是客户端/服务器模式,在Qt中提供了QTcpSocket类来编写客户端程序,使用QTcpServer类编写服务器端程序。

我们在服务器端进行端口的监听,一旦发现客户端的连接请求,就会发出newConnection()信号,我们可以关联这个信号到我们自己的槽函数,进行数据的发送。

而在客户端,一旦有数据到来就会发出readyRead()信号,我们可以关联此信号,进行数据的接收。

1、后来我可以使用TCP发送文件了。

由于TCP协议的复杂,在本程序中不是很好用,在文聪哥的指导下我又换回了UDP;

2、可能是由于之前的飞鸽的项目吧。

在UDP的过程中感觉不是很吃力。

很顺利的就完成了UDP的网路对战。

感觉还是很爽!

3、我觉得将网络编程用于QT真的是很爽。

那种华丽的界面加上网络的神奇功能可以变写出更好的程序;

马进

在整个黑白棋的项目的过程中,感觉都比以前的项目好玩一些,由于是在windows下面的编程,由于强大的qtcreator编辑器,使得开发的过程变得简单和方便。

但是在整个的开发过程中也遇到了很多的问题,现在就此总结如下:

1、由于是第一次接触QT,对此的操作有些不够熟练。

再加上第一次使用C++开发项目,对于C++中各种的类不是很了解,导致在编写窗口界面的时候有些吃力,对于C++中的继承关系一时不能接受,也不敢去用它,后来的过程中我才发现自己的代码有些冗余,所以自己也总结了一些技巧方法,比如可以自己定义一个窗口的类用来实现按键Button的功能。

远比UI中的按键的界面还有动态效果好看的多。

2、由于自己追求华丽的界面感觉UI中给的按钮,LED显示都很难看,不想去用它,所以后来就自己写了一个按钮的类,然后每个按钮都继承与这个类,每个类都是相互独立的,所以在后面的华丽界面也是很好控制与实现的

3、在本次的项目中我使用了很多的信号,我觉得QT中的信号槽是个好东西。

可以很方便的使用信号来实现不同类之间的通信,这样使得QT的程序十分有活力!

4、我一直追求华丽的界面。

我觉得QT的编程的就是要给程序一个美好的界面。

让用户起来很舒服的感觉、

庞志龙

将Chess数组传入给定算法judgeRule函数不能实现吃子

解决:

给定的算法里边已经包含了当前坐标是否为Empty算法,而我在调用该函数前也进行了判断,结果与算法内函数冲突,函数无法执行到吃子步骤,将自己写的判断去掉后问题解决

人机对战,人不落子当时间到后机器不会自动落子

解决:

在判断到时间到时update,问题解决

志龙,等吃子不正常,

问题原因及解决:

将棋盘数组定义为int型而算法内强制装换后为char型,将两个统一后问题解决

刘群厂

在这里借项目总结报告这次机会总结一下做这个项目以来的一点经验及教训:

由于自己以前没有使用enum,在实际中应用比较少,所以你会忽略它。

但是,在这里,我告诉你,enum和struct、class一样,都是用户自定义类型。

1、为什么要获取enum的取值范围?

因为C++标准规定超出枚举类型表示范围的赋值结果是undefined的。

也就是说e2x=(e2)6是肯定正确的,而e2y=(e2)8行为是未定义的。

2、enum的内存分配呢

比如e2需要3bits,那么C++规定e2的尺寸只要容得下3bits就行,到底是取1个byte,还是4个byte,还是.C++标准在这里有个限制:

1<=sizeof(enmu)<=sizeof(int)。

3、枚举的使用,可以让程序更加易读。

让非本人看起来更加的容易,比如0,1远不及empty的看起来容易;

周文平

身为本组的组长,我在本次黑白棋的项目中为本组的成员解决了很多的bug();在此过程中我发现本组的成员的进度都很快。

能力也十分的强;在这里借项目总结报告这次机会总结一下做这个项目以来的一点经验及教训.

1、很多人在绘图的事件中加了很多的事件处理的代码。

并且有些使用了update();这样是程序构成了无限的死循环;

2、很多的成员在开始对C++类的概念不是很清楚。

对于c++的继承不是很清楚;所以写的程序不是很合理。

程序过于臃肿;

3.总结

这次做黑白棋我们组成员都很给力、进度都很快。

遇到问题时我们一块儿讨论,一块儿想创新,大家都说这种感觉很爽!

这次Qt黑白棋比以前的项目都更有意思,大家都爱玩游戏肯定也都喜欢做^_^。

前段时间的Qt课程刚学完时感觉还挺空的,做完黑白棋才真正领略Qt的魅力,有一种实实在在学以致用的感觉。

在这几天里我们也遇到了很多问题,像最初我们将Update放到PaintEvent函数里结果造成死循环、在没完全理解算法的时候根据自己的想法判断棋盘为空后才调用算法结果不能正常吃子、还有总是忘记Update,好多好多问题都很细节,团队的力量是很强大的,有时一个问题搞了好久没搞出来,几个人聚过来一讨论就搞定了。

总结下大家项目过程中的问题及感受:

1、由于之前没有用过QT中的image类。

所以对此类的操作不是很熟练。

在保存棋盘画面的时候很吃力。

2、QT中的延时函数在QThread类里面。

里面的成员函数有:

sleep();就能实现延时的功能。

就只需要定义一个这样的对象即可!

3、在判断走棋结束的时候有多种情况的发生,但是后来发现只要两个for循环就可以实现,只要两方都不能落子的时候就可以结束游戏。

得分多的方算赢;

4、在悔棋的时候要判断是人机还是人人。

如果是人机的时候要返回两步,是人人的时候就返回一步,这样才是合理的逻辑。

同时要对显示,下棋的标志位进行相应的变化。

才能使程序有条不紊的工作。

5、在进行残局和网络的时候都用到了打开文件的操作,对此在帮助文档中有相关的说明。

6、在进行悔棋和跳过的时候必须将此步的状态保存在三维数组中,这样就不会出现空棋面的情况;

7、在播放音乐的时候只能播放wma格式的音乐。

不能实现MP3的播放。

4.附录

4.1组员作品展示

田强:

 

孙志远:

马进:

庞志龙:

刘群厂:

 

周文平:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1