对抗小游戏课程设计报告

www.976yh.com_【官方首页】-澳门银河娱乐城计算机学院计算机科学与技术专业《程序设计综合课程设计》报告 (2011/2012 学年 第一学期) 学生姓名: 学生班级: 学生学号: 指导教师: 2012 年12 月27 目录第一章 课程设计的目的和要求 1.1课程设计的目的 1.2课程设计的目标 1.3课程设计要求 第二章课程设计任务内容................................................3 2.1 课程设计题目................................................3 2.2 系统模块图...................................................4 第三章 详细设计说明...................................................5 3.1 游戏规则....................................................5 3.2 游戏过程简介................................................5 3.3 设计思路 第四章软件使用说明及运行结果.........................................7 4.1 使用说明....................................................7 4.2 运行结果....................................................7 第五章 课程设计心得与体会.............................................13 错误!未定义书签。 附录一:参考文献.......................................................15 附录二:程序清单.........................................................................................................16 第一章课程设计的目的和要求 1.1 课程设计的目的 C++语言课程设计的主要目的是培养学生综合运用 C++程序设计课程所学到的知 识,编写C++程序解决实际问题的能力,以及严谨的工作态度和良好的程序设计习惯。 通过课程设计的训练,学生应该能够了解程序设计的基本开发过程,掌握编写、 调试和测试C++语言程序的基本技巧,充分理解结构化程序设计的基本方法。 C++语言程序设计的主要任务时要求学生遵循软件开发过程的基本规范,运用结 构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试 C++语言程序及编写设计报告。 本次课程设计是通过设计一个较为简单的“对抗小游戏”,进一步熟悉 C++中有 关各种知识的运用与掌握。了解系统开发的需求分析、模块分析、程序流程图、编 码测试、模块组装与整体调试的全过程,加深对 C++的理解与 Visual C++环境的使 用;逐步熟悉程序设计的方法,并养成良好的编程习惯,进一步培养完善的C++编程 设计思维,为以后进行软件编程、数据库管理等深入学习打下一个牢固基础 1.2 课程设计的目标 本课程设计的目标: 1.3课程设计要求 基本要求: 1.题目:设计一个“对抗小游戏”软件; 2.了解该系统软件开发的相关背景; 3.参考相关书籍学习课程设计的基本知识; 4.清楚所开发系统软件的各个相关功能,以便顺利开发系统软件; 5.对系统功能模块进行分析,写出设计说明文档; 6.设计完成的软件要便于操作和使用; 7.对自己所设计的程序进行调试,并不断完善; 8.在设计过程中熟练掌握软件编程的相关知识 9.详细体会并记录相关过程,并将心得体会写在课程设计报告中; 10.设计完成后提交课程设计报告。 第二章课程设计任务内容 2.1 课程设计题目 对抗小游戏 2.2系统模块图 开始调用函数Initialize1() ,Initialize2() 调用函数CheckScore() 结束 定义类的对象play 判断是否循环或结束分别输出Play.Player1(), Play.Player2() 是否加大赌注 输入 Play.plyrAddBet 分别输出Play.Computer1() Play.Computer2() 调用函数Increase() ,Decrease() 调用函数Loops() 由计算机自动判断是否加注 第三章详细设计说明 3.1 游戏规则 (1)本游戏采用人机对战方式,从A,2,3。www.976yh.com_【官方首页】-澳门银河娱乐城 为牌面的大小表示。(2)游戏在开始时系统默认赌注为 1,当双方进行对抗时,游戏者可根据自身的 牌点决定是否继续下注,例如拿到k,把握增大,则在计算机的牌点出来之前加大 赌注,但不超过5 (3)将双方牌点的比较扩大为两张牌点之和,若出现一组对子,则对子牌点大于任何单牌,若双方均为对子,则比较牌点之和。 (4)玩家的分数在0 或者大于50 时游戏则自动退出。www.976yh.com_【官方首页】-澳门银河娱乐城 (5)玩家如果在第一次发牌时没有加注,则系统默认电脑赢,玩家扣除一分,游戏 结束一轮会有玩家的游戏总分数(玩家的初始分数是20)。 3.2 游戏过程简介 3.3设计思路 vc++中,类有很好的封装性,要完成对抗游戏的以上功能,可以先构造一个类, 将所需要的函数放入其中,再根据需要,编写具体的函数源程序。该程序的过程较 为烦琐,要仔细考虑每一步,避免反复,尤其应当注意让函数的功能尽可能做的能 够解决多个问题。 第四章软件使用说明及运行结果 4.1 软件使用说明 玩家根据系统发的第一张牌的大小决定是否下注,这时系统提示玩家是否下注,下注输入1, 否则输入0。www.976yh.com_【官方首页】-澳门银河娱乐城这时游戏结束,电脑得一分,玩家损失1 分。如果玩家在第一张牌时下注,系统发 第二张牌,同时和电脑随机得到的牌相比较,最后得出玩家的最后成绩。这时系统提示玩家是否 继续,继续输入1,放弃输入0。如果玩家一直继续,则直到玩家的分数在0 或者50 的时候游戏 自动结束。 4.2 游戏运行结果(截图) 1011 12 第五章 课程设计心得与体会 13 对于课程设计一开始有一种一头雾水的感觉,它是干什么的,我要 怎么做。拿下来题目之后,觉得以我的能力根本就不可能实现这个题目 的要求,可是慢慢我发现它并非不可实现。只要耐心的分析它要的功能 需要什么函数实现,就可以做到。于是我就着手做这个程序,可是它也 并不像我想得那么简单。在设计中刚开始出现了一百多个错误,令我一 头雾水,但是在经过几天的检查与修改后,能够编译出来,这令我非常 的高兴,但是运行结果有点出乎我的意料,所运行的结果,不能达到所 期望的,但是经过一番修改后,能够输出,并且能进行游戏,这让我喜 出望外。 说实话这是我第一次,编写一个 200 多行的程序。虽然写的程序比 较繁琐,没有任何技巧,但我觉得这是个美好的开始,说明我也可以自 己做东西了。在我自己写出之后都有点不敢相信自己,因为对于我来说 是个编程的新手,刚学了一学期,在课程设计中,刚开始真有点对自己 失去信心,但是在我真正的开始编写时,就发现事情并不是我想的那么 糟,只要肯下决心就会让你自己发现原来自己的事,只有在自己真正的 做了之后,才能感觉到那种成功的喜悦,那种失败的酸辛。 这次课程设计也让我感觉得到了我的不足,我也从网上找到过相同的程 序源代码。www.976yh.com_【官方首页】-澳门银河娱乐城并且比我的实现的功能还要多,可是我的程序却要比他们的 多好几倍,这也使我很苦恼。我知道原因就是我的程序并没有分模块编 译,这也是问题所在,因为模块化设计部并不太明白。我想既然这些问 题暴露出来了,我也没必要回避了。这次设计先搞一段落,放假后才是 14 我追上别人的最好的时间,我将利用这段时间,好好的把这个弱项补回 没编程序时感觉难度很大,无从下手。当耐下心来从头至尾将源代码看了两遍才对程序有个模糊的认识。在修改程序时,发现有许多不懂和淡 忘的地方,回过头来查找相关资料,把问题一个个击破。并且有些较难 理解的语句在不断修改的过程中可以逐渐清晰。课程设计可以充分发挥 我的编程综合能力,将自己的编程知识串联起来,综合利用,自己的编 程能力。很高兴有这个机会促使我编程。总之,在这个程序设计中的收 获还是非常多的。 15 附录一: 参考文献 1.谭浩强著.c++程序设计 北京.清华大学出版社,2004 2.谭浩强著.c++程序设计题解与上机指导.北京:清华大学出版 社,2005 16 附录二:程序清单 #include #include #include //定义杂项函数及内存分配函数 #include //定义关于时间的函数 int flag; class CCard staticint nloop; //出牌的次数,游戏结束时给出的总的出牌次数 int nscore; //总分 int nwin,nlose; static int ndraw; //赢,输,平的次数 int nbet; //赌注 public: int ncard1,ncard2; intbet; CCard(); //构造函数 void setcard(); //随机产生2张牌 int addbet(int); //增加赌注,失败返回0 friend void compare(CCard &,CCard &);//友元函数,比较牌点的大小并显示结果 friend void showresult(CCard &,CCard &);//友元函数,输出输赢结果及最后的积分 intCCard::ndraw=0; int CCard::nloop=0; 17 CCard::CCard() nscore=20;bet=nscore; nwin=0; nlose=0; nbet=0; voidCCard::setcard() //srand(time(NULL));ncard1=(rand()%13+2); ncard2=(rand()%13+2); intCCard::addbet(int nbet=a;if(nbet>nscore||nbet<1) voidcompare(CCard &user,CCard &computer) 18if((user.ncard1+user.ncard2)>(computer.ncard1+computer.ncard2)) user.nscore+=computer.nbet;computer.nscore-=computer.nbet; user.nloop++; computer.nloop++; user.nwin++; computer.nlose++; user.bet=user.nscore; computer.bet=computer.nscore; if(computer.nscore<=0) showresult(user,computer);return; elseif((user.ncard1+user.ncard2)<(computer.ncard1+computer.ncard2)) computer.nscore+=user.nbet;user.nscore-=user.nbet; user.nloop++; computer.nloop++; computer.nwin++; user.nlose++; 19 user.bet=user.nscore; computer.bet=computer.nscore; if(user.nscore<=0) showresult(user,computer);return; cout<<"和局"<>start;switch(start) cout<<"开始发牌,期待一下吧„„";user.setcard(); computer.setcard(); break; case0:{showresult(user,computer);exit(0);} cout<1)cout<>cont; switch(cont) case0:{sel=0;goto nextplayer;} cout<<"你现在还有"<>bet; if(bet>5) cout<<"押注请不要超过5哦,重试一下吧"<>ch; switch(ch) sel=1;goto bingin; 25 break; h=user.addbet(bet);switch(h) case0:cout<<"你的剩余赌注已不足,请重新选择!";goto bet;break; case 1:break; cout<<"押注成功"<1)cout<>cont; switch(cont) cout<<"计算机的第一张牌是:"<1)cout<1)cout<

暂无简介

文档格式:
.doc
文档页数:
31页
文档大小:
701.5K
文档热度:
文档分类:
IT计算机 --  C/C++资料
文档标签:
游戏 课程 对抗 设计 报告 码测试

更多>> 相关文档

页面底部区域 foot.htm