对抗小游戏课程设计报告_第1页
对抗小游戏课程设计报告_第2页
对抗小游戏课程设计报告_第3页
对抗小游戏课程设计报告_第4页
对抗小游戏课程设计报告_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、计算机学院计算机科学与技术专业?程序设计综合课程设计?报告2021/2021学年 第一学期学生姓名:学生班级:学生学号:指导教师:2021年12月27日对 抗 小 游 戏目录第一章 课程设计的目的和要求 11.1课程设计的目的11.2课程设计的目标11.3课程设计要求2第二章 课程设计任务内容 32.1课程设计题目32.2系统模块图 4第三章详细设计说明53.1游戏规那么53.2游戏过程简介 53.3设计思路6第四章 软件使用说明及运行结果 74.1使用说明74.2运行结果7第五章 课程设计心得与体会 13错误!未定义书签.附录一: 参考文献15附录二: 程序清单16第一章课程设计的目的和要求

2、1.1课程设计的目的C+语言课程设计的主要目的是培养学生综合运用C+程序设计课程所学到的知识,编写C+程序解决实际问题的水平,以及严谨的工作态度和良好的程序设计习惯.通过课程设计的练习,学生应该能够了解程序设计的根本开发过程,掌握编写、 调试和测试C+语言程序的根本技巧,充分理解结构化程序设计的根本方法.C+语言程序设计的主要任务时要求学生遵循软件开发过程的根本标准,运用结 构化程序设计的方法,根据课程设计的题目要求,分析、设计、编写、调试和测试 C+语言程序及编写设计报告.本次课程设计是通过设计一个较为简单的“对抗小游戏,进一步熟悉C+中有关各种知识的运用与掌握.了解系统开发的需求分析、模块

3、分析、程序流程图、编 码测试、模块组装与整体调试的全过程,加深对C+的理解与Visual C+环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯,进一步培养完善的C+S程设计思维,为以后进行软件编程、数据库治理等深入学习打下一个牢固根底1.2课程设计的目标本课程设计的目标:1. 稳固和加深学生对C+语言课程的根本知识的理解和掌握;2. 掌握C+语言编程和程序调试的根本技能;3. 掌握利用C+语言进行软件设计的方法;4. 提升书写程序设计说明文档的水平;5. 提升运用C+语言解决实际问题的水平.1.3 课程设计要求根本要求:1. 题目:设计一个“对抗小游戏软件;2. 了解该系统软件开发的相

4、关背景;3. 参考相关书籍学习课程设计的根本知识;4. 清楚所开发系统软件的各个相关功能,以便顺利开发系统软件;5. 对系统功能模块进行分析,写出设计说明文档;6. 设计完成的软件要便于操作和使用;7. 对自己所设计的程序进行调试,并不断完善;8. 在设计过程中熟练掌握软件编程的相关知识9. 详细体会并记录相关过程,并将心得体会写在课程设计报告中;10. 设计完成后提交课程设计报告.32第二章 课程设计任务内容2.1课程设计题目对抗小游戏2.2系统模块图开始第三章详细设计说明3.1 游戏规那么1本游戏采用人机对战方式,从 A, 2,3.K为牌面的大小表示.2 游戏在开始时系统默认赌注为 1,当

5、双方进行对抗时,游戏者可根据自身的 牌点决定是否继续下注,例如拿到k,把握增大,那么在计算机的牌点出来之前加大 赌注,但不超过5点.3将双方牌点的比拟扩大为两张牌点之和,假设出现一组对子,那么对子牌点大于任 何单牌,假设双方均为对子,那么比拟牌点之和.4玩家的分数在0或者大于50时游戏那么自动退出.5玩家如果在第一次发牌时没有加注,那么系统默认电脑赢,玩家扣除一分,游戏结束一轮会有玩家的游戏总分数玩家的初始分数是20.3.2游戏过程简介3.3设计思路vc+中,类有很好的封装性,要完成对抗游戏的以上功能,可以先构造一个类, 将所需要的函数放入其中,再根据需要,编写具体的函数源程序.该程序的过程较

