鱼C论坛

 找回密码
 立即注册
查看: 2992|回复: 4

模拟投掷骰子游戏(修改代码)

[复制链接]
发表于 2020-11-3 19:54:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
任务描述
本关任务(习题5.1):模拟掷双骰子游戏,游戏规则:每轮投两次骰子,取两次的和,第一轮若和为7或11则获胜,游戏结束。

例一:
和为11,则显示:'Round 1:  Score:11  Success!'
若和为2、3或12则输了,失败结束,

例二:
和为12,则显示:'Round 1:  Score:12  Failed!'
若和为其他数字,则将第一轮两次骰子点数的和(假定为8)作为自己的点数,继续第二轮,第三轮,……,直到某轮两次骰子点数的和等于该点数(第一轮两次投掷点数和)则获胜,若中间某轮两次投掷骰子点数的和为7,则输掉游戏。对应显示:

'Round 1:  Score:8  Continue!'
'Next rounds: Score 8:Success, Score 7:Failed, others:Continue'
'Round 2:  Score:4  Continue!'
'Round 3:  Score:6  Continue!'
'Round 4:  Score:9  Continue!'
'Round 5:  Score:7  Failed!'
相关知识
为了完成本关任务,你需要掌握:

C语言函数定义与调用;

C语言函数参数传递与返回;

C语言生成指定范围的随机数。

编程要求
在右侧编辑器完成diceGame(int randSeed)函数,其中参数randSeed为随机数种子,为方便测试,种子在测试文件中由键盘输入。

测试说明
平台会对你编写的代码进行测试,由于rand()函数返回的随机数在windows和Linux(平台环境)下的值不同,为方便同学们测试,分别给出两种环境的测试结果:

Linux环境
测试输入:1    //随机数种子:用于初始化随机数生成器
预期输出:Round 1:  Score:7  Success!

测试输入:18
预期输出:

'Round 1:  Score:8  Continue!'
'Next rounds: Score 8:Success, Score 7:Failed, others:Continue'
'Round 2:  Score:4  Continue!'
'Round 3:  Score:6  Continue!'
'Round 4:  Score:9  Continue!'
'Round 5:  Score:7  Failed!'
windows环境
测试输入:100   //随机数种子:用于初始化随机数生成器
预期输出:Round 1:  Score:11  Success!

测试输入:10
预期输出:

'Round 1:  Score:10  Continue!'
'Next rounds: Score 10:Success, Score 7:Failed, others:Continue'
'Round 2:  Score:6  Continue!'
'Round 3:  Score:9  Continue!'
'Round 4:  Score:4  Continue!'
'Round 5:  Score:7  Failed!'

我的代码如下:(任务只要求定义函数,不用写main的部分)
/***在下面Begin至End间,按原型 void diceGame(int randSeed) 定义函数***/
/********** Begin **********/
void diceGame(int randSeed)
{   
    int x,y,z,i;
    x=rand();
    x=x%6+1;
    y=rand();
    y=y%6+1;
    z=x+y;
    if(z==7||z==11) printf("Round 1:  Score:%d  Success!",z);
    else if(z==2||z==3||z==12) printf("Round 1:  Score:%d  Failed!",z);
    else 
    {   
        printf("Round 1:  Score:%d  Continue!\n",z);
        printf("Next rounds: Score %d:Success, Score 7:Failed, others:Continue",z);
        int a,b,c;
        for(i=1;i<10;i++)
        {   a=rand();
            a=a%6+1;
            b=rand();
            b=b%6+1;
            c=a+b;
            if(c!=z&&c!=7) printf("Round %d:  Score:%d  Continue!",i,c);
            else if(c==7) printf("Round %d:  Score:7  Failed!");
        }

    }
}

/********** End **********/

请求:
1、现在问题在于,不论怎么运行,结果只会输出:Round 1:  Score:7  Success!
请修改我的代码,使它符合题目要求。(不要提供新的代码,否则不予采纳,谢谢

2、定义的int randSeed 有什么用呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-4 17:44:20 | 显示全部楼层
我顶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-5 08:58:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-6 09:27:04 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-8 08:27:54 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 17:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表