欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

24点游戏课程设计报告

  • 资源ID:37856007       资源大小:144KB        全文页数:19页
  • 资源格式: DOC        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

24点游戏课程设计报告

成绩 课程设计报告 题 目 24点游戏 课 程 名 称 软件项目实践(二) 院 部 名 称 信息技术学院 专 业 计算机科学与技术 班 级 M11计算机科学与技术(专转本)学 生 姓 名 王蕾 学 号 1121412006 课程设计地点 校内实验室 课程设计学时 2周(40学时) 指 导 教 师 沈 奇 金陵科技学院教务处制课程设计报告目录一、实验目的和要求1二、实验仪器和设备2三、实验过程2四、实验结果与分析16五、实验心得18 一、实验目的和要求1实验目的1) 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2) 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3) 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;4) 训练用系统的观点和软件开发一般规范进行软件开发。5) 培养快速学习新的知识,并在项目中使用的能力。2实验要求设计并实现24点游戏,满足以下基本要求: 运行系统后,用户登录,输入用户名后,可以进入游戏,或查看英雄榜。 玩家开始游戏后,系统随机产生四个1-13的数,分别代表13张牌。提示玩家输入算式。判断玩家输入的表达式是否合法,其中算式中的四个数字只能是程序所给的四个数字。当玩家正确输入算式后,运用“用堆栈求解表达式”的原理,求出结果并判断是否为24,得出用户是输是赢的结果。 如果用户赢,计算其所用时间(从输入算式开始计算,直至输入算式结束),并与英雄榜中成绩进行比较。可以进入英雄榜的,则需更新英雄榜。英雄榜只按成绩降序记录1-5名相关信息。二、实验仪器和设备Microsoft WindowsXP / Windows 7Turbo C/Visual C+三、实验过程(一)项目计划 11 总体介绍 24点游戏是一种使用扑克牌来进行的益智的游戏,游戏内容为:从113中,任意抽取4张牌,运用加、减、乘、除和括号等运算符把牌面上的数进行运算得到24,每个数都必须运算,并且只能运算一次,运算符可多次重复使用。1.2 参考文献1算法与数据结构用C语言描述,唐策善编著,高等教育出版社 20082数据结构 (C语言版),严蔚敏等编著, 清华大学出版社 20043数据结构实用教程(第二版),徐孝凯编著,清华大学出版社 20064计算机程序设计技巧第一、三卷,D.E.Knuth著,管纪文译,国防出版社5FUNDAMENTALS OF DATA STRUCTURES,FULLS HORO-WITZ&SARTAJ SAHNT6.数据结构基础(中译本),程惟宁译,新时代出版社(二)需求分析21 需求概述分析 1)输出的判定和四位数字的类型: 在输出的时候对最后结果等于24的判别,因为考虑到有除法,有可能中途 结果可能会出现不能整除的情况与小数,所以输出的四个数都设为float型,且输出判定的时候用近似判定法,而不直接写让最后结果等于24(详情见算法)。2)括号问题的处理: 对于括号问题,我规定对每一步的计算表达式,除了*之外,+,-,都加上括号,即让程序按自己规定的方向执行,输出的括号只是让人能看懂,其实在运算时不起作用(详情见算法)。22 输入输出的要求输入的运算符只能是+、-、*、/、(、)这六个,输入的整数必须是程序随机产生的那四个数,而且每个数只能用一次。23 概要设计 功能模块图24算法游戏随机发牌输入求解表达式计算表达式判断表达式的正误 (三)面向对象分析3.1 用例图 登入查看英雄榜用户用例图退出3.2 总体流程图 开始开始界面选择事件登入输入用户名和密码与数据库信息进行检测普通用户数据进入普通用户界面选择事件切换用户进入游戏退出游戏数据不存在退出退出查看英雄榜3.3游戏流程图开始进入游戏开始界面输入表达式计算是否=24?显示Congratulationsery good显示input any key,hint answer.Go on or exit ?退出NNYY(四)详细设计 4.1 界面要求 要求有合理的界面,用户可以读懂看清程序将要做的事情,并可以在一步一步的执行时可以有一些提示,这样用户可以继续使用。4.2 功能逻辑设计在设计这个程序之前,我把这个程序分为多块,它们分别为:1) 显示登录界面 玩家输入用户名和密码,进入游戏2) 显示游戏界面 随机产生4个数; 提示输入表达式; 玩家输入表达式,用栈存储起来; 判断输入是否合法,四个数是不是随机产生的四个; 给出结果。3) 显示游戏界面 用户根据提示,选择进入查看英雄榜; 4.3存储结构1)人算24点时:使用的是穷举法,对应一组数字,找出有可能的情况。 2)计算机算24点时:采用单链表作为存储结构,使用栈来进行表达式求值的原理实现。4.4使用说明例1:显示: 7 7 2 5 则您可以输入表达式: 2*5+7+7. 回车显示: Congratulations 例2.显示: 3 12 2 6 则您可以输入表达式: 2*3+6+12.回车显示: Congratulations例3. 显示:10 9 10 10则您可以输入表达式:?回车显示:Input any key,hint answer.附: 1)当玩家不会游戏时,可以输入?,游戏会给出答案;但有的四个数字不能算出24点,所以直接进入下个游戏。2)游戏存在着许多不足之处,比如没有注册功能,没有管理员的功能,所以不能进行对用户的管理,修改,添加等操作。 (五)编码系统主要功能代码1) /*进入游戏*/void game()/*进入游戏*/ int i,j,k,t,again,res,flag;char c;float num4;again=1; clock_t start, finish;double duration,n;while(again=1) system("cls");printf("tt *n");printf("tt * *n");printf("tt * 24game *n");printf("tt * *n");printf("tt *n"); printf("nntt "); srand(time(0); /*获取随机种子使得每次随机的值不同*/ for(i=0;i<4;i+) numi=(float)(rand()%13); /*获取13以内的随机数值*/ for(i=0;i<4;i+) printf("%2.0ft",numi); /*输出4个随机数值*/ printf("nn");start = clock(); self();/*自己算*/ finish = clock(); duration = (double)(finish - start) / CLOCKS_PER_SEC; if(result=24) printf("tt Congratulations!The correct answer.nn"); if(J<10) strcpy(herosJ.name ,temp1.name); strcpy(herosJ.sex ,temp1.sex); herosJ.time =duration; J+; else n=heros0.time; for(i=0;i<10;i+) if(herosi.time>n) herosi.time=n; j=i; strcpy(herosj.name ,temp1.name); strcpy(herosj.sex ,temp1.sex); herosj.time =duration; input_hero(); /*向英雄榜文件里写入信息*/ else printf("tt Input any key,Hint answer.nn");c=getch();if(c) for (i=0;i<4;i+) for (j=0;j<4;j+) if (j!=i) for (k=0;k<4;k+)if (k!=j && k!=i) for (t=0;t<4;t+) if (t!=i && t!=j && t!=k) res=treat(numi,numj,numk,numt); /*确保每次经排列后传递的数不可能相同*/ if (res=0) printf ("tt No answer !n"); printf ("ntt 1: go ontt2: exitn");printf ("ntt Please select (1 or 2):n");c=getchar();c=getchar();switch(c) case 1: again=1;break; case 2: c=getchar();users();break;2) /*将表达式压入栈中*/void calculate(char *p,s &s1) int i=strlen(p),m,n; while(i>=0) if(pi>=0&&pi<=9)push(s1,pi-0); else switch(pi) case*:pop(s1,m);pop(s1,n);push(s1,m*n);break; case+:pop(s1,m);pop(s1,n);push(s1,m+n);break; case-:pop(s1,m);pop(s1,n);push(s1,m-n);break; case/:pop(s1,m);pop(s1,n);push(s1,m/n);break; i-; pop(s1,m); result=m; printf("ntt yun suan jie guo shi:%dnn",m);3) /*判断运算符级别函数;*/int f(char c) int f=-1; switch(c) case+: case-:f=1;break; case*: case/:f=2;break; default:f=0;break; return f;4) /*判断字符是否为操作符*/bool Operator(char c) if(c=+|c=-|c=*|c=/) return 1; else return 0;5) /*将中缀表达式转化为前缀表达式*/void convert(char *s,char *p) char stack100; int top=0,j=0, len=0; printf("ttshu ru qiu jie biao da shi :"); scanf("%s",s); if(s0=) printf("tt error input!exit.n"); users(); else while(slen!=0) len+; for(int i=len-1;i>=0;) if(si>=48 && si<=57) pj=si; j+; if(si=) /*假如是回括号,将它压栈。*/ top+; stacktop=si; while(Operator(si) if(top=0|stacktop=)|f(si)>=f(stacktop) top+; stacktop=si; break; else pj=stacktop; top-;j+; if(si=() /*假如是开括号,栈中运算符逐个出栈并输出,直到遇到闭括号。闭括号出栈并丢弃。*/ while(stacktop!=) pj=stacktop; top-;j+; top-; i-; while(top!=0)/*假如输入完毕,栈中剩余的所有操作符出栈并加到输入串中*/ pj=stacktop; j+; top-; pj=0; i=-j; for(j=i;j>=i/2;j-) char t; t=pj;pj=pi-j;pi-j=t; 6) /*用户自己算24点*/void self() char p100; char p1100; convert(p,p1); s s1; initial(s1); calculate(p1,s1);int treat(float a,float b,float c,float d) int i,j,k;float sum1,sum2,sum3;for (i=0;i<4;i+) for (j=0;j<6;j+) for (k=0;k<6;k+) If(!(i=3&&b=0)&&(!(j=3&&c=0)&&(!(k=3 &&d=0) sum1=myF(i,a,b); sum2=myF(j,sum1,c); sum3=myF(k,sum2,d); if(fabs(sum3-24)<0.1) temp+; myPrint(1,i,j,k,a,b,c,d); if(k=2) sum1=myF(i,a,b); sum2=myF(j,c,d); sum3=sum1*sum2;if(fabs(sum3-24)<0.1) temp+; myPrint(2,i,j,k,a,b,c,d); if(k=3) sum1=myF(i,a,b); sum2=myF(j,c,d); if(sum2!=0) sum3=sum1/sum2;if (fabs(sum3-24)<0.1) temp+; myPrint(3,i,j,k,a,b,c,d); if (temp=0) return 0;else return 1;float myF(int flag,float m,float n)if(flag=0) return (m+n);if(flag=1) return (m-n);if(flag=2) return (m*n);if(flag=3) if(n=0) return 30000; else return (m/n);if(flag=4) return (n-m);if(flag=5) if(m=0) return 30000; else return (n/m);return 0;void myPrint(int type,int i,int j,int k,float a,float b,float c,float d)char sigle6; sigle0=+; sigle1=-; sigle2=*; sigle3=/; sigle4=-; sigle5=/;if(type=1) if(j=4 | j=5) if (k=4 | k=5) printf("tt %2.0f %c (%2.0f %c (%2.0f %c %2.0f) =24n",d,siglek,c,siglej,a,siglei,b);else printf("tt (%2.0f %c (%2.0f %c %2.0f) %c %2.0f =24n",c,siglej,a,siglei,b,siglek,d); else if(k=4 | k=5) printf("tt %2.0f %c (%2.0f %c %2.0f) %c %2.0f) =24n",d,siglek,a,siglei,b,siglej,c); else printf("tt (%2.0f %c %2.0f) %c %2.0f) %c %2.0f =24n",a,siglei,b,siglej,c,siglek,d); if(type=2 | type=3) printf("tt (%2.0f %c %2.0f) %c (%2.0f %c %2.0f) =24n",a,siglei,b,siglek,c,siglej,d);四、实验结果与分析1 系统各模块的运行界面(1) 运算正确:(2) 没有运算结果(3) 运算错误:2系统性能分析 通过该游戏系统,我们将以前人们通过手动算24点的游戏通过电脑来实现,电脑随机出牌,用户通过运算,在用户输入的时候,电脑会自动计时,通过对不同用户的游戏时间记录,来产生英雄榜,方便快捷。由于人员有限,该系统我们只编写了主要程序部分,对于游戏的注册及管理员的功能都尚未实现,有待改进和提高。五、实验心得通过这次课程设计,我收获很多。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。随着科学技术的不断发展,计算机在我们日常生活中无处不在,作为21世纪的大学生,学好计算机开发技术是非常重要的。我们应该紧随时代的步伐,不断地注入新的活力,才能不被社会淘汰。回顾这次课程实际,我感慨颇深,刚开学老师布置这个课题时,我满心疑问,不知从何入手,随着c语言和数据结构的慢慢学习深入,我懂得了很多东西,比如入栈,出栈,中缀和后缀的转换等等。将近一个月的课程设计中,我学会了很多东西,不仅巩固了之前所学,而且还学到了很多课本上没有学过的知识。通过这次课程设计,使我更加明白理论与实践相结合的重要性。“纸上得来终觉浅,绝知此事要躬行”,只有自己亲身去实践,我们才会有所得,有所会。在设计过程中,遇到了很多问题,有时候调试一段程序,翻阅图书,查找资料占据了很多时间。在设计中我发现了自己很多不足之处,对以前学的知识理解的不够深刻,掌握的不够牢固。在同学的帮助之下,解决了很多难点,对我的不足之处也做了弥补。通过c语言的课程实际,我了解到学习是个有序的过程,都是积少成多的过程,c语言的学习也是如此,从基本的替换,然后是循环,嵌套等等。从一开始编写简单的程序,到后来的循环,然后函数调用,由简到难,虽然学习的过程中有过很多很多困难,但是在老师和同学的帮助下都克服了。 总之,这次课程设计,我收获很多,理论上巩固了知识点,同时动手实践能力得到了很大的提高,为今后的工作奠定了基础。

注意事项

本文(24点游戏课程设计报告)为本站会员(仙***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!