6、 为烦琐,要仔细考虑每一步,防止反复,尤其应当注意让函数的功能尽可能做的能 够解决多个问题.第四章软件使用说明及运行结果4.1软件使用说明玩家根据系统发的第一张牌的大小决定是否下注,这时系统提示玩家是否下注,下注输入1,否那么输入0.这时游戏结束,电脑得一分,玩家损失1分.如果玩家在第一张牌时下注,系统发第二张牌,同时和电脑随机得到的牌相比拟,最后得出玩家的最后成绩.这时系统提示玩家是否 继续,继续输入1,放弃输入0.如果玩家一直继续,那么直到玩家的分数在0或者50的时候游戏自动结束.4.2游戏运行结果截图-D:圍建文样夹D亡bug说ppi心亡-出家玩要准玩当只方加注,總端统自动结束游戏游戏第

7、i局SSSIsSlia.wti “ 退出D: I新堂之牛耒I.亡bugCppl.exe囑驛麗番统自动结束游戏数为注力2始畫一 SS 备家玩要 准署只游戏第嵋玩家的堇一张牌是J请问玩奈杲否要加注继续口 "退出 站入加注的金额,不大于5D:軒建交阵夹De bu gCp pl. exe推备玩家只梦蠶统自动结束游戏游戏第i局聽勰黯皿“退出啃俞入加注的金,额不大于5勺牌犬辛碍的第二张牌是 电脑的第二卿卑楚1111 退出0D:燼達文彳匚夹DebugCppl exe口:准玩当只游戏第丄局齬彌鮭继知“退岀叩D:霽建我件夹、X bugCppl.exe起始分娄二方加注就翹麟统自动结束踊游戏第熄書需I讓歸

8、,继绑退岀聞IIB岀牌出删大经:17iaftsws 基选统脑家数1 选的也tttt电玩分11 家脑脑脯畀局憂 玩富脚55此聲D:新宦文徉夹氏bug* ppi冶炬7戏第谒家的第- 青冋玩豢点.刊3严X"MAX只要有一方加汪玩家的起始分数 当玩家的井数筲豐齋继绑退出gTigatsw 理 sffiii 选的也ttn电玩分1 家肪脑;局藝 玩霽器此你继 Jr这是第玄局游戏瞬遵融继绑讣退岀简、回 23D:谛雀文此夹 De b旳垃pp 1.游戏第丄局玩家的蔓一张牌是2请间玩隶是否要加注继续【讣退出昉0洗家选桎了退匕 电憧的螢一卷牌是5 审脑也蓬择逋出 n# non纟充计井井箱井井# 护电1E&#

9、174;大f fewwg1 分 疆“】退出01 这是第?局游戏坯家的第是A ;请向玩崇是善婪加洼继续M K退岀値D输入加注的金额'不大于5匚电脑曲輕大辛分i®JT517Stii 退出町1爲分数这是第2局游戏是加樨要S 的玩 家间是暑疋脯餉牌l/x /K/K广=3-牌二二计由囂d mm第统“家数1 金塁的的tttt你玩分L1 注肆!hEtttt喜局豊UXI7第五章课程设计心得与体会对于课程设计一开始有一种一头雾水的感觉,它是干什么的,我要 怎么做.拿下来题目之后,觉得以我的水平根本就不可能实现这个题目 的要求,可是慢慢我发现它并非不可实现.只要耐心的分析它要的功能 需要什么函数

