我如何修复这个猜测程序? [英] How do I fix this guessing program?

查看:69
本文介绍了我如何修复这个猜测程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用传球时猜测游戏。



创建一个程序,模拟孩子的猜数游戏,两个玩家将对抗计算机。该程序应具有以下要求:



1.当程序被调用时,计算机将伪随机选择哪个玩家将首先进入。



2.当计算机界面询问玩家编号时,播放开始。从键盘输入一个球员号码(1或2)。如果玩家在键盘上输入他们的号码并且轮到他们,则计算机将报告你必须等待轮到你并返回查询玩家号码。如果是玩家,则计算机将查询输入您的猜测。玩家可以通过在提示符处输入单词PASS来输入猜测或表示希望将该游戏传递给另一玩家。如果玩家输入猜测,计算机将报告猜测过高,过低或正确并返回查询玩家编号并将游戏传递给其他玩家。



3.没有球员可以连续传球两次,整场比赛不能超过三次传球。如果玩家选择通过计算机,则应在返回查询玩家编号之前报告你已经超过X次,你还剩Y次。



4.游戏进行到一个用户提供正确的猜测。













Guessing game while using passes.

Create a program that will simulate the child's number guessing game with two players who will play against the computer. The program should have the following requirements:

1. When the program is invoked the computer will pseudorandomly choose which player will go first.

2. Play begins when the computer interface asks "Player Number". A player number (either 1 or 2) is entered from the keyboard. If a player enters their number at the keyboard and it is not their turn the computer will report back "You have to wait your turn" and return to the query "Player Number". If it is a player's turn the computer will query "Enter Your Guess". The player may either enter a guess or indicate a desire to pass the play to the other player by entering the word PASS at the prompt. If the player enters a guess the computer will report back that the guess is too high, too low or correct and return to the query "Player Number" and pass play to the other player.

3. No player may pass two turns in a row, and cannot exceed more than three passes for the entire game. If the player chooses to pass the computer should report "You have passed X number of times, you have Y more times left" before returning the query "Player Number".

4. The play progresses until one user provides a correct guess.






//http://stackoverflow.com/questions/19507123/two-player-guessing-game-in-c-programming (modified)
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>

