首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >小游戏总数不相加

小游戏总数不相加
EN

Stack Overflow用户
提问于 2015-09-12 06:22:42
回答 2查看 42关注 0票数 2

长话短说,我目前正在学习C编程,今天我试图构建一个迷你游戏,根据玩家掷骰子的结果来计算玩家的总数。

我有程序的功能,因为它提示用户输入,并比较他们的滚动,以确保他们输入了正确的信息。

我遇到的问题是,显示在程序末尾的总数似乎没有加起来。不管我输入的结果是什么,总值总是1。

有人能把我引向正确的方向吗?

谢谢

代码语言:javascript
复制
#include <stdio.h>
int main(void)
{

    int R1, R2, R3;
    int totalScore = 0;

    puts("Welcome to CRAZY dice game!");

    puts("Enter Roll 1 Value: ");
    scanf("%d", &R1);

    while (R1 < 1 || R1 > 6) {
        puts("Value is outside accepted input, try again: ");
        scanf("%d", &R1);
    }

    puts("Enter Roll 2 Value: ");
    scanf("%d", &R2);

    while (R2 < 1 || R2 > 6) {
        puts("Value is outside accepted input, try again: ");
        scanf("%d", &R2);
    }

    puts("Enter Roll 3 Value: ");
    scanf("%d", &R3);

    while (R3 < 1 || R3 > 6) {
        puts("Value is outside accepted input, try again: ");
        scanf("%d", &R3);

    }

    if (R1 == 1 || 2) {
        totalScore = totalScore + 1;
    }
    else if (R1 == 3 || 4) {
        totalScore = totalScore + 2;
    }
    else if (R1 == 5 || 6) {
        totalScore = totalScore + 3;
    }


    if (R2 < R1) {

        switch (R2){

            case '1':
            case '2':
                totalScore = totalScore + 1;

            case '3':
            case '4':
                totalScore = totalScore + 2;

            case '5':
            case '6':
                totalScore = totalScore + 3;
        }
    }


    else {
        totalScore = totalScore;
    }


    if (R3 < R2) {

        switch (R3){

            case '1':
            case '2':
                totalScore = totalScore + 2;

            case '3':
            case '4':
                totalScore = totalScore + 4;

            case '5':
            case '6':
                totalScore = totalScore + 6;
        }
    }

    else if (R3 < R1) {

        switch (R3){

            case '1':
            case '2':
                totalScore = totalScore + 1;

            case '3':
            case '4':
                totalScore = totalScore + 2;

            case '5':
            case '6':
                totalScore = totalScore + 3;

        }
    }

    printf("Total Score is: %d", totalScore);
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-12 06:29:40

问题:

  1. 这些: 如果(R1 == 1区2),如果(R1 == 3区),如果(R1 == 5\x= 6) 做不到你想做的事。他们应该是 如果(R1 == 1 x\x R1 == 2),则为if (R1 == 3\x R1 == 4)或if (R1 == 5\x R1 == 6)
  2. 这是: 开关(R2){ case '1':case '2':totalScore = totalScore + 1;case '3':case '4':totalScore = totalScore + 2;case '5':case '6':totalScore = totalScore + 3;} 应该是 开关( R2 ){ /*删除'‘,因为R2不是一个字符,而是一个整数*/ /*添加中断,以便执行不会滑入后续的情况*/案例1:案例2: totalScore = totalScore + 1;中断;案例3:案例4: totalScore = totalScore + 2;中断;案例5:案例6: totalScore = totalScore +3中断;} 其他switch-case也是如此。

建议:

  1. 这是大量重复的代码: puts(“输入ROLL1VALUE:");scanf("%d",& R1 );while (R1 <1既要R1> 6) {puts(”值是外部接受的输入,重试:");scanf("%d",&R1);}puts(“输入第2卷值:");_(_ 我建议创建一个函数并返回一个值: int getVal() {静态int计数器= 1;int temp;put(“输入Roll %d值:",计数器);扫描(”%d“,& temp );而{put(”值是外部接受的输入,重试:");counter++;}counter++;返回temp;} 并使用以下方法从main调用函数: R1 = getVal();R2 = getVal();R3 = getVal(); 或者在main中使用数组,如: int R3; 而不是 int R1,R2,R3; 以便您可以使用: i;for(i = 0;i< 3;i++) { Ri = getVal();}
  2. 这是: 其他{ totalScore = totalScore;} 什么也做不了。把它移开。
票数 4
EN

Stack Overflow用户

发布于 2015-09-12 06:27:36

这不像你想的那样:

代码语言:javascript
复制
if (R1 == 1 || 2)

它需要写成:

代码语言:javascript
复制
if (R1 == 1 || R1 == 2)

其他案件也是如此。

switch中还有两个问题--您似乎缺少了break语句,并且您编写了case标签,就好像它们是字符一样。

代码语言:javascript
复制
    case '1':
    case '2':
        totalScore = totalScore + 2;

应:

代码语言:javascript
复制
    case 1:
    case 2:
        totalScore = totalScore + 2;
        break;

(除非你真的打算“通过”下一个案例标签?)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32535877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档