10、实现,就可以做到.于是我就着手做这个程序,可是它也 并不像我想得那么简单.在设计中刚开始出现了一百多个错误,令我一 头雾水,但是在经过几天的检查与修改后,能够编译出来,这令我非常 的快乐,但是运行结果有点出乎我的意料,所运行的结果,不能到达所 期望的,但是经过一番修改后,能够输出,并且能进行游戏,这让我喜 出望外.说实话这是我第一次,编写一个 200多行的程序.虽然写的程序比 较繁琐,没有任何技巧,但我觉得这是个美好的开始,说明我也可以自 己做东西了.在我自己写出之后都有点不敢相信自己,由于对于我来说 是个编程的新手,刚学了一学期,在课程设计中,刚开始真有点对自己 失去信心,但是在我真正的开始

11、编写时,就发现事情并不是我想的那么 糟,只要肯下决心就会让你自己发现原来自己的事,只有在自己真正的 做了之后,才能感觉到那种成功的喜悦,那种失败的酸辛.这次课程设计也让我感觉得到了我的缺乏,我也从网上找到过相同的程 序源代码.并且比我的实现的功能还要多,可是我的程序却要比他们的 多好几倍,这也使我很苦恼.我知道原因就是我的程序并没有分模块编 译,这也是问题所在,由于模块化设计部并不太明白.我想既然这些问 题暴露出来了,我也没必要回避了.这次设计先搞一段落,放假后才是 我追上别人的最好的时间,我将利用这段时间,好好的把这个弱项补回 来.没编程序时感觉难度很大,无从下手.当耐下心来从头至尾将源代码

12、看 了两遍才对程序有个模糊的熟悉.在修改程序时,发现有许多不懂和淡 忘的地方,回过头来查找相关资料,把问题一个个击破.并且有些较难 理解的语句在不断修改的过程中可以逐渐清楚.课程设计可以充分发挥 我的编程综合水平,将自己的编程知识串联起来,综合利用,自己的编 程水平.很快乐有这个时机促使我编程.总之,在这个程序设计中的收 获还是非常多的.附录参考文献2004清华大学出版1.谭浩强著.C+程序设计 北京.清华大学出版社,2.谭浩强著.C+程序设计题解与上机指导.北京:社,2005附录二:程序清单#in clude<iostream.h>#in clude<math.h>#

13、in clude<stdlib.h>/定义杂项函数及内存分配函数#in clude<time.h> /定义关于时间的函数static int nlo op; / int n score;/int n wi n,n lose;static int n draw;/构造函数随机产生2张牌增加赌注,失败返回0int flag; class CCard出牌的次数,游戏结束时给出的总的出牌次数总分赢,输,平的次数int nbet; /赌注public:intn card1, ncard2; /有2 张牌int bet;CCard();/void setcard(); / int