int main() {

    int authorizedPlayerNumber = 0, secretNumber = 0, playerSelfID= 0;
    int p1PassesLeft=3, p2PassesLeft=3;
    int secretNumberGuess = 1;
    int p1ConsecutivePasses = 0;
    int p2ConsecutivePasses = 0;
    char secretNumberGuessString[4] = {0};
    srand(time(NULL));
    authorizedPlayerNumber = 1 + rand() % 2; /* Random number is generated */
    srand(time(NULL));
    secretNumber = 0 + rand() % 10; /* Random number is generated */

    while (secretNumber!=secretNumberGuess)
    {
        printf("\nIt's player's %d turn", authorizedPlayerNumber);
        printf("\nPlayer Number? ");
        scanf("%d", &playerSelfID);

        while (playerSelfID != 1 && playerSelfID != 2) { //invalid entry
            printf("\n%d is not a valid player number. \nPlayer number? ", playerSelfID);
            scanf("%d", &playerSelfID);
        }
        while (authorizedPlayerNumber != playerSelfID)
        {
            printf("\nWait your turn."); //unauthorized player
            printf("\nIt's player's %d turn.", authorizedPlayerNumber);
            printf("\nPlayer number? ");
            scanf("%d", &playerSelfID);
        }
       printf("\nEnter Your Guess, 0 - 10 or pass: ");
        scanf("%s", secretNumberGuessString);



       if (strcmp(secretNumberGuessString, "pass") == 0){
        if (authorizedPlayerNumber == 1){
        p1ConsecutivePasses++;

            if(p1ConsecutivePasses>=3){
            while((strcmp(secretNumberGuessString, "pass") == 0))
                {

               printf("\nPlayer 1, you cannot pass more than 2 times in a row.");
              printf("\nEnter Your Guess, 0 - 10 or pass: ");
              scanf("%s", secretNumberGuessString);
              }
              secretNumberGuess = atoi(secretNumberGuessString);
            if(secretNumberGuess < secretNumber){
                printf("Your guess was to low.\n ");

            }else if(secretNumberGuess > secretNumber){
                printf("Your guess was to high.\n ");

            }else{
                printf("Yes!! you got it!\n");

             }



            }else{

                p1PassesLeft--;
                if(p1PassesLeft<0){
                while((strcmp(secretNumberGuessString, "pass") == 0))
                {
                    printf("\nYou have already passed three times");

                    printf("\nEnter Your Guess, 0 - 10 or pass: ");
              scanf("%s", secretNumberGuessString);
              }
              secretNumberGuess = atoi(secretNumberGuessString);
            if(secretNumberGuess < secretNumber){
                printf("Your guess was to low.\n ");

            }else if(secretNumberGuess > secretNumber){
                printf("Your guess was to high.\n ");

            }else{
                printf("Yes!! you got it!\n");

             }



                }else{

                    printf("\nPlayer 1 has  %d more passes left", p1PassesLeft);

                }
            }
        }
        else{

        p2ConsecutivePasses++;

            if(p2ConsecutivePasses>=3){
            while((strcmp(secretNumberGuessString, "pass") == 0))
                {

                 printf("\nPlayer 1, you cannot pass more than 2 times in a row.");
                printf("\nEnter Your Guess, 0 - 10 or pass: ");
              scanf("%s", secretNumberGuessString);
              }
              secretNumberGuess = atoi(secretNumberGuessString);
            if(secretNumberGuess < secretNumber){
                printf("Your guess was to low.\n ");

            }else if(secretNumberGuess > secretNumber){
                printf("Your guess was to high.\n ");

            }else{
                printf("Yes!! you got it!\n");

             }

                }else{

                p2PassesLeft--;
                if(p2PassesLeft==0){
                while((strcmp(secretNumberGuessString, "pass") == 0))
                {

                    printf("You have already passed three times");
                    printf("\nEnter Your Guess, 0 - 10 or pass: ");
                    scanf("%s", secretNumberGuessString);
              }
              secretNumberGuess = atoi(secretNumberGuessString);
            if(secretNumberGuess < secretNumber){
                printf("Your guess was to low.\n ");

            }else if(secretNumberGuess > secretNumber){
                printf("Your guess was to high.\n ");

            }else{
                printf("Yes!! you got it!\n");

             }

                }else{

                     printf("\nPlayer 2 has  %d more passes left", p2PassesLeft);

                }
            }
        }

     }else {

        if (authorizedPlayerNumber == 1){
           p1ConsecutivePasses = 0;
     }else{
         p2ConsecutivePasses = 0;
         }

        secretNumberGuess = atoi(secretNumberGuessString);
            if(secretNumberGuess < secretNumber){
                printf("Your guess was to low.\n ");

            }else if(secretNumberGuess > secretNumber){
                printf("Your guess was to high.\n ");

            }else{
                printf("Yes!! you got it!\n");

             }
      }

       if (authorizedPlayerNumber == 1) {
            authorizedPlayerNumber = 2;
        }
        else if (authorizedPlayerNumber == 2) {
            authorizedPlayerNumber = 1;

      }

    }
    return 0;
}





我坚持用if语句获取连续的pass变量。如果有任何其他问题如何解决这个问题,请告诉我。



I am stuck on getting the consecutive pass variable with the if statements. If there are any other issues how to fix this, please let me know.

推荐答案

你错过了一些结束花括号。



You missed some closing curly braces.

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

