《软件基础》大作业Word文档格式.docx

上传人:b****1 文档编号:4069916 上传时间:2023-05-02 格式:DOCX 页数:9 大小:20.42KB
下载 相关 举报
《软件基础》大作业Word文档格式.docx_第1页
第1页 / 共9页
《软件基础》大作业Word文档格式.docx_第2页
第2页 / 共9页
《软件基础》大作业Word文档格式.docx_第3页
第3页 / 共9页
《软件基础》大作业Word文档格式.docx_第4页
第4页 / 共9页
《软件基础》大作业Word文档格式.docx_第5页
第5页 / 共9页
《软件基础》大作业Word文档格式.docx_第6页
第6页 / 共9页
《软件基础》大作业Word文档格式.docx_第7页
第7页 / 共9页
《软件基础》大作业Word文档格式.docx_第8页
第8页 / 共9页
《软件基础》大作业Word文档格式.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

《软件基础》大作业Word文档格式.docx

《《软件基础》大作业Word文档格式.docx》由会员分享,可在线阅读,更多相关《《软件基础》大作业Word文档格式.docx(9页珍藏版)》请在冰点文库上搜索。

《软件基础》大作业Word文档格式.docx

2.1开发环境与软件………………………………4

2.2项目任务书……………………………………4

三、软件设计制作说明

3.1总体方案……………………………..………..4

3.2详细方案…………….………………………..5

3.3工程进度……………………………………….9

四、测试报告…………….……………………………10

五、个人总结……………….…………………………11

单副扑克双人双电脑升级游戏需求分析

开发背景

本项目名称是单副扑克双人双电脑升级游戏

本项目的提出者是卫颜俊老师,开发者是电气210游戏技术研发小组(本组成员)

纵观世界,电脑的普及已是大势之所趋,不可抵挡。

随着电脑技术的飞速发展。

原来的普通扑克游戏,已经可以在电脑上轻松实现全真模拟。

世界科技浪潮的冲击下,高级语言的开发技术已经席卷全球。

使用高级语言编写程序已经是每一个使用电脑的人的必修课了。

VsualC++是一种面向对象的可视化程序,是在Windows环境下最强大、最流行的程序设计语言之一。

本游戏的玩家只需了解基本的电脑操作知识,就可以轻松的玩。

项目目标

在电脑上实现升级游戏,使玩家有完全真实的打牌的感觉。

运行环境

硬件:

CPU:

IntelPentium3800MHz内存:

64M

软件:

Windows98/2ooo/xp/2003

参考资料

《软件技术基础》冯博琴主编人民邮电出版社

《VisualC++与面向对象程序设计教程》(第二版)

吕军等编高等教育出版社

游戏开发技术路线

开发软件

VisualC++6.0版

开发环境

Windows2003Server

任务分配

本小组由组长连飞峰召开会议,经过民主讨论,结合每个成员对VC++的掌握水平,确定了每个成员的工作。

连飞峰:

确定程序总体方案,研究确定程序的算法,做出游戏规则

江波:

收集资料,初始化数据,实现叫主功能

廉哲:

制定程序界面,导入位图,实现位图显示

总体方案

本软件包括初始化数据、显示界面、鼠标操作、设计规则四个模块。

四个模块通过可视化程序相互联系。

初始化数据是基础,完成之后才可以实现显示界面,在界面上完成鼠标操作。

最终规则设计完成整个游戏的开发。

1)收集资源,选择合适的开发语言。

2)导入图片等资源,设计程序的界面

3)结合消息机制实现操作、设计算法,出牌规则最终形成游戏过程

详细方案:

1)准备扑克游戏所需的图片资源。

在网上下载了一个拖拉机游戏程序,用exescope打开这个程序,将其中的扑克牌面图片导出到一个文件夹。

找一幅合适的背景图片,用photoshop在其上面添加必要的文字,包括:

“本局花色”、“本局主值”、“得分方”、“得分”;

并且用photoshop制作游戏过程中要显示的花色、主值和当前得分方(电脑或人),制作程序的图标。

选择VC++开发环境,新建一个文档视图程序,起名为puke。

2)将上述资源导入程序。

在View类里装入图片:

图片名称

数量

背景图

1

扑克牌背图

2

玩家标识图

当前花色图

扑克图

54

当前主值图

叫主花色图

5

在OnDraw里先显示背景图,其次是当前花色图、玩家标识图、叫主花色图、扑克图、当前主值图是根据游戏的过程而动态显示的。

修改版权,程序图标,加入菜单:

游戏菜单—〉开始、退出

选项菜单—〉速度选择、背景选择

帮助菜单—〉操作说明、版权说明

在显示扑克牌之前要把扑克随机打乱,这是个难点。

首先想到要用rand()函数,但直接用随机函数又不能抱证没有重复的扑克出现。

这就要想办法生成一个不重复的随机数列。

思路是这样的:

首先把0~53按顺序放到一个数组a[]里,让后用随机函数产生一个53范围内的数,取以这个数作为下标的a[]里面的一个数放入数组b[],同时a[]的长度减一并移动里面的数据。

如此重复下去,直到a[]数组空为止,这样数组b[]就是一个不重复的随机数列!

为了防止前后两次的随机数列一样,另外加了一个srand((unsigned)time(NULL));

以系统时间产生随机数列,系统时间不一样,随机数列也不一样。

新建一个扑克类,其中变量包括:

inthuase(扑克的花色)、intzhi(牌面值)、intfen(扑克对应的分数,5对应5分,10、K对应10分,其他的对应0分)、CBitmapbmp(扑克的位图)

定义扑克数列pukepuke[54]。

给每张扑克赋初值。

然后把54张扑克以这个随机数列打乱。

程序启动点开始后要把扑克一张一张发出来,而不能一下显示出来,所以不能用for循环来显示扑克牌。

这是第二个难点,想到要用计时器结合OnDraw可以实现,在“开始”里设定一个计时器,有个变量i自加1,i每变化一次,扑克显示一张。

直到i=11扑克发完。

这样就可以控制扑克的发牌频率。

在扑克发的过程中要能用鼠标叫主:

由于扑克是在发票之前打乱的,可以计算出当局主值在扑克序列中的位置,如果出现了当前主值,就在花色条上显示为亮。

这在OnTimer里实现,当鼠标点击下亮的花色后还要给扑克重新赋值,主花色的扑克值加13,并且重新统计各个玩家各种花色的牌有多少张。

程序的初始界面就做好了,启动程序后点开始可以发牌和叫主。

3)接着要实现鼠标的操作。

点击左键选牌,点击右键发牌。

以第一个人的操作为例说明。

首先判断鼠标是否点在第一个人牌面的范围内,如果是,则接着判断点到哪张牌上面,用鼠标的point.x做一个运算就可得出当前所点的扑克。

选择某个扑克后,这个扑克就弹起来。

为了实现再点一下这个扑克就下去还得加一个BOOL变量。

这个很容易可以实现。

在鼠标点击后要加刷新扑克所在范围内的区域。

选择好某张牌后要用点鼠标右键出牌。

如果点击左键后,点击右键被激活(用一个BOOL变量实现)。

出牌后也要刷新扑克原来位置的区域和出牌后的新位置。

鼠标的操作要结合OnDraw来实现扑克牌的位置变化。

第二个人的鼠标操作类似第一个人的。

电脑的出牌:

电脑是自动出牌的,不需要鼠标的操作。

因此要把电脑的出牌放到OnTimer里,并且要用一个BOOL变量控制他是否能出牌。

比如规定人出完牌电脑才能接着出牌。

电脑出牌同样也要结合OnDraw来实现,并且要刷新新旧两个位置的区域。

当桌面的的牌等于四张的时候需要开始新的一轮,要把上轮的牌刷掉。

在每个玩家出牌的语句后面加一个计数,如果计数的值等于4,则刷新桌面,同时计数归零。

到此人和电脑就可以出牌了。

加出牌的规则:

以一个电脑为例说明,在“开始”和叫牌后都统计过各种花色的扑克有多少张。

首先判断是否为新一轮的第一张牌,如果是新一轮的第一张牌,可以随便出,如果不是则需要判断上家所出的花色,如果自己有同样的花色则必须出同样花色,如果没有,则可以随便出一张。

在出完牌后,要把这个花色牌的个数减一,并且另这个牌的花色为-1,以免下次出这个牌。

人出牌的规则在电脑基础上还要再加一些,判断说点的牌是否为非法牌,如果是新一轮的首次出牌,则可以随便出,如果上家已经出牌了,这要判断花色是否有,是否一致,如果是非法牌,则点击鼠标左键无效。

如何判断一轮出牌的大小:

如果是新一轮的第一个出牌,则赋当轮的花色为此扑克的花色。

桌面扑克定义为puke类,zhuomianpuke[4],每出一张牌则记录所出牌的花色和面值,如果所出牌的花色是当前轮的花色或者是主的花色才参与判断大小,判断出最大的玩家,下一轮就该这个玩家首先出牌。

