十点半小游戏课程设计_第1页
十点半小游戏课程设计_第2页
十点半小游戏课程设计_第3页
十点半小游戏课程设计_第4页
十点半小游戏课程设计_第5页
免费预览已结束,剩余29页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机科学与技术学院计算机专业程序设计综合课程设计报告(2011/2012学年 第一学期)学生姓名: 学生班级: 学生学号: 指导教师:2012年1月4日十占八、半小游戏制作人:靳蓉第一章 课程设计任务内容1第二章游戏说明2第三章 程序设计的目的和要求 33.1课程设计的目的33.2课程设计的实验环境 33.3课程设计的预备知识 33.4课程设计的要求4第四章需求分析54.1引言54.2 玩法设计介绍 54.3 系统性能需求分析 5第五章程序详细设计及流程图7第六章 系统测试及调试结果 106.1系统测试106.2调试结果及截图 10第七章软件使用说明 13第八章课程设计总结及心得 14附录I

2、参考文献16附录U程序代码20课程设计综合课程设计报告第一章课程设计任务内容根据所学C+知识编写十点半小游戏程序代码,游戏者能正常进行游戏,任务 列表如下:1. 开始游戏;2. 计算机对游戏者进行发牌;3. 游戏者根据自己的点数与10.5的差距以及对比电脑所拿牌的点数多少, 决定是 否要牌;4. 系统对游戏者和电脑拿到的牌进行比较;5. 判断胜负;6. 游戏者跟电脑分出胜负后,电脑会提示游戏者是否继续游戏,根据提示,按丫 或y继续游戏,否则按任意健停止,退出游戏。通过C+语言课程设计,我们了解高级程序设计语言的结构,掌握基本的分析问题和利用计算机解决问题的能力,并且具备初步的高级语言程序设计能

3、力, 为今后 的计算机课程学习打下了坚实的基础。第二章游戏说明该程序必须在Visual C+6.0环境中运行,程序具有操作简单,无需组建等工序, 直接编译、连接即可运行。操作简单,根据提示即可完成游戏的全过程。第三章程序设计概述3.1课程设计的目的通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能 更好地巩固高级语言程序设计课程学习的内容,掌握工程软件设计的基本方法, 强化上机动手编程能力,闯过理论和实践相结合的难关,更加了解c语言的好处和其 可用性。通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的分析 问题和利用计算机求解问题的能力,具备初步的高级语言程序

4、设计能力, 为后续各门 计算机课程的学习和毕业设计打下坚实的基础。3.2课程设计的实验环境该课程设计在设计与实验过程中需要在 windows XP系统/windows Vista系统中 进行,程序设计要求在visual C+6.0平台中进行,完成代码的编写、编译、调试、 测试等工作。3.3课程设计的预备知识在知识方面此课程设计需要掌握 C语言的基本知识,熟练指针、链表等应用, 掌握数据库等知识。在操作方面此课程设计需要清楚 windows XP系统/windows Vista系统的操作,熟 悉visual C+6.0编码平台。以此可以顺利完成课程设计的编写、编译、调试、测试 等工作。程序设计综

5、合课程设计报告3.4课程设计的要求C语言程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法。所谓结构化程序就是用高级语言表示的结构化算法,结构化程序设计强调程序设计风格和程序结构的规范化提倡清晰的结构。这就要求 学生把一个复杂问题的求解过程分阶段进行,每一个阶段处理的问题都控制在人们容 易理解和处理的范围内。可以采用自顶向下、逐步细化、模块化设计、结构化编码的 方法。同时为了更好地完成本次程序设计, 还要求学生仔细分析自己的选题,深刻了解 课题的设计背景,做好课题的需求分析,将项目要完成的功能分析清楚,划分好功能 模块,逐个实现。在实际编码过程中,要做到思维严谨,

6、化繁为简,代码简练。6第四章需求分析4.1引言这个小游戏操作简单,虽然只是人机对玩,但能够满足平常的娱乐需求。按照游 戏的提示,输入2,你可以看到游戏的介绍,在通俗易懂的介绍里面,你可以知道本 小游戏的基本玩法,老少咸宜。4.2玩法设计介绍按游戏提示,输入1按回车进入游戏。首先出现在你面前的,是电脑随机发给人和电脑的点数,这里有个好处,人可以看到电脑的牌,然后你根据自己的点数与10.5的差距以及对比电脑所拿牌的点数多少, 决定是否要牌。按游戏的进一步提示,按1, 电脑会随机再抽一张牌给你,屏幕上会显示“你在拿到的点数为”,“目前总点数为”后面的就靠自己了,如果一开始你就按0,尽管你拿到的牌点数