int main()
{

    int authorizedPlayerNumber = 0, secretNumber = 0, playerSelfID= 0;
    int p1PassesLeft=3, p2PassesLeft=3;
    int secretNumberGuess = 1;
    int p1ConsecutivePasses = 0;
    int p2ConsecutivePasses = 0;
    char secretNumberGuessString[4] = {0};
    srand(time(NULL));
    authorizedPlayerNumber = 1 + rand() % 2; /* Random number is generated */
    srand(time(NULL));
    secretNumber = 0 + rand() % 10; /* Random number is generated */

    while (secretNumber!=secretNumberGuess)
    {
        printf("\nIt's player's %d turn", authorizedPlayerNumber);
        printf("\nPlayer Number? ");
        scanf("%d", &playerSelfID);



        while (playerSelfID != 1 && playerSelfID != 2)
        {
            printf("\n%d is not a valid player number. \nPlayer number? ", playerSelfID);
            scanf("%d", &playerSelfID);
        }



        while (authorizedPlayerNumber != playerSelfID)
        {
            printf("\nWait your turn."); //unauthorized player
            printf("\nIt's player's %d turn.", authorizedPlayerNumber);
            printf("\nPlayer number? ");
            scanf("%d", &playerSelfID);
        }
        printf("\nEnter Your Guess, 0 - 10 or pass: ");
        scanf("%s", secretNumberGuessString);



        if (authorizedPlayerNumber == 1)
        {
            if (strcmp(secretNumberGuessString, "pass") == 0)
            {
                 p1PassesLeft--;
                 p1ConsecutivePasses++;
                if(p1ConsecutivePasses>2)
                {
                   while((strcmp(secretNumberGuessString, "pass") == 0))
                   {

                         printf("\nPlayer 1, you cannot pass more than 2 times in a row.");
                         printf("\nEnter Your Guess, 0 - 10 or pass: ");
                         scanf("%s", secretNumberGuessString);
                   }
                }
                else if(p1PassesLeft<0)
                {
                   while((strcmp(secretNumberGuessString, "pass") == 0))
                   {
                         printf("\nPlayer 1, you cannot pass more than 2 times in a row.");
                         printf("\nEnter Your Guess, 0 - 10 or pass: ");
                         scanf("%s", secretNumberGuessString);
                   }
                }
                else if(p1ConsecutivePasses==0 && p1PassesLeft<0)
                {
                    printf("\nPlayer 1 has  %d more passes left", p1PassesLeft);
                }
                        }

            else
            {
                secretNumberGuess = atoi(secretNumberGuessString);
                if(secretNumberGuess < secretNumber)
                {
                     printf("Your guess was to low.\n ");
                }
                else if(secretNumberGuess > secretNumber)
                {
                     printf("Your guess was to high.\n ");
                }
                else
                {
                          printf("Yes!! you got it!\n");
                }

           }
       }
       else if (authorizedPlayerNumber == 2)
       {
            if (strcmp(secretNumberGuessString, "pass") == 0)
            {
                 p2PassesLeft--;
                 p2ConsecutivePasses++;
                if(p2ConsecutivePasses>2)
                {
                   while((strcmp(secretNumberGuessString, "pass") == 0))
                   {

                         printf("\nPlayer 2, you cannot pass more than 2 times in a row.");
                         printf("\nEnter Your Guess, 0 - 10 or pass: ");
                         scanf("%s", secretNumberGuessString);
                   }
                }
                else if(p2PassesLeft<0)
                {
                   while((strcmp(secretNumberGuessString, "pass") == 0))
                   {

                         printf("\nPlayer 2, you cannot pass more than 2 times in a row.");
                         printf("\nEnter Your Guess, 0 - 10 or pass: ");
                         scanf("%s", secretNumberGuessString);
                   }
                }
                else if(p1ConsecutivePasses==0 && p1PassesLeft<0)
                {
                    printf("\nPlayer 1 has  %d more passes left", p1PassesLeft);
                }
                        }
            else
            {
                secretNumberGuess = atoi(secretNumberGuessString);
                if(secretNumberGuess < secretNumber)
                {
                     printf("Your guess was too low.\n ");
                }
                else if(secretNumberGuess > secretNumber)
                {
                     printf("Your guess was too high.\n ");
                }
                else
                {
                          printf("Yes!! you got it!\n");
                }
            }
                }

       if (authorizedPlayerNumber == 1)
             {
            authorizedPlayerNumber = 2;
       }
       else if (authorizedPlayerNumber == 2)
            {
            authorizedPlayerNumber = 1;
      }
        } // <- while
    return 0;
}


这篇关于我如何修复这个猜测程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