Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c语言中的掷骰子游戏_C - Fatal编程技术网

c语言中的掷骰子游戏

c语言中的掷骰子游戏,c,C,首先,我真的很抱歉我的英语不好 我尽力解释这个问题 c语言中的掷骰子游戏 电脑掷两个骰子,如果结果是7或11,你直接赢,或者结果是2、3和12,你直接输 如果总和是4、5、6、8、9或10,它希望你再次掷骰子。这一次你必须找到相同的总和4,5,6,8,9或10 如果你在找到同样的数字之前得到了7或11,那么你就输了。(这就是问题所在,即使计算机两次找到相同的数字。它不会打印为“you won.” 示例: 掷骰子…你赢了 你想再玩一次吗(y/y–n/n)?y 掷骰子…3你输了 你想再玩一次吗(y

首先,我真的很抱歉我的英语不好 我尽力解释这个问题

c语言中的掷骰子游戏

电脑掷两个骰子,如果结果是7或11,你直接赢,或者结果是2、3和12,你直接输

如果总和是4、5、6、8、9或10,它希望你再次掷骰子。这一次你必须找到相同的总和4,5,6,8,9或10 如果你在找到同样的数字之前得到了7或11,那么你就输了。(这就是问题所在,即使计算机两次找到相同的数字。它不会打印为“you won.”

示例: 掷骰子…你赢了

你想再玩一次吗(y/y–n/n)?y

掷骰子…3你输了

你想再玩一次吗(y/y–n/n)?y

骰子在滚动…12个皮球

是/是-否?是

掷骰子…你赢了

你想再玩一次吗(y/y–n/n)?y

掷骰子…你赢了

你想再玩一次吗(y/y–n/n)?y

骰子正在滚动…9结果不清楚,骰子将再次滚动。滚动(r/r)

骰子正在滚动…8结果不清楚,骰子将再次滚动。滚动(r/r)

骰子正在滚动…11结果不清楚,将再次滚动骰子。滚动(r/r)?r

掷骰子…9你赢了

Yeni oyun oynansın mı(y/y–(n/n)?e

Zarrar atiliyor…5结果不清楚,将再次掷骰子。掷(r/r)r

Zarrar atiliyor…10结果不清楚,将再次掷骰子。掷(r/r)r

Zarrar atiliyor…7你输了

你想再玩一次吗(y/y–n/n)?n

废话已经结束了

#include<stdio.h>
#include <time.h>

int main() 
{
 char ynd;
 int kazan=0; 
 int sonuc=0;
 char yoyun;


 do{



    printf("dice is rolling  ");
    srand(time(NULL));
    kazan = rand()%11+1;
    kazan++;

    if( kazan==7 || kazan==11 )
    {
        printf(" %d you won.\n",kazan);
    }
        else if( kazan==2 || kazan==3 || kazan==12 )
        {
            printf(" %d you lose.\n",kazan);
        }


    sonuc=kazan;

    if( kazan==4 || kazan==5 || kazan==6 || kazan==8 || kazan==9 || kazan==10 )
    {


        do{
            printf("%d result is unclear, dice will be rolled again roll(r/R) ",kazan);
            scanf(" %s",&ynd);
            printf("dice is rolling  ");
            kazan = rand()%11+1;
            kazan++;
            if(kazan == sonuc)
            {
                printf("%d you won",kazan);
                break;
            }
            else if(kazan==7){
                printf("%d You lose",kazan);
                break;
            }

        }  

            while(ynd=='r' || ynd=='R');
    }

printf("want to play a new game ( y/Y-n/N )");
    scanf(" %s",&yoyun);
} while(yoyun=='y' || yoyun=='Y');

printf("craps has ended");


return 0;
}
#包括
#包括
int main()
{
char-ynd;
int-kazan=0;
int-sonuc=0;
char yoyun;
做{
printf(“掷骰子”);
srand(时间(空));
kazan=rand()%11+1;
喀山++;
如果(喀山==7 | |喀山==11)
{
printf(“%d您赢了。\n”,喀山);
}
else if(kazan==2 | | kazan==3 | | kazan==12)
{
printf(“%d您丢失。\n”,喀山);
}
索努克=喀山;
如果(喀山==4 | |喀山==5 | |喀山==6 | |喀山==8 | |喀山==9 | |喀山==10)
{
做{
printf(“%d结果不清楚,骰子将再次滚动(r/r)”,喀山);
scanf(“%s”、&ynd);
printf(“掷骰子”);
kazan=rand()%11+1;
喀山++;
如果(kazan==sonuc)
{
printf(“你赢了%d”,喀山);
打破
}
否则如果(kazan==7){
printf(“你输了%d”,喀山);
打破
}
}  
而(ynd=='r'| | ynd=='r');
}
printf(“想玩一个新游戏(y/y-n/n)”);
scanf(“%s”&yoyun);
}而(yoyun=='y'| | yoyun=='y');
printf(“垃圾已经结束”);
返回0;
}

如果您发布的代码在找到
7
之前找到了原始号码,那么它确实会打印出“您赢了”。也许您已经修复了翻译中的错误

但是,如果在找到副本之前滚动
11
,则不会导致损失

我还看到一些潜在的改进:

  • 您应该
    #包括
    以使用
    srand
    rand
    (gcc会自动为您解决此问题)。请参阅。通常,请尝试解决编译器生成的警告(如果您不理解,请联机搜索)
  • 我建议在程序开始时只使用
    srand(time(NULL))
    ,因为如果用户快速玩游戏,他们会在第二个游戏结束之前玩相同的游戏

  • 您可以使用
    rand()%6+rand()%6+2
    来模拟(例如,
    7
    比任何其他数字更可能)。只需使用
    rand()%11+1
    即可得到均匀分布

  • 在调用
    rand
    之后,您直接使用
    ++
    1
    增加掷骰。在调用
    rand
    之后,只需添加
    2
    就更简单了

  • 无需检查掷骰子是否不确定。只需使用最后一个
    else
    并将
    sonuc=kazan
    移动到块中即可

  • 您可能希望研究使用而不是
    if
    语句,因为在这样的情况下,如果输入(骰子滚动)是紧密压缩的整数,那么它可能会更有效

#包括
#包括
#包括
int main()
{
char-ynd;
int-kazan=0;
int-sonuc=0;
char yoyun;
srand(时间(空));
做{
printf(“掷骰子”);
kazan=rand()%6+rand()%6+2;
如果(喀山==7 | |喀山==11)
{
printf(“%d您赢了。\n”,喀山);
}
else if(kazan==2 | | kazan==3 | | kazan==12)
{
printf(“%d您丢失。\n”,喀山);
}   
其他的
{                       
索努克=喀山;
做{
printf(“%d结果不清楚,骰子将再次滚动(r/r)”,kazan;
scanf(“%s”、&ynd);
printf(“掷骰子”);
kazan=rand()%6+rand()%6+2;
如果(kazan==sonuc)
{
printf(“%d您赢了。\n”,喀山);
打破
}
else如果(kazan==7 | | kazan==11){
printf(“%d您丢失。\n”,喀山);
打破
}
}而(ynd=='r'| | ynd=='r');
}
printf(“想玩一个新游戏(y/y-n/n)”);
scanf(“%s”&yoyun);
}而(yoyun=='y'| | yoyun=='y');
printf(“垃圾已经结束。\n”);
返回0;
}

您的问题是什么?您发布了代码,代码有问题吗?请阅读,接受SO,阅读,以及。如果骰子是4、5、6、8、9或10,我希望计算机找到相同的数字并打印为“您赢了”。您没有解释您遇到的任何问题
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main() 
{
    char ynd;     
    int kazan=0;
    int sonuc=0;
    char yoyun;
    srand(time(NULL));
    do {
        printf("dice is rolling  ");
        kazan = rand()%6+rand()%6+2;
        if( kazan==7 || kazan==11 )
        {
            printf(" %d you won.\n",kazan);
        }
        else if( kazan==2 || kazan==3 || kazan==12 )
        {
            printf(" %d you lose.\n",kazan);
        }   
        else
        {                       
            sonuc=kazan;
            do {
                printf("%d result is unclear, dice will be rolled again roll(r/R) ",kazan);
                scanf(" %s",&ynd);
                printf("dice is rolling  ");
                kazan = rand()%6+rand()%6+2;
                if(kazan == sonuc)
                {
                    printf("%d you won.\n",kazan);
                    break;
                }
                else if(kazan==7 || kazan==11){    
                    printf("%d You lose.\n",kazan);
                    break;
                }
            } while (ynd=='r' || ynd=='R');
        }
        printf("want to play a new game ( y/Y-n/N )");
        scanf(" %s",&yoyun);            
    } while(yoyun=='y' || yoyun=='Y');  
    printf("craps has ended.\n");
    return 0;
}