7、会比电脑低, 但当电脑拿牌,一旦电脑所拿点数超过 10.5,你还是有机会胜利的!不过如果你一开始要牌就超过 10.5 了,那你就输入给电脑了。当人跟电脑分出 胜负后,电脑会提示你是否继续游戏,根据提示,按丫或y继续游戏,否则按任意健停止,退出游戏。游戏玩法简单,基本上能达到娱乐的目的,但由于时间问题以及自己所掌握知识的有限,游戏还不够完美,希望在以后的学习中能够做到更好。4.3系统性能需求分析1 技术可行性C语言是国际上广泛流行的计算机高级语言,它适合作为系统描述语言,即可以用来编写系统软件,也可以编写应用软件。本游戏运用Win dows2000/XP以上的操作系统,开发以Windows XP

8、为用户的操作平台,操作简单,方便,界面友善、老少都可 以在闲暇时作为娱乐的十点半小游戏。2.经济可行性该系统所需要硬件设备,如服务器,PC机等,这些设备在性能上已经有了很大的 提高,价格又相对较低,能够满足系统功能的要求。在软件上,操作系统采用windows XP,系统的开发采用Visual C+ 6.0,它作为一种现代化的编程语言,提供完善的指 令控制语句等,同时满足不同系统的技术要求,这些软、硬件在游戏设计中已被大量 应用,技术上都比较成熟。3 操作可行性操作上只需要简单的键盘操作即可。游戏之前只要读懂游戏规则即可正常进行游 戏。第五章程序详细设计及流程图函数的流程图是根据函数算法的内部结