得分的纪录:

初始化里默认电脑为得分方。

每出一轮牌统计当轮的牌面分值,如果该轮得分方大了,则给得分方加分。

得分的显示在OnDraw里实现。

升级:

定义一个变量intcount每个玩家出一次牌count都加一。

在OnTimer里判断,如果count=48则此局结束,如果得分方得够40分,则下局该本局的得分方做主,如果得分不够,本局的主方接着做主,级数升一。

游戏的主要功能就实现了

附加功能:

选择扑克牌背,定义一个变量控制显示的图案。

选择后刷新全局。

选择速度,定义一个变量控制刷新的速度。

工程进度

1.接受任务:

9月底

2.工程开始:

10月4号,建立项目,构思整体方案

3.前两周:

计划完成资源收集处理,程序界面的完成。

实际进度:

完成计划任务。

4.三、四周:

计划加入鼠标操作并能自动出牌。

实际进度,鼠标操作的基本功能实现,没有取消选择的功能,自动出牌的一部分代码完成

5五、六周:

计划完成自动出牌,实现大小的判断。

按计划完成,并加入得分机制

6七周:

完成大部分功能。

主要是升级

7八周:

加入附加菜单、测试并解决bug

测试报告

1)发牌功能完成后的测试:

点开始后扑克可以正常显示,但没有发牌过程。

解决方案:

把显示扑克的for循环改为用计时器控制,并实现了速度的调节。

2)加入电脑自动出牌后的测试:

电脑虽然可以自动出牌了,但第二轮的时候只要有一个人出牌,两个电脑就同时除牌。

加入桌面牌的个数记录,解决了BOOL变量不能及时更新的bug。

3)加入出牌判断大小后的测试:

电脑出牌有时符合规则有时乱出。

检查程序的判断大小、电脑出牌等处的关键代码,发现一个逻辑错误电脑的扑克变量应该用判断大小以后的变量。

更改后问及解决。

4)程序点开始后最小化最大化测试:

游戏窗口只要一变化,桌面上的扑克就丢了。

这个问题很头疼。

解方案:

当牌发完后,再增加一个fou循环把扑克显示一次。

问题解决。

5)出牌后最大化最小化测试:

只要桌面上出过牌,窗口变化后,以前出的牌就都显示出来了。

给每个扑克的x、y坐标都定义一个值,放到数组里。

互不影响。

出牌后改变这个扑克的坐标值,使其不再桌面范围内。

6)一些刷新的测试:

比较多,也零碎。

回到源代码更改坐标的值。

总体测试:

在前面bug的解决基础上整体程序没出现过bug,所设计的功能都正常。

说明一下程序的不足之处:

发牌的过程不够形象,电脑的智商比较低,没有处理底牌功能。

有时候出牌频率感觉不太平均。

个人小结:

经过这个小程序的编制,我对VC有了进一步熟悉。

对文档试图程序的编写更熟悉了。

掌握了定时器的使用,东得了如何控制一个变化的过程。

编成思想有了提高,逻辑思维增强了,解决程序错误的能力也提高了。

通过其中变量相互转化的编写对数据结构也有了更深的认识。

感觉自己编的代码比较乱,没有使用很多类和函数。

以后得加强程序代码的可读性,合理使用函数和类。

江波:

通过这一个多月程序的编制,我们这组的项目也很好的完成了,总体功能符合要求.我负责的是这个扑克游戏资源的搜集,程序的初始化及叫主功能的实现,通过这次编程,不仅对理论知识有的进一步的理解并加强了实际的操作能力,及解决问题的能力。

总的来说,这次软件开发的过程,对我们每个人来说,最大的收获是学习的过程,也增强了我们的团队合作精神,我们也认识道,没有最强的个人,只有最强的团队

廉哲:

这次编程任务完美完成了。

感觉这段时间里,辛苦,有,收获也有。

要说最大的感受是什么,那就是以往的经历都不如这次给我的收获大。

在这次编程的过程中。

我们三个人充分的发挥民主,每个人都为这份程序付出了自己最大的心血。

同时,我们也感受到了集体的力量是远大于个人的。

团结是和谐的,愉快的。

这次的合作经历增加了我们的友谊。

同时,我也对VC语言有了进一步的了解,也增强了自己动手操作的能力。

在以后的工作中,也将更认真,更细致。

当然,这也会对我今后的生活产生长远的影响。

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2