467,911 Members | 1,445 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 467,911 developers. It's quick & easy.

rock, paper, scissor help C programming

Hi here is my problem I want to have the outcome of my rock paper scissors game to print outcomes like: You chose paper and I chose rock. You win. The value for player_choice and machine_choice is declared in select.cpp (listed below).

My question is how would I go about telling, the report.cpp code below to check the select.cpp code for the variable to print?

#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("%27s I chose");
printf("%c", player_choice);
printf("%27s you chose");
printf("%c", machine_choice);
printf("%27s You win.\n", "\"");
break;
case lose:
++*lose_cnt_ptr;
printf("%27s i chose");
printf("%c", player_choice);
printf("%27s you chose");
printf("%c", machine_choice);
printf("%27s You lose.\n", "");
break;
case tie:
++*tie_cnt_ptr;
printf("%27s A tie.\n", "");
break;
default:
printf("PROGRAMMER ERROR: Unexpected result!\n\n");
exit(1);
}
}

#include "p_r_s.h"

p_r_s selection_by_machine(void)
{
return ((p_r_s) (rand() % 3));
}
p_r_s selection_by_player(char x)
{
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;
}
Sep 2 '08 #1
  • viewed: 5090
Share:
8 Replies
gpraghuram
Expert 1GB
R u saking how should you call the corresponding function in select.cpp or something else..?
can you explain it further as ia m not able to understand ...

Raghu
Sep 2 '08 #2
yeah thats basically it. In select.cpp the player and the machine makes a choice of rock paper or scissor. In report.cpp I want to call the selection that the player and the machine made in select.cpp to report.cpp and print that selection.
Sep 2 '08 #3
gpraghuram
Expert 1GB
yeah thats basically it. In select.cpp the player and the machine makes a choice of rock paper or scissor. In report.cpp I want to call the selection that the player and the machine made in select.cpp to report.cpp and print that selection.

I think you have to call the report() function in a loop and from the report function you have to call the function in select().


NOTE:Please use code tags while posting the code.


Raghu
Sep 2 '08 #4
Expert 8TB
Expand|Select|Wrap|Line Numbers
  1.     printf("%27s I chose");
You do that all over the place; check your manuals because it is not correct.

kind regards,

Jos
Sep 2 '08 #5
weaknessforcats
Expert Mod 8TB
You use a storage class specifier to tell the compiler the variable exists but it's not in this file:

Expand|Select|Wrap|Line Numbers
  1. /*report.cpp*/
  2. extern p_r_s player_choice;
  3. extern p_r_s machine_choice;
  4.  
Then just define the variables in another file:
Expand|Select|Wrap|Line Numbers
  1. /*select.cpp*/
  2. p_r_s player_choice;
  3. p_r_s machine_choice;
  4.  
The linker will hook the variable in one file to the code in the other file.
Sep 2 '08 #6
I've got the program to at least build and executed it by adding the underlined code.

Expand|Select|Wrap|Line Numbers
  1. void report(outcome result, int *win_cnt_ptr,
  2.             int *lose_cnt_ptr, int *tie_cnt_ptr, p_r_s player_choice, p_r_s machine_choice)
to my header and my report function but now when I win. It prints funny characters like an up and down character before "you chose" and a smiley face box after "you chose." I'm now lost can someone please point me in the right direction. I'm assuming its because my outcome function is only returning a win or lose to main.

Expand|Select|Wrap|Line Numbers
  1. #include "p_r_s.h"
  2.  
  3. outcome compare(p_r_s player_choice, p_r_s machine_choice)
  4. {
  5.     outcome result;
  6.  
  7.     if (player_choice == machine_choice)
  8.         return tie;
  9.     switch (player_choice) {
  10. case paper:
  11.     result = (machine_choice == rock) ? win : lose;
  12.     break;
  13. case rock:
  14.     result = (machine_choice == scissors) ? win : lose;
  15.     break;
  16. case scissors:
  17.     result = (machine_choice == paper) ? win : lose;
  18.     break;
  19. default:
  20.     printf("PROGRAMMER ERROR: Unexpected choice!\n\n");
  21.     exit(1);
  22.     }
  23.     return result;
  24. }
  25.  
Sep 4 '08 #7
Whoops I just figured it out but thanks to everyone that responded and tried to help
Sep 4 '08 #8
weaknessforcats
Expert Mod 8TB
Whoops I just figured it out
That's what we like to see.
Sep 4 '08 #9

Post your reply

Sign in to post your reply or Sign up for a free account.

Similar topics

7 posts views Thread by ccdetail | last post: by
7 posts views Thread by TooNaive | last post: by
reply views Thread by Piotr Nienaltowski | last post: by
4 posts views Thread by Sukh | last post: by
12 posts views Thread by gc | last post: by
11 posts views Thread by blackhacker | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.