9、构而画,从清晰的函数流程图可以更清12Z图5.1主函数的流程图程序设计综合课程设计报告38子函数(void fa_card(int j,int l,int a52)电脑随机发牌流程图:int f,g;float k,d;程序设计综合课程设计报告26图5.2电脑随机发牌流程图子函数(void manget_card(int q,int w,int a52,int b52)人拿牌流程图第六章系统测试及调试结果6.1系统测试完成是十点半小游戏系统的详细设计后,接下来就到了系统测试阶段。在这一阶 段中,首先要完成代码的编译过程。代码初步完成编写后,要仔细地进行编译,根据 系统提示错误,进行修改。注意代

10、码的书写规范,包括命名惯例、注释、分隔和缩进 等。在这个过程中,我们要养成良好的程序编写习惯,对编译过程中经常出现的错误 情况加以注意,为今后的程序编写打下基础。6.2调试结果及截图正确操作的显示结果(1)进入游戏后显示的欢迎界面如图 6.1所示:AAAAAAAAAAAAAflAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAflAAAAAAAAAAAAAAAAAAflAAAAAAAf f f We Ucoine to the garte ? f f7-欢迎进入十点半小游戏_ -开始游戏2、进入游戏说明= = S = rS *= = =- = *= = = =- = -= = =

11、3' = -:=f=>=Ea=制作人i靳蓉玩的开心图6.1(2)按2进入游戏说明,显示界面如图6.2所示:游戏玩法:按二幵始游戏电脑先随机发给人跟电脑一张牌接着人先根据牌点数的大小决定是否要牌然后电脑才要牌羣完牌后电脑幵始判断电脑点数按丄进入游戏你会玩了吗?让我们一起进入十点半小游戏里面体验一下吧人先要牌当点数超310-sBt电脑胜利芥入羣完牌.点数不SH10.5,到电脑要牌电脑点数超H10-S,人胜利图6.2所示(3)按1开始游戏,其中人按1拿牌到超过10.5的显示结果如图6.3、图6.4你得到的点数为:7-000000KB黠密鏘屠畫繰勢输入除示不要瓦至聞I臣斗S魁咽器fc瑰#

12、暫家fi I区II耳津第尊韭越町 拠3*B图6.3鑼勺:3000000址为:7.000000_俞人表示要,输入0表示不要尔理在皐到的点数为=7.000000目刖总点数为=13.000000JO LI J.OS6 * * *是否还要热豪玩按Y表示继续,按任意键结束游戏的点数为=3-000000为:6.080000?输入1表示要,输入回表示不要图6.4(4)人按1要完牌,按0电脑取牌,并比较两者得出胜负显示的结果如图图6.6所示:6.5、祢得到的点数为= 5.000000电脑侍到的点数为=0.500000是否还要牌?输入1表示要,输入回表示不要你理在皐到的点数为汚.000000目刖总点数 = 10

13、,000000是否还要牌7输入1表示要,输入D表示不要图6.5:10.000000否述宴牌iua示要,输入D表示不要000000你现在拿到的点数为:0 -500000i? BAiaSs ;输入国表示不要na幽舸ns锻岳扬K Of图6.6(5)按任意键退出时的界面如图6.7所示:是否还要继续玩按Y表示继续,按任意犍结束游戏./迎下次在未,谢谢I內图6.7第七章 软件使用说明在wi ndows操作系统下打开该软件,首先系统提示输入文件名称,如果该文件存 在,系统将进入命令界面;如果不存在,系统将提示用户创建新文件并输入要创建文 件的名称。创建新文件后,按游戏提示,输入1按回车进入游戏。首先出现在你

14、面前的,是 电脑随机发给人和电脑的点数。按游戏的进一步提示,按1继续进行。当人跟电脑分 出胜负后,电脑会提示你是否继续游戏,根据提示,按丫或y继续游戏,否则按任意健停止,退出游戏。第八章课程设计总结及心得从课程设计开始到上交,用了三个星期的时间,在段时间里,我每天都对着电脑, 思考着。由于自己对十点半这个小游戏的玩法有点了解, 所以这次课程设计我题目我 选了“十点半小游戏”。从代码的构思到基本完成,用了我一周时间,由于刚开始时对C语言课本的内容不是很熟悉,由于时间不多,所以我花了两天去看书,看完书后就到电脑上的 操作,通过练习熟悉内容,基本上掌握了了一些基本操作,然后就上网去找资料,接 着着手

15、开始编写代码。我先在脑海里回忆了几遍了这个小游戏的玩法,具体步骤,大体上定下一个架构。由于这个游戏据自己所知的玩法是这样的:首先庄家发牌,庄家人各一张牌, 然后人根据自己所发牌的点数先决定是否要多一张牌,直到要到超过10.5为止。当人要了牌,点数超过10.5后,庄家不需要再要牌就获得胜利,游戏结束;当人要完 了牌,点数不超过10.5,到庄家要牌,如果庄家要完牌后点数超过了 10.5,人获得胜 利,否则比较两者谁的点数,大的获得胜利(这里不考虑当两者都超过10.5这种情况)。根据游戏的玩法,为了游戏的方便,我忽略了一副牌的花色和颜色,用数字来 代表相应的牌,如J,Q,K分别用11,12,13表示

16、,A用1表示,其余数字210, 用相应的数字表示。由于一副牌中有 52张牌(除去王),每一种牌都有四张,因些我 把一副牌用一个数组a52表示,里面的元素用1,1,1,1, 2, 2,2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13表示,每种牌所 代表的点数为:A代表1点,由于J, Q, K代表0.5,所以11, 12, 13代表的点数 为 0.5。根

17、据这种想法,我把代码的主函数分为了这样几部分:一,首先由电脑随机 发牌,人一张,电脑一张(电脑不能拿到人拿到的牌,同样在以后的发牌中都不能要 到同样一张牌),以点数的形式显示在屏幕上,这里作为一个电脑发牌的子函数; 二, 人开始要牌,由电脑随机再发牌,直到人不要牌为止,这里作为一个人拿牌的子函数; 三,人拿完牌后,到电脑拿牌,直到电脑拿牌超过10.5为止,这里作为一个电脑拿牌 的了函数;四,在主函数里进行比较;整个代码的架构基本完成。接着就是代码部分,由于要用到随机函数。通过个课程设计,可以学得新的函数,新的知识,收益不错。还有,由于自己定义的这副牌不分花色颜色,只代表点数,为 了避免人和电脑

18、在各自要牌中都抽到同一张牌或同一张牌被抽到多次,所以函数里要用到标记的方法,用到了指针,通过标记,达到不重复抽取牌的目的;另外,还用到 了多种循环语句,for, while,还有if, break等语句。在代码编写的过程中,也遇到很多 问题,例如在电脑随机发给人和电脑一张牌时,由于时间极短,随机发到的牌会是相同的点数,因此在人与电脑共同随机获得牌这间至少要有一秒的延迟,由于没用到delay函数,最后在同学的帮助下,通过两个空循环来实现时间的延迟,效果显著。 虽然遇到的问题还不止这些,但通过这次课程设计,在遇到问题,解决通过思考,查 找资料,问老师或同学,至原终把问题解决,经过这两星期的经历,真

19、的学到了不少 东西。同时,通过问老师或同学,可以学习他们的编程技巧,他们的编程思路,解决 问题的方法等等,可谓受益非浅。附录I参考文献【1】谭浩强v<C程序设计教程 >>,北京清华大学出版社.2007.07。【2】谭浩强C+程序设计 >>,清华大学出版社2004年6月第一版。附录U程序代码/*课程设计的题目为:十点半小游戏*/#include "stdio.h"#in clude"iostream"#i nclude"stdlib.h"#i nclude"time.h"start()/

20、*游戏界面*/prin tf("n ”);prin tf("n ”);printf(”AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn ”);printf("n");printf("n");printf("!Wellcome to the game! n");printf("n");printf("n");prin tf("欢迎进入十点半小游戏n");pri

21、ntf("n");printf(" = - = - = - = - = - = n");printf("n");printf("1、开始游戏n");printf("n");prin tf("2、进入游戏说明n");printf("n");printf("n");printf(”AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn ”);pri

22、n tf("制作人:靳蓉n");prin tf("玩的开心n");return 0;jieshao()prin tf("游 戏 介 绍nnn");printf("欢迎大家来到十点半小游戏,这是一个简单易玩的小游戏,老少适合");printf(”n");printf("n");printf("游戏玩法:nn");printf("按1开始游戏nn");printf("电脑先随机发给人跟电脑一张牌,接着人先根据牌点数的大小决定是否要牌,然后电

23、脑才要牌n");printf("拿完牌后电脑开始判断:nn");printf("1.人先要牌,当点数超过10.5时,电脑胜利.nn");printf("2.人拿完牌,点数不超过10.5,到电脑要牌,电脑点数n也不超过10.5,此时谁牌的总点数大谁胜利nn");printf("3.人拿完牌,点数不超过10.5,到电脑要牌,电脑点数超过10.5,人胜利nn");printf("你会玩了吗?让我们一起进入十点半小游戏里面体验一下吧n");prin tf("按1进入游戏n"

24、);return 0;float man,compu,man1,com1;/*声明全局变量,man,com既是第一次人跟电脑拿牌也是第一次人跟电脑拿牌的总数*/void main()/* 主函数 */void fa_card(int j,int l,int a52);/* 声明 fa_card 函数 */void manget_card(int q,int w,int a52,int b52);/* 声明 manget_card 函数 */void compuget_card(int a52,int b52);/* 声明 compuget_card 函数 */int j1=0,l1=0;/*对

25、电脑随机发给人和电脑的第一张牌点数赋初值,为0*/int s, x;char p;int a52=1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13;/* 定义副牌,不分花色, 只代表点数*/int b52=0;/*定义一个数组,用来标记牌中已被选过牌*/int *pa,*pb,*pj1,*pl1;/*定义指针,分别用来指向a,b数组,以及电脑随机发给人和电脑的第一 张牌*/pa=a;pj1= &j1

26、;pl1= &I1;pb=b;start();/*调用游戏开始界面函数*/for(x=0;x<=1;x+)sca nf ("%d", &s);if(s=1)/*按1进入游戏*/while(1)fa_card(j1,l1,pa);/* 调用人拿牌函数 */manget_card(j1,l1,pa,pb);/* 调用电脑拿牌函数 */if(ma n>=0.5&&man <=10.5)/*执行电脑拿牌函数的前提*/compuget_card(pa,pb);if(ma n>=1 &&ma n<=10.5)

27、&&(compu>=1 &&compu<=10.5)/*人与电脑点数均没超过10.5时进行判断大小*/if(ma n> compu)prin tf("you win!n ”);else if(ma n=compu)printf("no lose no winn ”);else prin tf("you lose!n");printf("是否还要继续玩,按Y表示继续,按任意键结束游戏。n");/*询问是否执行新一轮的游戏*/for(p=0;p<1;p+)getchar();p=ge

28、tchar();if(p!='Y'&&p!='y')/*新一轮游戏开始,上一次游戏数据清零*/printf("欢迎下次在来,谢谢!”);exit(0);if(s=2)jieshao();void fa_card(int j,int l,int a52)/* 定义 fa_card 函数,电脑随机发牌,得到电脑随机发给人和电脑各一张牌所代表的点数*/int f,g;float k,d;sran d(time(NULL);/*/j=rand()%52;/*电脑开始随机发牌给人*/k=aj;if(k>10)/*定义牌所代表的点数*/man=0.5;elseman=k;printf("你得到的点数为:%fn",man);for(f=0;f<10000;f+)/*空循环,用来延长时间*/for(g=0;g<10000;g+)/*空循环,用来延长时间*/l=rand()%52;/*两次空循环后,大概延时1S,电脑开始随机发牌给人*/while(1)if(l=j)/*如果抽到相同的牌,重新再抽*/l=ra nd()%52;else break;d=al;if(d>10)compu=0.5;elsecompu=d;printf("电脑得到的点

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论