课程设计报告(范例)_第1页
课程设计报告(范例)_第2页
课程设计报告(范例)_第3页
课程设计报告(范例)_第4页
课程设计报告(范例)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、河北工业大学计算机软件技术基础2012年课程设计报告芮效玉,信息工程学院信息工程学院通信122班名称,学生编号:122228,年级_ _ _一、标题:成就统计(11)二、设计理念1.总设计1)分析程序的功能玩家和电脑猜拳击(石头、纸、剪刀)。在每一个游戏过程中,玩家和电脑相互击打,然后输出输赢关系,并计算各自的获胜次数。2)总体系统结构:每个游戏的过程可以由以下几个部分完成:玩家出拳、电脑出拳、结果判断、结果关系的输出、统计信息的输出,以及玩家选择是否继续游戏。总共有六个步骤:组件函数名玩家选择PlayerChoice电脑打孔机计算机选择判断是赢还是输法官温纳输出输赢关系OutputWinne

2、r产出统计输出摘要继续游戏可以退出对于每一个游戏,有三个数据需要注意:玩家的出拳,电脑的出拳,以及输赢关系;统计信息有三个计数器:玩家的胜利次数、电脑的胜利次数和平局次数。这两组数据在内部高度耦合,因此考虑将它们封装为结构变量。玩家的胜利次数、电脑的胜利次数和平局次数的初始值应该是0。代表信息成员名称代表信息成员名称玩家的出拳应用层玩家获胜次数cPlayer电脑的威力电脑计算机胜利时代计算机双赢关系winOrLose抽签数量cDrawGame结构:游戏数据结构:游戏摘要变量:aGame变量:摘要此外,玩家可以选择三种出拳方式:石头、剪刀和布;还有三种情况,玩家赢了,电脑赢了和平游戏。它可以用相

3、应的数值来表示:冲头数字的双赢关系数字的石头0玩家获胜0剪刀1计算机胜利1布2画22.各功能模块的设计:说明各功能模块的实现方法1)PlayerChoice模块这个函数返回用户的输入,所以返回值是整数类型的。要实现的功能是询问用户选择哪个(0石、1剪刀、2布),然后判断用户输入是否合法(值为0、1、2中的一个),如果合法,返回用户输入,如果不合法,要求用户重新输入。有关代码,请参见PlayerChoice函数。2)计算机选择模块这个函数返回计算机的穿孔,所以返回值是整数类型的。rand函数用于对计算机打孔,rand函数返回一个介于0和32767之间的随机值。为了确保该值介于0和2之间,必须将获

4、得的随机数乘以3,然后返回余数。在主函数中,这个函数的返回值被提供给一个变量的计算机成员。有关代码,请参见计算机选择功能。3)判断神经元模块该函数根据玩家和电脑的出拳情况返回输赢关系,返回值为整数类型。这个判断可以通过查表来解决。首先,构建判断表:计算机石头剪刀布运动员012石头0201剪刀1120布2012然后,根据玩家的出拳次数作为行号,计算机的出拳次数作为列号,从二维数组中直接得到输赢关系。因为函数需要玩家和计算机的出拳,所以有必要将aGame变量传递给函数。有关代码,请参见判断函数。4)输出赢家模块该函数根据aGame的值输出结果描述,不需要返回值。你可以用拟人化的方式输出结果,例如:

5、“你摆脱了石头,电脑摆脱了剪刀。恭喜你,你赢了。”或者“你做了剪刀,电脑做了石头。不幸的是,你输了。”“你是石头,电脑是石头,你们两个绑在一起。”然后根据玩家和电脑的出拳输出相应的石头、剪刀或布,并根据结果输出最终结果。播放器或电脑的敲击声数字的输赢情况输出语符列0石头0恭喜你,你赢了1剪刀1很遗憾你输了2布2你们两个打成平手了有关代码,请参见OutputWinner函数。5)输出摘要模块这个函数输出统计信息,首先根据这个游戏的结果修改计数值,所以主函数需要将汇总变量的地址传递给这个函数来修改计数值。修改后输出统计数据。有关代码,请参见输出摘要函数。6)可以退出模块这个函数返回你是否可以退出游

