| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 637 人关注过本帖
标题:投骰子游戏,还有未解决问题,寻帮助!
取消只看楼主 加入收藏
梦幻尘
Rank: 2
等 级:论坛游民
帖 子:33
专家分:34
注 册:2012-8-26
结帖率:87.5%
收藏
已结贴  问题点数:20 回复次数:3 
投骰子游戏,还有未解决问题,寻帮助!
#include<iostream>
#include<cstdlib>
using namespace std;
int rollDice()
{
    int read1=1+rand()%6;
    int read2=1+rand()%6;
    int sum=read1+read2;
    cout<<"poayer rolled "<<read1<<"+"<<read2<<"="<<sum<<endl;
    return sum;
}
enum Zhuangtai{WIN,LOSE,PLAYING};
int main()
{
    int mypoint;
    Zhuangtai status;
    unsigned seed;
    cout<<"请输入随机数种子:";
    cin>>seed;
    srand(seed);[color=#CC3366][color=#FFFF00]//将种子传递给rand()[/color][/color]
    int sum=rollDice();[color=#FFFF00]//第一轮投骰子,计算和数[/color]
    switch(sum)
    {
    case 7:           [color=#FFFF00] //如果和为7或11则为胜,状态为WIN[/color]
    case 11:
        status=WIN;
        break;
    case 2:            [color=#FFFF00]//和数为2,3,12则为负,状态为LOSE[/color]
    case 3:
    case 12:
        status=LOSE;
        break;
    default:    [color=#FFFF00] //其他情况,游戏尚无结果,状态为PLAYING,记下点数,为下一轮做准备[/color]
        status=PLAYING;
        mypoint=sum;
        cout<<"point is "<<mypoint<<endl;
        break;
    }
    while(status==PLAYING) [color=#FFFF00]//只要状态为PLAYING,就继续下一轮[/color]
    {   
        /*mypoint=sum;
        srand(mypoint);*/

        sum=rollDice();
        if(sum=mypoint) [color=#FFFF00]//某轮的和数等于点数则取胜,状态为WIN[/color]
            status=WIN;
        else if(sum==7)  [color=#FFFF00]//如果和数为7则为负,状态为LOSE[/color]
            status=LOSE;
    /*    else
            status=PLAYING;*/
   

    }
    [color=#FFFF00]//当状态不为PLAYING时上面的循环结束,以下程序段输出游戏结束[/color]
    if(status==WIN)
        cout<<"胜"<<endl;
    else
        cout<<"负"<<endl;
    return 0;
}
此程序是用VC++ 6.0编译,下面是运行结果:
请输入随机数种子:8 换成23
poayer rolled 5+1=6   变成 6+3=9
point is 6            变成 9
poayer rolled 6+6=12  变成 5+4=9
                       还是胜

但是如果加入/*....*/中的一段,运行结果为:
请输入随机数种子:8 换成23
poayer rolled 5+1=6   变成 6+3=9
point is 6            变成 9
poayer rolled 5+2=7  变成 3+2=5
                      还是胜


请帮我修改下,谢谢!(在我的基础上)


还有一个问题,/*...*/之间的一段代码要不要都是正确的,虽然运行结果不同。
当然/*...*/中是我加上的;我的理解为:
既然如果第一轮胜负未分,且是将第一轮点数和sum作为下轮游戏的点数,哪肯定要将sum作为随机数种子通过srand传给rand;
如果去掉那段代码,应该怎样理解。谢谢


[ 本帖最后由 梦幻尘 于 2012-9-27 11:59 编辑 ]
搜索更多相关主题的帖子: include return status 游戏 
2012-09-26 11:56
梦幻尘
Rank: 2
等 级:论坛游民
帖 子:33
专家分:34
注 册:2012-8-26
收藏
得分:0 
还有问题,希望大家帮忙
2012-09-27 08:44
梦幻尘
Rank: 2
等 级:论坛游民
帖 子:33
专家分:34
注 册:2012-8-26
收藏
得分:0 
回复 6楼 lz1091914999
你可以再看下我的程序,有一段代码是用/*...*/注释掉的,我不明白的地方就在那里
下面就是我认为那段代码需要的理由。可书上那段却是没有的,


还有一个问题,/*...*/之间的一段代码要不要都是正确的,虽然运行结果不同。
当然/*...*/中是我加上的;我的理解为:
既然如果第一轮胜负未分,且是将第一轮点数和sum作为下轮游戏的点数,哪肯定要将sum作为随机数种子通过srand传给rand;
如果去掉那段代码,应该怎样理解。谢谢
2012-09-27 21:10
梦幻尘
Rank: 2
等 级:论坛游民
帖 子:33
专家分:34
注 册:2012-8-26
收藏
得分:0 
回复 8楼 lz1091914999
谢谢,是我还没理清题目的意思,刚开始还准备反驳你的,但想着想着才理清意思,题目意思是如果第一轮没分胜负,则将第一轮所得的点数和作为自己的点数,继续下去,此点数应该是不会变的。我理解为要将其作为下轮随机数种子,用其所得的点数和与随机数种子比较了,此时点数就会变化;
如果按我的理解代码应该不多余吧。不知理解是否有误,请解答。
2012-09-29 08:43
快速回复:投骰子游戏,还有未解决问题,寻帮助!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024344 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved