没有合适的资源?快使用搜索试试~ 我知道了~
c++课程设计报告 掷骰子游戏.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 44 浏览量
2023-04-04
21:41:59
上传
评论
收藏 74KB DOCX 举报
温馨提示
试读
27页
。
资源推荐
资源详情
资源评论
目录
一、课题设计的内容与主要功能 ....................................................2
1.1 题目内容............................................................................................. 2
1.2 功能................................................................................................... 2
二.课题分析.................................................................................2
2.1 项目的实现方法 ................................................................................ 2
2.2 类的声明........................................................................................... 3
2.3 核心算法及其实现代码.................................................................... 4
2.3 程序流程图......................................................................................... 7
三.主要功能的实现步骤...............................................................8
四.程序测试.................................................................................8
4.1 测试计划............................................................................................. 8
4.2 测试过程............................................................................................. 9
五、总结......................................................................................12
六、参考书籍...............................................................................14
七、附件......................................................................................15
7.1 程序的源代码..................................................................................15
评分表……………………………………………………………… 27
一、课题设计的内容与主要功能
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()函数中,先建立类
DiceGame 的对象 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,其声明如下:
class DiceGame
{
Private
// 数据成员:
int numOfWin;
int numOfLose;
int numOfTie;
// 辅助函数
// 胜利数次
// 失败数次
// 平局数次
int RollDice();
void Help();
void Show();
public:
// 模拟投掷一次骰子
// 获得帮助
// 显示统计结果
// 方法声明:
DiceGame();
// 无参数的构造函数
// 析构函数
virtual ~DiceGame(){}
void Game ();
// 模拟游戏
};
2.3 核心算法及其实现代码
1. 设计当前时间为随机数种子,模拟投掷一次两个骰子,返回值为所投掷
的两颗骰子向上一面的点数之和。代码如下:
int DiceGame::RollDice()
// 模拟投掷一次骰子 ,返回值为所投的两颗
骰子向上一面的点数之和
{
int numOfDice1;
int numOfDice2
int sum;
// 所投掷的第 1 颗骰子向上一面的点数
// 所投掷的第 2 颗骰子向上一面的点数
// 所投掷的两颗骰子向上一面的点数之和
numOfDice1 = 1 + Rand::GetRand(6); // 模拟所投掷骰子 1 的点数
numOfDice2 = 1 + Rand::GetRand(6); // 模拟所投掷骰子 2 的点数
sum = numOfDice1 + numOfDice2;// 计算所投掷两颗骰子向上一面的点
数之和
cout << "选手掷骰子:" << numOfDice1 << "+" << numOfDice2 << "="
<< sum << endl;
return sum;
// 返回所掷骰子向上一面点数之和
}
2. 通过 if 选择语句进入游戏项目 2,模拟第一次投掷骰子,并用 switch
开关语句来判断枚举量 status 的状态是输、赢或者平局,如果是平局,则记录
点数。代码如下:
if(select==2)
{
//输入 2
sum=RollDice();
//模拟掷骰子
switch(sum)
{
case 7:
//掷得 7 或 11 胜利
case 11:
status=WIN;
numOfWin++;
break;
case 2:
//投掷得 2、3、12,输了
case 3:
case 12:
status=LOSE;
numOfLose++;
break;
default:
//投得其他数值,处于平局
status=TIE;
myPoint=sum;
numOfTie++;
cout<<"点数"<<myPoint<<endl;
}
3.通过 status 的状态用 if 条件语句判断玩家的输赢,如果是平局,既
status==TIE 时,利用 UserSaysYes()函数让玩家选择是否继续游戏。若玩家
选择继续游戏,则依然用 if 条件语句判断 status 的状态来判断输赢,只有玩
家在六次以内再次投掷到相同的点数时,玩家即胜利,但是,若首先投掷到的
点数和为 7 或者连续 6 次都是平局,则游戏为输了。代码如下:
while(1)
{
if(status==WIN)
{
cout<<"恭喜你,赢得游戏!"<<endl;
break;
}
if(status==LOSE)
{
剩余26页未读,继续阅读
资源评论
apple_51426592
- 粉丝: 9523
- 资源: 9658
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功