6、戏。返回值为1表示退出,返回值为0表示继续游戏。有必要询问用户是否退出游戏(0继续,1退出)。如果用户输入的值不是0和1,则要求用户重新输入,然后返回用户输入的值。有关代码,请参见退出函数。7)创新设计电脑希望自己的胜利次数与玩家的胜利次数之比能够保持在3:2以上,所以电脑需要作弊。每当计算机发现其当前比率小于1.5时,计算机选择直接获胜。如果玩家是0石头,计算机直接选择2块布和1把剪刀,如果玩家是2块布,计算机直接选择1把剪刀,这是一个明显的查找表2,0,1。此时,ComputerChoice函数需要一个名称变量和一个摘要变量。有关改进的代码,请参见ComputerChoice函数(第二版)

7、。3.设计中的主要难点及解决方法设计中使用的rand函数在首次使用时总是得到相同的随机数序列。查阅数据后,我们知道在使用rand函数之前,我们必须使用srand函数设置随机数种子,最后使用time函数返回时钟周期数作为程序中的种子数。4.你设计的程序的最终功能1)解释你的程序可以完成的功能用户可以选择打孔,然后判断结果并输出结果和统计信息。2)准备测试数据和运行结果三.程序清单1)1)主要功能/主要功能void main()/使用cpu的毫秒时间来选择随机数种子。(无符号整数)时间(空);/声明结构数据变量游戏数据应用程序;游戏摘要=0,0,0 ;而(1)应用程序层=播放选择();/玩家出拳电

8、脑=电脑选择;/电脑打孔机法官,法官。/判断输赢关系output winner(AgAme);/输出结果输出摘要(aGame,摘要);/输出统计信息如果(可以退出()中断;2)播放选择功能int PlayerChoice()int n;而(1)Cout 请选择你想玩的拳头(0石头,1剪刀,2布):;CIN;/如果输入合法,结束循环if (n=0 n=2)打破;Cout,你输入错误。请输入0、1和2中的一个。 n ;返回n;3)计算机选择功能int ComputerChoice()返回兰特()% 3;4)判断神经元功能int法官(游戏数据g)/输赢关系表静态int winOrLose33=2,0

9、,1,1,2,0,0,1,2 ;/根据玩家的选择和电脑的选择查表返回WinOrLoseg . pplyerg . PCComputer;5)输出赢家功能无效输出赢家(游戏数据g)/输出信息表静char *选择3= 石头,剪刀,布 ;静态char *winner3=恭喜你,你赢了,抱歉,你输了,你们两个打成平手了。/根据用户的选择,电脑的选择和输赢的关系,查表你说的选择,电脑显示“选择”, winnerg.winOrLose .endl6)输出摘要功能无效输出摘要(游戏数据g,游戏摘要*if (g.winOrLose=0)/玩家获胜s-cPlayer;否则if (g.winOrLose=1)/计

10、算机胜利s-计算机;其他/绘制s-CDrawGame;/输出统计信息cout - n ; Cout 玩家获胜次数: s-cPlayer endl;cout t computer wins:s-c computer dl; Cout 绘制次数: s-cdrawname endl;cout - n ;7)退出功能int可以退出()int n;而(1)Cout,你想继续玩吗?(0继续,1退出);cinn/如果输入合法,结束循环if (n=0 n=1)中断;您的输入不正确。请重新输入 endl返回n;8)计算机选择功能(第二版)国际计算机选择(游戏数据g,游戏摘要s)/定义获胜的牌桌int toWin3=2,0,1 ;if(双)s . c计算机/(双)s . c第1.5层)返回兰特()% 3;其他/根据玩家的选择查表返回至ing . ppl layer;第四,对于这个设计主题,什么是更完美的计划1.对完成的项目进行自我评估。我的程序很好地完成了任务中指定的设计内容,完成了创新所需的设计,并且运行正常。2.为这个主题提出一个更完美的计划当展示石头、剪刀和布时,考虑使用ASCII码进行绘制,并添加颜色控制,使程序更加友好和吸引人。V.收获与体验这部分不会写实例,但对于我们工科学生来说,这部分应该写一些通过课程设计对编程的新认识和

温馨提示

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

评论

0/150

提交评论