Hi,
New to these forums.
I have a rock paper scissor program I need to change and for some reason can't quite see where I need to do the change. I'm sure it's easy but I can't see it.
I want to change the output from just saying "You win"
to You chose (paper rock or scissors) and I chose (paper rock or scissors. You win, You lose or You Tie.
So for instance if I won with paper and the computer lost with rock it would say:
"You chose paper and I chose rock. You win."
Thanks in advance for any help.
mattflick![]()
Here's the code:
Code:/*The game of paper, rock, and scissors. */ #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <time.h> enum p_r_s {paper, rock, scissors, game, help, instructions, quit}; enum outcome {win, lose, tie, erro}; typedef enum p_r_s p_r_s; typedef enum outcome outcome; outcome compare(p_r_s player_choice, p_r_s machine_choice); void prn_final_status(int win_cnt, int lose_cnt); void prn_game_status(int win_cnt, int lose_cnt, int tie_cnt); void prn_help(void); void prn_instructions(void); void report(outcome result, int *win_cnt_ptr, int *lose_cnt_ptr, int *tie_cnt_ptr); p_r_s selection_by_machine(void); p_r_s selection_by_player(void);
Code:#include "p_r_s.h" int main(void) { int win_cnt = 0, lose_cnt = 0, tie_cnt = 0; outcome result; p_r_s player_choice, machine_choice; srand(time(NULL)); prn_instructions(); while ((player_choice = selection_by_player()) != quit) switch (player_choice) { case paper: case rock: case scissors: machine_choice = selection_by_machine(); result = compare(player_choice, machine_choice); report(result, &win_cnt, &lose_cnt, &tie_cnt); break; case game: prn_game_status(win_cnt, lose_cnt, tie_cnt); break; case instructions: prn_instructions(); break; case help: prn_help(); break; default: printf("PROGRAMMER ERROR: Cannot get to here!\n\n"); exit(1); } prn_game_status(win_cnt, lose_cnt, tie_cnt); prn_final_status(win_cnt, lose_cnt); return 0; }Code:#include "p_r_s.h" void prn_final_status(int win_cnt, int lose_cnt) { if (win_cnt > lose_cnt) printf("CONGRATULATIONS - You win!\n\n"); else if (win_cnt == lose_cnt) printf("A DRAW - You tied!\n\n"); else printf("SORRY - You lost!\n\n"); } void prn_game_status(int win_cnt, int lose_cnt, int tie_cnt) { printf("\n%s\n%s%4d\n%s%4d\n%s%4d\n%s%4d\n\n", "GAME STATUS:", " Win: ", win_cnt, " Lose: ", lose_cnt, " Tie: ", tie_cnt, " Total: ", win_cnt + lose_cnt + tie_cnt); } void prn_help(void) { printf("\n%s\n", "The following characters can be used for input:\n" " p for paper\n" " r for rock\n" " s for scissors\n" " g print the game status\n" " h help, print this list\n" " i reprint the instructions\n" " q quit this game\n"); } void prn_instructions(void) { printf("\n%s\n", "PAPER, ROCK, SCISSORS:\n" "\n" "In this game\n" "\n" " p is for \"paper\"\n" " r is for \"rock\"\n" " s is for \"scissors\"\n" "\n" "Both player and the machine will choose one\n" "of p, r, or s. If the two chcices are the same,\n" "then the game is a tie. Otherwise:\n" "\n" " \"paper covers the rock\" (a win for paper)\n" " \"rock breaks the scissors\" (a win for rock)\n" " \"scissors cut the paper\" (a win for scissors)\n" "\n" "There are other allowable inputs:\n" " g for game status (print number of wins)\n" " h for help (print short instructions)\n" " i for instructions (print these instructions)\n" " q for quit (quit the game)\n" "\n" "This game is played repeatedly until q is entered.\n" "\n" "Good luck!\n"); }
Code:#include "p_r_s.h" p_r_s selection_by_machine(void) { return ((p_r_s) (rand() % 3)); } p_r_s selection_by_player(void) { char c; p_r_s player_choice; printf("Input p, r, or s: "); scanf("%c", &c); switch (c) { case 'p': player_choice = paper; break; case 'r': player_choice = rock; break; case 's': player_choice = scissors; break; case 'g': player_choice = game; break; case 'i': player_choice = instructions; break; case 'q': player_choice = quit; break; default: player_choice = help; break; } return player_choice; }
Code:#include "p_r_s.h" outcome compare(p_r_s player_choice, p_r_s machine_choice) { outcome result; if (player_choice == machine_choice) return tie; switch (player_choice) { case paper: result = (machine_choice == rock) ? win : lose; break; case rock: result = (machine_choice == scissors) ? win : lose; break; case scissors: result = (machine_choice == paper) ? win : lose; break; default: printf("PROGRAMMER ERROR: Unexpected choice!\n\n"); exit(1); } return result; }
Code:#include "p_r_s.h" void report(outcome result, int *win_cnt_ptr, int *lose_cnt_ptr, int *tie_cnt_ptr) { switch (result) { case win: ++*win_cnt_ptr; printf("%27sYou win. \n", ""); break; case lose: ++*lose_cnt_ptr; printf("%27sYou lose. \n", ""); break; case tie: ++*tie_cnt_ptr; printf("%27sYou tie. \n", ""); break; default: printf("PRGORAMMER ERROR: Unexpected result!\n\n"); exit(1); } }



LinkBack URL
About LinkBacks




