




免费预览已结束,剩余24页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 报 告课程名称 C+语言课程设计 课题名称 投掷骰子游戏 专 业 班 级 学 号 姓 名 指导教师 年 月 日湖南工程学院课 程 设 计 任 务 书课程名称 C+语言课程设计课 题 投掷骰子游戏 专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 年 月 日任务完成日期 年 月 日一、 设计内容与设计要求1、设计内容:课题三、投掷骰子游戏 编写程序实现游戏:游戏者每次投掷两颗骰子,每颗骰子是一个正方体,有6面上面分别标有1、2、3、4、5、6个圆点,当骰子停止时,将每颗骰子朝上的点的数相加,在第一次投掷骰时, 如果所得到的和为7或11,那么游戏者为赢得胜利; 如果所得到的和为2、3或12,那么游戏者为输掉了;如果和为4、5、6、8、9或10,那么为游戏者的点数;如要想赢得胜利,必须继续投掷骰子,直到取得自已的点数为止, 但是如果投掷出的和为7,那么游戏者为输了。2、设计要求:1,学生从四个题目中任意选择并完成一个题目。要求每个学生能独立思考认真并按时完成本课程设计所包含的所有内容。2,要求学生必须按照课程设计报告的完整格式说明设计内容,设计任务分析过程和算法,给全部源程序,并做出总结。3设计报告的完整格式应包括以下部分的内容:l 课题设计内容与主要功能l 课题分析;分析课程设计项目的实现方法l 程序实现步骤l 程序测试结果与结论l 程序清单l 总结与体会二、进度安排 6月22日到 6 月26日 时 间上午下午1-4节(四小时)5-8节(四小时)6月22号布置课题,题目讲解查阅资料6月23号上机编程查阅资料6月24号上机编程上机编程6月25号上机编程撰写报告6月26号撰写报告撰写报告附:课程设计报告装订顺序:封面、任务书、目录、正文、附件(A4大小的图纸及程序清单)、评分表。 正文的格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。正文的内容:一、课题设计内容与主要功能。二、课题分析:分析课程设计项目的实现方法,并写出类声明与核心算法实现代码。三、主要功能的实现步骤。四、程序测试与结论:应包括课程设计程序的屏幕显示,并加以简单的文字说明。五、总结。六、附件(所有程序的原代码,要求对程序写出必要的注释)。目 录一、课题设计的内容与主要功能 1.课题设计的内容 -2.主要功能 二、课题分析1程序的流程图2.类的声明与核心算法的实现代码三、主要功能的实现与步骤1.获得游戏帮助功能2.显示游戏数据功能3.模拟游戏功能四、程序测试与运行结果五、总结六、附件七、参考文献八、评分表一、课题设计内容与主要功能1.课题设计的内容 设计一个模拟投掷骰子的游戏程序,其游戏基本内容为,游戏者每次投掷两颗骰子,每颗骰子是一个正方体,有6面上面分别标有1、2、3、4、5、6个圆点,当骰子停止时,要将每颗骰子朝上的点的数相加,在第一次投掷骰时, 如果所得到的和为7或11,那么游戏者为赢得胜利; 如果所得到的和为2、3或12,那么游戏者为输掉了;如果和为4、5、6、8、9或10,那么为游戏者的点数;如要想赢得胜利,必须继续投掷骰子,直到取得自已的点数为止, 但是如果投掷出的和为7,那么游戏者为输了。设计该程序中应包括以下几个功能:1. 主菜单界面。包含所具有所有功能的选项。2. 获得游戏帮助功能。告诉游戏者游戏规则。3. 显示游戏数据功能。在游戏结束时,显示游戏者获得的游戏数据。4. 模拟游戏功能。选择进入,开始游戏。5. 退出模拟游戏功能。玩完游戏后退出程序。2.主要功能1.主菜单程序是通过类的成员函数Game()来实现对主菜单的输入与输出的处理。2.获得游戏帮助功能程序是由类的成员函数Help()来实现。3.显示游戏数据功能程序是由类的成员函数Show()来实现。4.模拟游戏功能程序是由类的成员函数Game()来实现。5.退出模拟游戏功能 使程序退出工作状态。二、课题分析1项目的实现方法开始程序选 择获得帮助玩一手游戏退出显示数据赢得游戏输了游戏获得平局是 否继 续游 戏结 果NY平局继续投掷骰子自 动判 断结 果赢得游戏输了游戏2类的声明与核心算法代码 骰子游戏类class DiceGameprivate:/ 数据成员:int numOfWin; / 胜利数次int numOfLose;/ 失败数次int numOfTie; / 平局数次/ 辅助函数int RollDice(); / 模拟投掷一次骰子void Help(); / 获得帮助void Show(); / 显示统计结果public:/ 方法声明:DiceGame();/ 无参数的构造函数virtual DiceGame() / 析构函数void Game(); / 模拟游戏;三、主要功能的实现与步骤1.获得游戏帮助功能void DiceGame:Help()/ 获得帮助cout 游戏者每次投掷两颗骰子,每个骰子是一个正方体有 endl;cout 6面上面分别标有1、2、3、4、5、6个圆点,当骰子停止时 endl;cout 将每个骰子朝上的点的数相加,在第一次投掷骰时, 如果 endl;cout 所得到的和为7或11,那么游戏者为赢得胜利; 如果所得到 endl;cout 的和为2、3或12,那么游戏者为输掉了;如果和为4、5、6 endl; cout 、8、9或10,那么为游戏者的点数;如要想赢得胜利,必 endl;cout 须继续投掷骰子,直到取得自已的点数为止, 但是如果投 endl;cout 掷出的和为7,那么游戏者为输了. endl;2.显示游戏数据功能void DiceGame:Show()/ 显示统计结果cout 您的最后游戏数据统计: endl;cout 获胜 numOfWin 次 endl;cout 失败 numOfLose 次 endl;cout 平局 numOfTie 次 endl endl ;cout - endl;cout endl;cout endl; cout - endl;3.模拟游戏功能void DiceGame:Game()/ 模拟游戏 int i(0);int select = 1; int sum, myPoint;GameStatus status;/ 游戏状态Rand:SetRandSeed();/ 设置当前时间为随机数种子 Help(); / 获得帮助 while (select != 5)cout endl endl 请选择下面序号: endl;cout 1. 获得帮助 endl;cout 2. 注意事项 endl;cout 4. 玩一手游戏 endl; cout 5. 退出游戏 select;/ 输入选择switch (select)case 1:/ 获得帮助Help();break;case 2: / 注意事项 Attention();break; case 4:sum = RollDice(); / 第一次投掷骰子switch (sum)case 7:case 11: / 第一次投掷骰子就赢了status = WIN;break;case 2:case 3:case 12: / 第一次投掷骰子就输了status = LOSE;break;default: / 记下点数myPoint = sum;cout 点数为 myPoint . endl;status = TIE; / 表示平局break; while (status = TIE)/ 游戏处于平局状态cout 游戏现处于平局,是否选择继续投掷取得您的点数;if (UserSaysYes()/ 选择继投掷sum = RollDice();/ 继续投掷骰子if (sum = myPoint)/ 得到自已想要的点数,赢得胜利status = WIN;else if (sum = 7)/ 投出点数7,输了status = LOSE;else/ 选择平局break;switch (status)case WIN:/ 选手赢得胜利 cout 恭喜您赢得胜利,手气不错哦! =2) / 选手连续赢了两盘以上cout 恭喜您已经连续赢了 i 盘,再接再厉吧! endl endl; break;case LOSE:/ 选手输了cout 哦,对不起,您输了,不要灰心,继续加油! endl;numOfLose+; / 累加选手失败次数i=0; / 清除选手连续获胜次数break;case TIE:/ 平局cout 获得平局,想获得胜利,继续吧! endl;numOfTie+;/ 累加选手平局次数break;break;Show();/ 显示统计结果四、程序测试与运行结果.运行程序。.显示主界面3.数据处理测试,如图所示游戏开始游戏帮助2.投掷结果情况游戏平局游戏胜利游戏输了退出游戏五总结第一次接触 C+时,感觉什么都很朦胧,但通过老师的悉心教导和跟同学们之间的沟通与交流后,学会了很多东西。从一个简单的变量,表达式到语句,函数。才发现那些程序真的很有趣,思维能力也渐渐的提高了,看到程序知道怎么分析怎么运用了,尽管有的时候会因为不懂而郁闷,有的时候也想过放弃,但最终还是坚持了下来啊。现在我们在做程序设计,首先不知道从何做起,但经过查阅资料和问老师,渐渐的按着那个模式做,终于有点点成就了哈,心里甜甜的。接触一门新课程接触一些新东西,虽然路走的很艰辛,但懂得了怎么去挑战困难,战胜自己,学到的不仅仅是一门新知识,而且学到的是一种坚持,一种信念。感谢老师和同学们这一学期对我的关心与教导!六、附件/ 文件路径名:dice_gamemain.cpp#include utility.h/ 实用程序软件包#include dice_game.h/ 骰子游戏int main(void)/ 主函数main(void)DiceGame objGame;/ 骰子游戏对象objGame.Game();/ 运行游戏system(PAUSE);/ 调用库函数system()return 0;/ 返回值0, 返回操作系统#ifndef _UTILITY_H_/ 如果没有定义_UTILITY_H_#define _UTILITY_H_/ 那么定义_UTILITY_H_/ 实用程序工具包#ifdef _MSC_VER/ 表示是Visual C+ #if _MSC_VER = 1200/ 表示Visual C+6.0/ 标准库头文件#include / 标准串和操作#include / 标准流操作#include / 极限#include / 数据函数#include / 文件输入输出#include / 字符处理#include / 日期和时间函数#include / 标准库#include / 标准输入输出#include / 输入输出流格式设置#include / 支持变长函数参数#include / 支持断言#else/ 其它版本的Visual C+/ ANSI C+标准库头文件#include / 标准串和操作#include / 标准流操作#include / 极限#include / 数据函数#include / 文件输入输出#include / 字符处理#include / 日期和时间函数#include / 标准库#include / 标准输入输出#include / 输入输出流格式设置#include / 支持变长函数参数#include / 支持断言using namespace std;/ 标准库包含在命名空间std中#endif/ _MSC_VER = 1200#else/ 非Visual C+ / ANSI C+标准库头文件#include / 标准串操作#include / 标准流操作#include / 极限#include / 数据函数#include / 文件输入输出#include / 字符处理#include / 日期和时间函数#include / 标准库#include / 标准输入输出#include / 输入输出流格式设置#include / 支持变长函数参数#include / 支持断言using namespace std;/ 标准库包含在命名空间std中#endif/ _MSC_VER/ 实用函数char GetChar(istream &inStream = cin); / 从输入流inStream中跳过空格及制表符获取一字符bool UserSaysYes();/ 当用户肯定回答(yes)时, 返回true, 用户否定回答(no)时,返回false/ 函数模板template void Swap(ElemType &e1, ElemType &e2);/ 交换e1, e2之值templatevoid Display(ElemType elem, int n);/ 显示数组elem的各数据元素值/ 实用类class Timer;/ 计时器类Timerclass Error;/ 通用异常类class Rand;/ 随机数类Randchar GetChar(istream &in)/ 从输入流in中跳过空格及制表符获取一字符char ch;/ 临时变量while (ch = in.peek() != EOF/ 文件结束符(peek()函数从输入流中接受1/ 字符,流的当前位置不变)& (ch = in.get() = / 空格(get()函数从输入流中接受1字符,流/ 的当前位置向后移1个位置)| ch = t);/ 制表符return ch;/ 返回字符bool UserSaysYes() / 当用户肯定回答(yes)时, 返回true, 用户否定回答(no)时,返回falsechar ch;/ 用户回答字符bool initialResponse = true;/ 初始回答do/ 循环直到用户输入恰当的回答为止if (initialResponse) cout (y, n)?; / 初始回答else cout 用y或n回答:;/ 非初始回答while (ch = GetChar() = n);/ 跳过空格,制表符及换行符获取一字符initialResponse = false;/ 非初始回答 while (ch != y & ch != Y & ch != n & ch != N);while (GetChar() != n);/ 跳过当前行后面的字符if (ch = y | ch = Y) return true;/ 肯定回答返回trueelse return false;/ 否定回答返回falsetemplate void Swap(ElemType &e1, ElemType &e2)/ 交换e1, e2之值ElemType temp;/ 临时变量temp = e1; e1 = e2; e2 = temp;/ 循环赋值实现交换e1, e2templatevoid Show(ElemType elem, int n)/ 显示数组elem的各数据元素值for (int i = 0; i n; i+)/ 显示数组elemcout elemi ;/ 显示elemicout endl;/ 换行/ 计时器类Timerclass Timerprivate:/ 数据成员clock_t startTime;public:/ 方法声明Timer() startTime = clock(); / 构造函数, 由当前时间作为开始时间构造对象double ElapsedTime() const/ 返回已过的时间clock_t endTime = clock();/ 结束时间return (double)(endTime - startTime) / (double)CLK_TCK;/ 计算已过时间void Reset() startTime = clock(); / 重置开始时间;/ 通用异常类Error #define MAX_ERROR_MESSAGE_LEN 100class Errorprivate:/ 数据成员char messageMAX_ERROR_MESSAGE_LEN;/ 异常信息public:/ 方法声明Error(char mes = 一般性异常!) strcpy(message, mes); / 构造函数 void Show() const cout message endl; / 显示异常信息;/ 随机数类Randclass Randpublic:/ 方法声明static void SetRandSeed() srand(unsigned)time(NULL); / 设置当前时间为随机数种子static int GetRand(int n) return rand() % n; / 生成0 n-1之间的随机数static int GetRand() return rand(); / 生成0 n-1之间的随机数;#endif/ 文件路径名: dice_gamedice_game.h #ifndef _DICE_GAME_H_/ 如果没有定义_DICE_GAME_H_#define _DICE_GAME_H_/ 那么定义_DICE_GAME_H_typedef enumWIN, LOSE, TIE GameStatus;/ WIN:赢,LOSE:输,TIE:平局/ 骰子游戏类DiceGame声明class DiceGameprivate:/ 数据成员:int numOfWin;/ 胜利数次int numOfLose;/ 失败数次int numOfTie;/ 平局数次/ 辅助函数int RollDice();/ 模拟投掷一次骰子void Help();/ 获得帮助void Show();/ 显示统计结果public:/ 方法声明:DiceGame();/ 无参数的构造函数virtual DiceGame()/ 析构函数void Game();/ 模拟游戏;/ 骰子游戏类DiceGame的实现部分DiceGame:DiceGame()/ 初始化骰子游戏numOfWin = 0;/ 胜利数次numOfLose = 0;/ 失败数次numOfTie = 0;/ 平局数次cout - endl;cout 欢迎您来玩掷骰子游戏 endl; cout - endl; cout 游戏制作者:周云 endl; cout 2009年6月24日 endl;int DiceGame:RollDice()/ 模拟投掷一次骰子,返回值为所投掷的两棵骰子向上一面的点数之和int numOfDice1;/ 所投掷的第1棵骰子向上一面的点数int numOfDice2;/ 所投掷的第2棵骰子向上一面的点数int sum;/ 所投掷的两棵骰子向上一面的点数之和numOfDice1 = 1 + Rand:GetRand(6);/ 模拟所投掷骰子1的点数numOfDice2 = 1 + Rand:GetRand(6);/ 模拟所投掷骰子2的点数sum = numOfDice1 + numOfDice2;/ 计算所投掷两棵骰子向上一面的点数之和cout 这次您掷骰子: numOfDice1 + numOfDice2 = sum endl; return sum;/ 返回所掷骰子向上一面点数之和void DiceGame:Help()/ 获得帮助cout 游戏者每次投掷两颗骰子,每个骰子是一个正方体,有 endl;cout 6面上面分别标有1、2、3、4、5、6个圆点,当骰子停止时 endl;cout ,将每个骰子朝上的点的数相加,在第一次投掷骰时, 如果 endl;cout 所得到的和为7或11,那么游戏者为赢得胜利; 如果所得到 endl;cout 的和为2、3或12,那么游戏者为输掉了;如果和为4、5、6 endl;cout 、8、9或10,那么为游戏者的点数;如要想赢得胜利,必 endl;cout 须继续投掷骰子,直到取得自已的点数为止, 但是如果投 endl;cout 掷出的和为7,那么游戏者为输了. endl;void DiceGame:Show()/ 显示统计结果cout 您的最后游戏数据统计: endl;cout 获胜 numOfWin 次 endl;cout 失败 numOfLose 次 endl;cout 平局 numOfTie 次 endl endl ;cout - endl;cout endl;cout endl; cout - endl;void DiceGame:Game()/ 模拟游戏 int i(0);int select = 1; int sum, myPoint;GameStatus status;/ 游戏状态Rand:SetRandSeed();/ 设置当前时间为随机数种子 Help(); / 获得帮助 while (select != 5)cout endl endl 请选择下面序号: endl;cout 1. 获得帮助 end
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智慧医疗趋势分析报告:精准医疗与大数据融合应用
- 2025年基因治疗药物临床研发新趋势分析:市场前景与产业布局报告
- 2025年工业互联网平台网络切片技术在智慧工厂生产安全中的应用报告
- 2025年干细胞治疗神经系统疾病临床应用案例分析及启示报告
- 日照航海考试题及答案
- 癌症耐药凋亡机制-洞察及研究
- 设备技术服务合同范本
- 装修材料保证合同范本
- 酒店供货付款合同范本
- 风场道路维修合同范本
- 2025年国防教育知识竞赛试题(附答案)
- 梁式转换层悬挂式施工和贝雷梁施工技术
- 【艾青诗选】批注
- 护士在社区护理中的工作职责和技能要求
- 2025年度工业园区物业收费及服务标准合同范本
- 银行现金取款申请书
- 2025年江苏省连云港市赣榆区面向大学生村官定向招聘事业单位人员26人历年高频重点提升(共500题)附带答案详解
- 2025年上海市浦东新区高三语文一模作文题目解析及范文:一个人履行责任是否意味着放弃自由
- 2025年中国邮政储蓄银行招聘考试题库
- 玻璃体切除手术护理查房
- 第三届全国大学生未来农业律师大赛试题
评论
0/150
提交评论