纸牌游戏课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
攀枝花学院课程设计
题目:纸牌游戏的设计与实现院(系):
年级专业:
姓名:
学号:
指导教师:
二〇〇九年十二月十四日
攀枝花学院教务处制
攀枝花学院本科学生课程设计任务书
注:任务书由指导教师填写。
摘要
纸牌游戏是数据结构大作业中比较经典的一个大作业,通过此课程设计能够启发我们的思维,对数据结构中的函数有更加清楚的认识,建立我们对数据结构的兴趣,通过此课程设计设同时也能够使我们对各方面的知识有了更加全面的认识与了解,丰富了我们的知识面,扩展了我们的思维。通过课程设计的实践,我们可以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
当前计算机软件技术和网络技术正飞速发展,软件系统日趋大型化、复杂化,软件对于一个计算机系统是至关重要的。因此社会对软件开发者提出了比以往更高的要求,相应的系统要求也有了很大的提高。本系统用C++作为程序语言,设计出的系统功能强大,操作方便灵活。
关键词纸牌游戏,数据结构,软件,系统
-Ⅰ-
目录
摘要 (Ⅰ)
1需求分析 (1)
1.1需求来源 (1)
1.2设计目的 (1)
1.3设计要求 (1)
2 功能需求描述 (1)
3 总体设计 (1)
3.1设计思想 (1)
3.2系统模块结构 (2)
3.3 系统总设计流程图 (2)
4 概要设计 (4)
4.1抽象数据类型定义 (4)
4.2本程序所包含模块 (5)
4.3系统功能的实现 (5)
5 模块设计 (6)
5.1洗牌模块 (6)
5.2翻牌模块 (6)
6 运行与分析 (6)
6.1运行结果 (6)
6.2结果分析 (7)
致谢 (8)
参考文献 (9)
源程序 (10)
1 需求分析
1.1需求来源
在本系统的需求分析环节中,会对软件开发的意图、开发的目标、作用范围和有关该软件开的背景材料进行详细的分析。纸牌游戏作为一个用来娱乐的应用软件,在对其进行需求分析的过程中,需用要充分考虑系统的可用性和简单易用性,联系实际娱乐需要,从而得到合理的需求分析结论。
1.2设计目的
该软件为用户提供一个在Windows系统上运行的纸牌游戏小系统。应达到的目的是:编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3
的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过。
1.3设计要求
任意输出一组牌,输出最后正面向上的牌。
2 功能需求描述
纸牌游戏是一个用来娱乐的系统软件,此软件操作简单,每个新手都可以直接使用,不需要登陆注册,按游戏规则游戏即可。
游戏使用者主要功能需求如下:
系统洗牌后,猜测正面向上的牌,然后系统按设计的规则进行翻牌。洗牌后,使用者就可以看到自己猜得正面向上的牌是否与系统一样了。若一样,则胜利,否则失败。游戏很简单,使用者只要掌握好游戏规则就很容易取胜。
3 总体设计
3.1设计思想
在对纸牌游戏进行合理的需求分析之后,对整个系统进行总体设计。首先确定开发与设计的总体思想,在此基础上,用图表的方式给出系统总体的设计架构,
绘制系统模型结构图,并且通过模块功能图对每个模块进行总体设计。
开发本设计的总体思想:纸牌游戏是一个简易的游戏系统。开发设计的重点在于对纸牌的洗牌和翻牌按设计要求进行设计,不得出错。
纸牌小游戏是供大众娱乐的小游戏,所以无需考虑安全问题。
对于洗牌翻牌这两环节要用到程序设计思想中的循环结构。
系统采用结构化的设计方法进行设计,采用C语言进行开发。
3.2系统模块结构
依据需求分析结果,纸牌游戏总体上说就一个模块:翻牌。详细一点可分为2个模块:洗牌模块、翻牌模块。其中翻牌模块就是洗牌的最后一个步骤,即屏幕上显示得最后几张牌。也是用户应该猜得最后结果。系统模块结构如下图:
图3-2-1
3.3系统总设计流程图
图3-3-1
4 概要设计
4.1抽象数据类型定义
⑴对纸牌进行按规则翻牌
AllCards* RandArrange()
{ }
void Turn_Over(AllCards* C)
{ }
⑵查询翻牌剩下的最后7张牌
void Search(AllCards* C)
{ }
⑶主函数
void main()
{ }
根据设计要求,我们知道设计中所有用到的数据记录有纸牌翻转信息,因此要定义相关的数据类型:纸牌最大个数定义为CARDNUM 52,翻转状态存储在bool isup中,纸牌放在数组Cards[CARDNUM+1]中等。
4.2本程序包含模块
⑴主程序模块
①#define CARDNUM 52给数组定义一个空间
②typedef struct
{ }Indexcode; 纸牌的信息
③typedef struct
{ }PreCard; 翻转纸牌
④typedef struct
{ }AllCards;存储纸牌的数组
⑵洗牌模块
⑶纸牌翻转模块——翻转纸牌
各模块关系如下:
图4-2-1
4.3系统功能的实现
要实现纸牌按此要求翻转,首先要将52张纸牌序号i为1到52,定义正面朝上的状态Cards[i].isup为true;对52张牌(序号放在i里)对2,3···52(放在j里)按i+1是否是j的倍数进行状态翻转。如果对序号从1到52的牌,对翻转处理后状态仍然是正面的将其输出,一直进行下去,直到以52的基础翻过。