纸牌游戏课程设计报告书.docx
- 文档编号:8723774
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:17
- 大小:134.27KB
纸牌游戏课程设计报告书.docx
《纸牌游戏课程设计报告书.docx》由会员分享,可在线阅读,更多相关《纸牌游戏课程设计报告书.docx(17页珍藏版)》请在冰豆网上搜索。
纸牌游戏课程设计报告书
攀枝花学院课程设计
题目:
纸牌游戏的设计与实现
院(系):
年级专业:
姓名:
学号:
指导教师:
二〇〇九年十二月十四日
攀枝花学院教务处制
攀枝花学院本科学生课程设计任务书
题 目
纸牌游戏的设计与实现
1、课程设计的目的
培养学生用学到的书本知识解决实际问题的能力;培养实际工作所需要的动手能力;培养学生以科学理论和工程上能力的技术,规范地开发大型、复杂、高质量的应用软件和系统软件具有关键性作用;通过课程设计的实践,学生可以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)
任务:
编号为1-52张牌,正面向上,从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的直到以52为基数的翻过,输出:
这时正面向上的牌有哪些?
3、主要参考文献
[1]严蔚敏.《数据结构C语言》.清华大学出版社
[2]谭浩强.《c语言程序设计》.清华大学出版社
[3]《数据结构》.高教出版社
[4]李春保.《数据结构习题》.清华大学出版社
[5]严蔚敏.《数据结构习题》.清华大学出版社
4、课程设计工作进度计划
第1天完成方案设计与程序框图
第2、3天编写程序代码
第4天程序调试分析和结果
第5天课程设计报告和总结
指导教师(签字)
日期
年月日
教研室意见:
年月日
学生(签字):
接受任务时间:
年月日
注:
任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表
题目名称
纸牌游戏的设计与实现
评分项目
分值
得分
评价内涵
工作
表现
20%
01
学习态度
6
遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。
02
科学实践、调研
7
通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。
03
课题工作量
7
按期圆满完成规定的任务,工作量饱满。
能力
水平
35%
04
综合运用知识的能力
10
能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。
05
应用文献的能力
5
能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。
06
设计(实验)能力,方案的设计能力
5
能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。
07
计算及计算机应用能力
5
具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。
08
对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)
10
具有较强的数据收集、分析、处理、综合的能力。
成果
质量
45%
09
插图(或图纸)质量、篇幅、设计(论文)规范化程度
5
符合本专业相关规范或规定要求;规范化符合本文件第五条要求。
10
设计说明书(论文)质量
30
综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。
11
创新
10
对前人工作有改进或突破,或有独特见解。
成绩
指导教师评语
指导教师签名:
年 月 日
摘要
纸牌游戏是数据结构大作业中比较经典的一个大作业,通过此课程设计能够启发我们的思维,对数据结构中的函数有更加清楚的认识,建立我们对数据结构的兴趣,通过此课程设计设同时也能够使我们对各方面的知识有了更加全面的认识与了解,丰富了我们的知识面,扩展了我们的思维。
通过课程设计的实践,我们可以在程序设计方法、上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
当前计算机软件技术和网络技术正飞速发展,软件系统日趋大型化、复杂化,软件对于一个计算机系统是至关重要的。
因此社会对软件开发者提出了比以往更高的要求,相应的系统要求也有了很大的提高。
本系统用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()
{}
voidTurn_Over(AllCards*C)
{}
⑵查询翻牌剩下的最后7张牌
voidSearch(AllCards*C)
{}
⑶主函数
voidmain()
{}
根据设计要求,我们知道设计中所有用到的数据记录有纸牌翻转信息,因此要定义相关的数据类型:
纸牌最大个数定义为CARDNUM52,翻转状态存储在boolisup中,纸牌放在数组Cards[CARDNUM+1]中等。
4.2本程序包含模块
⑴主程序模块
①#defineCARDNUM52给数组定义一个空间
②typedefstruct
{}Indexcode;纸牌的信息
③typedefstruct
{}PreCard;翻转纸牌
④typedefstruct
{}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的基础翻过。
5模块设计
5.1洗牌模块
该模块案设计要求洗牌,是用户进行游戏的前提。
该模块主要是按要求进行循环翻牌的过程,要求为:
“从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最后一张牌;然后…从第4张开始,以4为基数,是4的倍数的牌翻一次,直到最后一张牌;...再依次5的倍数的牌翻一次,6的,7的,直到以52为基数的翻过,输出”。
5.2翻牌模块
翻牌模块其实就是洗牌模块得最后一个步骤。
该模块就是为了显示出最后
结果,让用户比较一下自己的结果和系统输出得结果有什么不同。
6运行与分析
6.1运行结果
6.2结果分析
该游戏很简单,只需按规则一步步地进行翻牌,然后将自己所猜的结果与屏幕上的结果对比,在每轮游戏结束后,都可继续游戏。
致谢
通过这次设计,使我在数据结构的逻辑特性和物理表示、数据结构的选择应用、算法的设计及其实现等方面加深了对课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
在此之前,我脑袋里面没有数据结构的思想,什么数据结构对我而言就是一张空白的纸。
当时就感觉自己什么都不会做,什么也不能做,但是真正接触后并没有想象的那么难,有什么不懂的上网去搜索,这是一个信息横流的世界,有google,baidu就没有不能解决的知识难题。
在网上搜索点有关的资料后,然后再利用自己在课堂上所学的知识,将所有内容连接起来,所有问题就迎刃而解。
课程设计是以学生自学为主、指导教师指导为辅,认真、独立地完成课程设计的任务,有问题就要及时主动与指导教师沟通。
在老师的悉心指导下和同学们的帮助下,使我顺利地完成了此次课程设计。
所以,要特别感谢指导老师和各位同学,我相信这短短五天的课程设计将会是我以后不管是工作还是学习不可多得的经验。
参考文献
[1]严蔚敏.《数据结构C语言》.清华大学出版社
[2]谭浩强.《c语言程序设计》.清华大学出版社
[3]《数据结构》.高教出版社
[4]李春保.《数据结构习题》.清华大学出版社
[5]严蔚敏.《数据结构习题》.清华大学出版社
[6]王立柱.《c语言与数据结构》.清华大学出版社
[7]李春葆.《数据结构(C语言篇)习题与解析》.清华大学出版社
[8]徐孝凯.《数据结构简明教程》,清华大学出版社
[9]陈文博,朱青.《数据结构与算法》,机械工业出版社
[10]晋良颍.《数据结构》,人民邮电出版社
[11]赵文静,祁飞等.《数据结构与算法》,科学出版社
源程序:
#defineCARDNUM52
#include
#include
#include
typedefstruct{
int*elem;
intlength;
}Indexcode;
typedefstruct{
intcode;
boolisup;
}PreCard;
typedefstruct{
PreCardCards[CARDNUM];
}AllCards;
AllCards*RandArrange();
voidTurn_Over(AllCards*);
voidSearch(AllCards*);
voidmain(){
system("color1a");
AllCards*cards;
charc;
inti=0;
printf("*****************************************\n");
printf("*.......................................*\n");
printf("*...............纸牌游戏................*\n");
printf("*.......................................*\n");
printf("*****************************************\n");
printf("这是一个很easy的纸牌游戏,下面我们....\n");
while
(1){
if(!
(i++))printf("开始第1轮游戏:
\n");
else{printf("\n和你猜的结果一样吗,不一样的话,就再接再厉吧!
");
printf("继续吗?
(Y/N)");
scanf("%c",&c);
if(c=='N'||c=='n'){
printf("****************************结束***************************\n");
return;
}
elseprintf("\n第%d轮游戏:
\n",i);
}
printf("洗牌中......\n");
cards=RandArrange();
printf("\n按规则翻面中......\n");
Turn_Over(cards);
Search(cards);
}
}
AllCards*RandArrange()
{
intj,k;
AllCards*C=(AllCards*)malloc(sizeof(AllCards));
intc[CARDNUM+1];
Indexcodeicode;
icode.elem=c;
icode.length=CARDNUM;
for(inti=1;i<=CARDNUM;i++){
icode.elem[i]=i;
}
for(i=1;i<=CARDNUM;i++){
if(!
icode.length)break;
j=(rand()%icode.length)+1;
C->Cards[i].code=icode.elem[j];
for(k=j;k icode.elem[k]=icode.elem[k+1]; icode.length--; C->Cards[i].isup=true; } for(i=1;i<=CARDNUM;i++) printf("%4d",(C->Cards+i)->code); printf("\n"); returnC; } voidTurn_Over(AllCards*C) { inti,j; for(i=2;i<=CARDNUM;i++){ for(j=2;j<=CARDNUM;j++) if(C->Cards[j].code%i==0) {if(C->Cards[j].isup! =true) C->Cards[j].isup=true; elseC->Cards[j].isup=false;} } } voidSearch(AllCards*C) { printf("正面向上的有: \n"); for(inti=1;i<=CARDNUM;i++) if(C->Cards[i].isup)printf("%d",C->Cards[i].code); printf("\n"); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 纸牌 游戏 课程设计 报告书