Click here to Skip to main content
15,890,043 members
Please Sign up or sign in to vote.
1.00/5 (2 votes)
See more:
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.






C#
//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;
}


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.
Posted
Updated 22-Mar-15 9:54am
v2
Comments
PIEBALDconsult 22-Mar-15 16:00pm    
You could use a boolean to indicate that the previous turn was passed.
Or use a negative value for the number of passes made. :D E.g. +2 means two passes made and previous turn was not passed, -2 means two passes made and the previous turn was passed.
ProgrammerA 23-Mar-15 17:51pm    
Thank you. I understand that sometimes the simplest problem can cascade programming issues.
Sergey Alexandrovich Kryukov 22-Mar-15 19:15pm    
Just use the debugger. The code looks weird. It's hard to imagine that such a simple solution can be that long. Note that the string "Your guess was to low.\n " is found in two places — already totally wrong.
—SA

1 solution

You missed some closing curly braces.

C
#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;
}
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900