Wednesday, September 27, 2006

Robotic Pigeon v4.2

//Robert Knepher
//Robotic Pigeon v4.2
//"rats with wings"

#include
#include
#include
#include

enum rps {r, p, s, game, help, instruct, quit};

enum outcome {win, lose, tie, error};

typedef enum rps rps;
typedef enum outcome outcome;

outcome compare(rps player_choice, rps machine_choice);
void final_status(int win_cnt, int lose_cnt);
void game_status(int win_cnt, int lose_cnt, int tie_cnt);

void help(void);
void instruct(void);
void report(outcome result, int *win_cnt_ptr, int *lose_cnt_ptr, int *tie_cnt_ptr);

rps selection_by_machine(void);
rps selection_by_player(void);

int main(void)
{
int win_ctr = 0, lose_ctr = 0; tie_ctr = 0;
outcome result;
rps player_choice, machine_choice;

srand(time(NULL));
instruct();

while ((player_choice = selection_by_player()) != quit)
switch (player_choice) {
case wind:
case earth:
case fire:
machine_choice = selection_by_machine();
result = compare(player_choice, machine_choice);
report(result, &win_ctr, &lose_ctr, tie_ctr);
break;
case game:
game_status(win_ctr, lose_ctr, tie_ctr);
break;
case instruct:
instruct();
break;
case help:
help();
break;
default:
printf("err if frank scoot ex!..n..n");
exit(1);
}
game_status(win_ctr, lose_ctr, tie_ctr);
final_status(win_ctr, lose_ctr);
return 0;
}

void final_status(int win_ctr, int lose_ctr)
{
if (win_ctr > lose_ctr)
printf("You win!..n..n");
else if (win_ctr == lose_ctr)
printf("draw");
else
printf("sorry you lose");
}
void game_status(int win_ctr, int lose_ctr, int tie_ctr)
{
printf("..n..n..n..n..n");
}
void help(void)
{
printf("prsghiq");
}
void instruct(void);
{
printf();
}
rps selection_by_machine(void)
{
return ((rps) (rand() % 3));
}
rps selection_by_player(void)
{
char c;
rps player_choice;

printf("input r,p,s: ");
scanf(" %c" &c);
switch(c){
case 'p':
player_choice = wind;
break;
case 'r':
player_choice = earth;
break;
case 's':
player_choice = fire;
break;
case 'g':
player_choice = game;
break;
case 'i':
player_choice = instruct;
break;
case'q':
player_choice = quit;
break;
default:
player_choice = help;
break;
}
return player_choice;
}
outcome compare(rps player_choice, rps machine_choice)
{
outcome result;

if (player_choice == machine_choice)
return tie;
switch (player_choice){
case wind:
result = (machine_choice == earth) ? win : lose;
break;
case earth:
result=(machine_choice == fire) ? win : lose;
break;
case fire:
result=(machine_choice == wind) ? win : lose;
break;
default:
printf("err bad choice");
exit(1);
}
return result;
}
void report(outcom result, int *win_ctr, int *lose_ctr, int *tie_ctr)
{
switch(result){
case win:
++*win_ctr_ptr;
printf("%27sWin..n". "");
break;
case lose:
++*lose_ctr;
printf("%27sLose..n", "");
break;
case tie:
++*tiectr;
printf("%27sTie");
break;
default:
printf("errresult is special");
exit(1);
}
}

0 Comments:

Post a Comment

<< Home