0
votes

I'm writing a dice program where there are 7 rounds In each round the user gets to roll as many times as they desire, the sum is added up, and then the computer rolls the same number of dice and it's sum is added up. The winner of the round is determined by the highest dice roll and whoever winds the most rounds wins the game. This is what I have so far but I can not get the loop which asks the user if they want to roll again to work properly so any help would be greatly appreciated.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
/* Easy dice game
|
 |  The game consists of 7 rounds.
 |  In each round, the computer throws a die, 
 |  then the human throws a die.
 |  The winner of the round is the player who has the highest throw.
 |  In case of a tie, neither player wins.
 |  The winner of the game is the player who has won the most rounds.
 |
 */

char input[132];   /* user input buffer */

int throwDie()
{
static int initialized = 0;
int num;

if ( !initialized )
{
printf("Initializing Die!\n\n");
srand( time(NULL) );
initialized = 1;
}
num = rand()%6 + 1 ;
return num;
}

// Human turn

int humanTurn()
{
int toss;
toss = throwDie();
printf("Human throws a %d\n", toss );
return toss;

}

// Computer turn

int computerTurn()
{
int toss;
toss = throwDie();
printf("Computer throws a %d\n", toss );
return toss;
}

int main(int argc, char *argv[])
{
int round, humanWins=0, computerWins=0 ;
int humanToss, computerToss;
int i = 0;
const int numberOfRounds = 7;
char ta=0;
/* Play 7 Rounds */
for ( round = 1; round<=numberOfRounds; round++ )
{
 printf("\nRound %d\n\n", round );
printf("Player's Turn: (hit enter)");
gets( input ); /* pause for dramatic effect */
humanToss = humanTurn();
 printf("Do you wish to throw again? [Y or N]");
 scanf("%s", ta);

while (ta = 'Y')
{

     if(ta = 'Y')
     {
     humanToss = humanTurn();
     printf("Do you wish to throw again? [Y or N]");
     scanf("%s", ta);
     }
     else
     {
       i++;
     }
}


printf("Computer's Turn: (hit enter)");

   gets( input ); /* pause for dramatic effect */
   computerToss = computerTurn();

  /* Determine Winner of the Round */
  if ( humanToss > computerToss )
  {
  humanWins++;
  printf("\tHuman wins the round.    human: %3d. computer: %3d\n",
    humanWins, computerWins );
  }
  else if ( computerToss > humanToss )
  {
  computerWins++;
  printf("\tComputer wins the round. human:%3d. computer: %3d\n",
    humanWins, computerWins );
  }
  else if ( computerToss == humanToss)
  {  
  printf("\tTie.                     human:%3d. computer: %3d\n",
    humanWins, computerWins );
  }
  }

   /* Determine Winner to the Game */
  if ( humanWins > computerWins )
  printf("\n\nWINNER!! The human wins the game!\n");
  else if ( computerWins < humanWins )
  printf("\n\nThe computer wins the game!\n");
  else
  printf("\n\nTie Game!\n");

  printf("\n");
  system("pause");
  return 0;
  }
1
Recommendation: get rid of 99% of the code and see if you can create a loop that does what you want. Then add the rest of the code back in until it breaks. - Floris
Recommendation #2: enable and read warnings (for GCC the minimum I recommend is -Wall) - user166390
Also, for further reading, look up "yoda conditional" - user166390

1 Answers

4
votes
while (ta = 'Y')

should be while (ta == 'Y')

so should your if statements be == not =