14、addbet( in t);/frie nd void compare(CCard & ,CCard &);/ 友元函数,比拟牌点的大小并显示结果friend void showresult(CCard & ,CCard &);/友元函数,输出输赢结果及最后的积分;int CCard: ndraw=0;int CCard: nl oop=0;CCard:CCard()n score=20;bet=n score;n wi n=0;nl ose=0;n bet=0;void CCard:setcard()/sran d(time(NULL);n card 仁(ra

15、 nd()%13+2);n card2=(ra nd()%13+2);int CCard:addbet(i nt a)n bet=a;if(n bet >n score| nbet<1)return 0;return 1;void compare(CCard &user,CCard &computer)if(user .n cardl+user .n card2)>(computer. ncardl+computer. ncard2)user. nscore+=computer. nbet;computer .n score-=computer. nbet;u

16、ser. nlo op+;computer. nlo op+;user. nwin+;computer. nl ose+;user.bet=user. nscore;computer.bet=computer .n score;if(computer. nscore<=0)showresult(user,computer);return;cout<<"这局玩家赢"<<endl;else if(user. ncard1+user. ncard2)v(computer. ncard1+computer. ncard2)computer. nscor

17、e+=user. nbet;user. nscore-=user. nbet;user. nlo op+;computer. nlo op+;computer .nwin+;user. nl ose+;user.bet=user. nscore;computer.bet=computer .n score;if(user. nscore<=0)showresult(user,computer);return;coutvv"这局计算机赢"<<endl;elsecoutvv"和局"<<endl;user. nlo op+;com

18、puter. ndraw+;void showresult(CCard & user,CCard& computer)coutvv" 游戏结束! 结果: "<<e ndl;if(user.nscorev=0) coutvv"计算机胜出,玩家要加油咯!"vvendl;else coutvv" 恭喜玩家胜出,再接再厉!"vve ndl;coutvv"出牌数:"vvuser.nloopvvendl;coutvv"玩家积分:"vvuser.nscorevvendl;coutv

19、v"玩家胜的次数:"vvuser.nwinvvendl;coutvv"玩家负的次数:"vvuser.nlosevvendl;coutvv"玩家平的次数:"vvuser.ndrawvvendl;coutvv"计算机积分:"vvcomputer.nscorevvendl;coutvv"计算机胜的次数:"vvcomputer.nwinvvendl;coutvv"计算机负的次数:"vvcomputer.nlosevvendl;coutvv"计算机平的次数:"vvc

20、omputer.ndrawvvendl;coutvv""vve ndl;flag=1;user. nlo op=0;user. ndraw=0;coutvv"游戏结束,按任意键退出"vvendl; system("pause"); void mai n()select:flag=0;int h,start,bet,c on t,sel=1;char ch;CCard user,computer;coutvv"开始游戏请按1"vv" "vv" 放弃请选0"<<end

21、l;bi ngin :if(flag=1) system("cls");goto select;cin> >start;switch(start)case 1: coutvv"开始发牌,期待一下吧"user.setcard();computer.setcard();break;case 0:showresult(user,computer);exit(0);coutvve ndl;coutvv"你的第一张牌是:"vvendl;if(user. ncard1v=10 && user. ncard1>1)

22、 coutvvuser. ncardl;elseswitch(user. ncardl)case 14:coutvv" A"break;case 11:coutvv" J"break;case 12:cout<<" Q"break;case 13:cout<<" K"coutvve ndl;coutvv"是否选择下注:"v<endl;cout<v" 选1下注,选0放弃"<<endl;cin»cont;switch(c

23、ont)case 0:sel=0;goto n extplayer;coutvv"你现在还有"vvuser.betvv"赌注"<<endl;bet:coutvv"请押赌注"vvendl;cin> >bet;if(bet>5)coutvv"押注请不要超过5哦,重试一下吧"vvendl;goto bet;if(!(user.addbet(bet)&&computer.addbet(bet)coutvv"押注要大于0哟,再来一次"vvendl;goto b

24、et;n extplayer:if(sel=0)switch(computer. ncardl+computer. ncard2)case 28:case 27:case 26:case 25:case 24:bet=5;break;case 23:case 22:case 21:case 20:case 19:bet=4;break;case 18:case 17:case 16:case 15:case 14:bet=3;break;case 13:case 12:bet=2;break;case 11:case 10:case 9:bet=1;break;case 8:case 7:ca

25、se 6:bet=2;break;case 5:case 4:case 3:case 2:case 1:bet=1;break;while(!(user.addbet(bet)&&computer.addbet(bet)bet-;coutvv"计算机下注"vvbetvv",你是否接受Y/N"«endl;cin> >ch;switch(ch)case Y:case 'y':break; case 'N':case 'n':coutvv"继续游戏请选1,退出游戏请

26、按0"vvendl; sel=1;goto bingin;break;h=user.addbet(bet);switch(h)case O:cout<<" 你的剩余赌注已缺乏,请重新选择!;goto bet;break;case 1:break;coutvv"押注成功"<<endl;cout<< "你的第二张牌是:"<<e ndl;if(user. ncard2<=10 && user. ncard2>1) cout<<user. ncard2;elseswitch(user. ncard2)case 14:cout<<" A"break;case 11:cout<<" J"break;case 12:cout<<" Q"break;case 13:cout<<" K"coutvve ndl;coutvv"继续请

温馨提示

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

评论

0/150

提交评论