当前位置: 首页 > 知识库问答 >
问题:

C中的掷骰子游戏--计胜负

施文彬
2023-03-14

谁能告诉我代码出了什么问题吗?


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

int rolldice()
{
    int num[1000], wins, losses;
    
    srand(time(NULL));
    
    for (int i = 0; i < 1000; i++)
    {
        int dice1 = (rand() % 6) + 1;
        int dice2 = (rand() % 6) + 1;
        
        num[i] = dice1 + dice2;

        if (num[0] == 7)
        {
            wins++;
        }
        
        if (num[0] != 7 && num[i] == num[0])
        {
            wins++;
        }
        if (num[0] != 7 && num[i] == 7)
        {
            losses++;
        }
    return wins, losses;        
    }
    

    
}   
    


int main()
{
    int wins, losses;
    rolldice();
    printf("wins: %d \nlosses: %d", wins, losses);
    
    
}

共有1个答案

云昊阳
2023-03-14

看一下下面的内容:

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

int roll(void)
{
    return 2 + (rand() % 6) + (rand() % 6);
}

int game(void)
{
    int first = roll();
    
    if (first == 7)
        return 1;
    
    while (1) {
        int second = roll();
        
        if (second == first)
            return 1;
        
        if (second == 7)
            return 0;
    }
}

int main(void)
{
    int wins = 0, i;

    srand(time(NULL));

    for (i = 0; i < 1000; i++) {
        wins += game();
    }
    
    printf("wins: %d \nlosses: %d", wins, 1000 - wins);
    
    return 0;
}

我为单掷两个骰子做了一个函数。这很方便,因为我们需要两个不同位置的值。

然后我写了一个游戏的逻辑。第一个滚动是7的情况是容易的。但是如果第一个滚动不是7,游戏可能--理论上--永远继续下去。这就是为什么或多或少需要while循环。在while循环中,逻辑是相反的,我们需要与游戏的第一卷进行比较。这就是为什么我们需要将结果存储在变量first中。

 类似资料:
  • 我试图为一个游戏的掷骰子程序,其中用户输入一个下注金额和2个六面骰子滚动,如果7或11是滚动,他们赢了。如果掷2,3或12就输了,如果掷其他任何一个数字,它就显示该数字为一个点。它会继续掷骰子,直到掷7或该点为止,如果掷7就输了,否则就赢了。出于某种原因,在掷骰子时,他会掷骰子,然后再掷一次,看看他们是否赢了或输了。我不知道如何解决这个问题,任何帮助都不会附带

  • 我是一个C++初学者,我需要创建一个骰子游戏模拟掷两个骰子。我对头文件的使用感到很困惑。但首先,为什么我需要返回骰子的票面号码?其次,int roll函数做什么?来重置价值观和面孔?如果是,默认值是多少?而最后一个函数骰子(int n),我是否使用这个函数来控制骰子值的最大总和?函数必须有一个具有以下函数的类头文件:

  • 代码的目的是让两个玩家掷一对骰子。第一个掷出20分的玩家赢得比赛。我很难弄清楚如何正确地跟踪滚动的总和;它只给我当前回合的总和,然后当每个玩家滚动10次时游戏就结束了。 我如何正确地计算每个玩家游戏的总和,然后当其中一个玩家的总和等于20时停止循环?

  • 程序在最后未能计算出正确的和。我做错了什么?如有任何帮助,不胜感激。谢了。

  • 本文向大家介绍Java编写掷骰子游戏,包括了Java编写掷骰子游戏的使用技巧和注意事项,需要的朋友参考一下 废话不多说了,直接奔主题。 **多线程&&观察者模式 题目要求:《掷骰子》窗体小游戏,在该游戏中,玩家初始拥有1000的金钱,每次输入押大还是押小,以及下注金额,随机3个骰子的点数,如果3个骰子的总点数小于等于9,则开小,否则开大,然后判断玩家是否押对,如果未押对则扣除下注金额,如果押对则奖

  • 我对C#和一般编码都是新手。为了提高我的技能,我试图创建一个基本的游戏,两个玩家掷骰子,并记录他们的得分。玩家达到20分即获胜。每个玩家轮流掷一个骰子,把他们的第一个骰子加到他们的第二个骰子上,以此类推,直到其中一个达到20。如果玩家掷出一个六,他们可以再次掷骰子。 任何帮助都将不胜感激。