您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > c++课程设计报告-掷骰子游戏
1目录一、课题设计的内容与主要功能.............................21.1题目内容............................................21.2功能...............................................2二.课题分析............................................22.1项目的实现方法......................................22.2类的声明...........................................32.3核心算法及其实现代码................................42.3程序流程图..........................................7三.主要功能的实现步骤...................................8四.程序测试............................................84.1测试计划............................................84.2测试过程............................................9五、总结...............................................12六、参考书籍...........................................14七、附件...............................................157.1程序的源代码.......................................15评分表………………………………………………………………272一、课题设计的内容与主要功能1.1题目内容编写程序实现投掷双骰子游戏,游戏规则为:游戏者每次投掷两颗骰子,每颗骰子是一个正方体,有6面上面分别标有1、2、3、4、5、6个圆点,当骰子停止时,将每颗骰子朝上的点的数相加,在第一次投掷骰时,如果所得到的和为7或11,那么游戏者为赢得胜利;如果所得到的和为2、3或12,那么游戏者为输掉了;如果和为4、5、6、8、9或10,那么为游戏者的点数;如要想赢得胜利,必须继续投掷骰子,直到取得自已的点数为止,但是如果投掷出的和为7或者连续投掷了6次仍未赚得点数,那么游戏者为输了。1.2功能该游戏的主要功能为:实现随机投掷两个骰子把其所得点数相加,然后根据点数和判断玩家的输、赢或平局。在游戏中有1.获得帮助2.玩一手游戏3.退出游戏三个提示,分别为玩家提供帮助指示、选择进入新的游戏、退出当前的游戏并为该局游戏显示游戏结果。二.课题分析2.1项目的实现方法这种小型的游戏的开发方法可以采用结构化方法分析与设计。首先,分析软件的逻辑模型,也就是这个软件需要“做什么”。然后,再建立软件的物理模型,既要“怎么做”的工程。该个程序由main()函数、实用的程序软件包utility.h文件及骰子游戏dice_game.h文件组成,在main()函数中,先建立类3DiceGame的对象objGame并调用类DiceGame的构造函数,为类的数据成员赋初值并开始游戏,再用对象objGame访问类的成员函数Game(),进入游戏,通过选项玩家选择进入游戏或退出游戏。在函数Game()中,先调用Help()函数显示游戏规则,并调用utility.h文件Rand类中SetRandSeed()函数设定当前时间为随机数种子,进入while循环中,显示游戏选项,玩家可选择1.获得帮助然后调用成员函数Help()显示提示;2.玩一手游戏然后调用成员函数RollDice(),把随机的两个骰子的点数赋值给整形数sum,通过switch()语句判断玩家输、赢或者平局。若玩家第一盘为平局状态为TIE,则该局骰子和为玩家的点数把sum赋值给myPoint,玩家可通过调用utility.h文件中的UserSaysYes()函数选择继续投骰子,直到赚到该点数时获胜状态为WIN,但是用if语句判断如果投掷出的和为7或者连续投掷出六次平局,则游戏者该局为输了LOSE。最后用while循环中的if语句为每一次输赢和平局计数并显示玩家的输赢的语句。3.退出游戏然后调用utility.h文件中的UserSaysYes()函数让玩家确定是否退出,退出后通过调用成员函数Show()显示游戏结果,游戏结束!2.2类的声明文件dice_game.h中定义一个筛子游戏类DiceGame,其声明如下:classDiceGame{Private//数据成员:intnumOfWin;//胜利数次intnumOfLose;//失败数次intnumOfTie;//平局数次//辅助函数intRollDice();//模拟投掷一次骰子voidHelp();//获得帮助voidShow();//显示统计结果public://方法声明:4DiceGame();//无参数的构造函数virtual~DiceGame(){}//析构函数voidGame();//模拟游戏};2.3核心算法及其实现代码1.设计当前时间为随机数种子,模拟投掷一次两个骰子,返回值为所投掷的两颗骰子向上一面的点数之和。代码如下:intDiceGame::RollDice()//模拟投掷一次骰子,返回值为所投的两颗骰子向上一面的点数之和{intnumOfDice1;//所投掷的第1颗骰子向上一面的点数intnumOfDice2//所投掷的第2颗骰子向上一面的点数intsum;//所投掷的两颗骰子向上一面的点数之和numOfDice1=1+Rand::GetRand(6);//模拟所投掷骰子1的点数numOfDice2=1+Rand::GetRand(6);//模拟所投掷骰子2的点数sum=numOfDice1+numOfDice2;//计算所投掷两颗骰子向上一面的点数之和cout选手掷骰子:numOfDice1+numOfDice2=sumendl;returnsum;//返回所掷骰子向上一面点数之和}2.通过if选择语句进入游戏项目2,模拟第一次投掷骰子,并用switch开关语句来判断枚举量status的状态是输、赢或者平局,如果是平局,则记录点数。代码如下:if(select==2)//输入2{sum=RollDice();//模拟掷骰子switch(sum){5case7://掷得7或11胜利case11:status=WIN;numOfWin++;break;case2://投掷得2、3、12,输了case3:case12:status=LOSE;numOfLose++;break;default://投得其他数值,处于平局status=TIE;myPoint=sum;numOfTie++;cout点数myPointendl;}3.通过status的状态用if条件语句判断玩家的输赢,如果是平局,既status==TIE时,利用UserSaysYes()函数让玩家选择是否继续游戏。若玩家选择继续游戏,则依然用if条件语句判断status的状态来判断输赢,只有玩家在六次以内再次投掷到相同的点数时,玩家即胜利,但是,若首先投掷到的点数和为7或者连续6次都是平局,则游戏为输了。代码如下:while(1){if(status==WIN){cout恭喜你,赢得游戏!endl;break;}if(status==LOSE){6cout很遗憾,你输了!endl;break;}while(status==TIE){cout你现在是平局,是否要继续游戏;if(UserSaysYes()){intagain;again=RollDice();//处于平局再次掷骰子if(myPoint==again)//掷得自己的点数,赢得胜利{status=WIN;numOfWin++;break;}elseif(again==7)//掷得7,输了{status=LOSE;numOfLose++;break;}else//平局{numOfTie++;if(numOfTie==6)//平局6次,输了{status=LOSE;cout你已平局6次,;break;}7开始}}}}4.如果玩家的输入有误,则需用if条件语句判断,并提示正确的输入。代码如下:if(select!=1&&select!=2&&select!=3)//若输入不是1,2,3重新输入{cout请用1,2,3回答endl;continue;}2.3程序流程图输入1231帮助2游戏开始3退出游戏显示结果按任意键退出8三.主要功能的实现步骤1.获得帮助玩家输入选择select为1,通过条件语句if(select==1)判断是否满足条件,然后再调用类的成员函数Help(),则显示帮助信息。2.选择一手游戏玩家输入选择select为2,在while循环中通过if(select==2)语句判断是否符合条件,再调用类的成员函数RollDice()模拟投掷一次骰子,返回值为所投掷的两颗骰子向上一面的点数之和,把RollDice()的返回值赋值给sum,再通过开关语句switch(sum)判断玩家第一手的输赢。若为平局,则该点数为玩家的点数,玩家可选择是否继续游戏if(UserSaysYes()),若玩家选择y,则可以再次投掷骰子again=RollDice(),掷自己的点数if(myPoint==again)则胜利;若玩家先投掷出点数7既elseif(again==7)或者平局次数达到6次if(numOfTie==6),则判断玩家为输了。3.退出游戏玩家输入选择select为3,在while()驯悍中通过语句elseif(select==3)判断,用语句if(UserSaysYes())确认玩家是否要退出游戏,若回答为”y”则跳出循环break,最后程序会调用类的成员函数Show()显示玩家游戏的结果。四.程序测试4.1测试计划●游戏开始进入的界面及显示提示●获得帮助●进入游戏并测试每一个路径(既测试每一种可能的结果)●退出游戏选项的测试94.2测试过程1.游戏开始时的界面及玩家选项的提示2.若玩家输入有误,则需提醒玩家输入正确的选项进入游戏3.若玩家中途忘记游戏规则,则课选择选项1,进入帮助提醒的界面104.玩家选择选项2,进入游戏,并在第一次投掷中获得胜利115.玩家进入游戏,第一次投掷获得点数,但最后投掷出了点数是7,所以失败了6.玩家第一希投掷为平局,获得点数,但在接下来的次投掷中连续6次平局,由游戏规则可知,玩家在此局中又失败了127.玩家玩完了游戏,选择选项3退出游戏,并显示玩家在此次游戏中的结果五、总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察的过程。而C++作为一门编程语言,对于我们自动化专业以后的学习和工作有着重要的作用,所以我们必须努力学习好并灵活运用。回顾此次C++课程设计,至今我仍感慨颇多。的确,从分析课题到最终的完成报告,从理论到实践,在整整一个星期的日子里,可以说得上是苦多于甜。但是通过这次课程设计确实学到了很多很多的的东西,不仅巩固了大一时学习的C++知识,而且通过多次上机操作学到了很多在书本上所没有学到过的知识,同时通过这一次实习,更加熟练了自己的使用编程软件VC6.0的操作技能。在这一次的实习中,把学习的C++知识运用到编写一个小型游戏软件,也学习了一些软件工程基本的内容和过程。自己亲身编写一个软件,虽然过程是艰难的,但是当最终看到自己的程序运行出了预期的结果时,那一刻,心里的确挺自豪的,也是13通过这一次实习的过程,发现编程是一个挺有成就
本文标题:c++课程设计报告-掷骰子游戏
链接地址:https://www.777doc.com/doc-6056976 .html