ok, been looking @ hours , because it's late, i'm braindead. code supposed accomplish following:
- display instructions
- ask user number of games play
- for each game a. letter file b. play 1 game i. while still has guesses ii. guess player iii. compare guess letter file iv. if guess correct, return 1 v. else increase counter vi. return 0 if 5 guesses incorrect c. check win or lose
this code have far, ideas how thing run properly?:
#define _crt_secure_no_warnings #define maxguesses 5 #include <stdio.h> //pre-processor directives void gamerules(); //game instructions int singlegame(char fileletter); //checks guesses, returns 0 after 5 incorrect attempts char retrieveguess(); //prompts user guess , returns guess //called inside singlegame function int guessedit(char answer, char inputletter); //lets user know if answer comes before or after guess. //returns 1 if answer correct, , 0 incorrect. //called inside singlegame function. int main() { char fileletter = 'a'; file* fileptr; int numofgames = 0; int counter = 0; //run //rules of game gamerules(); //file pointer opens file, "r" stands reading file fileptr = fopen("lettersin.txt", "r"); /* file checking if-else if (fileptr == null) { printf("i don't exist"); } else { printf("i'm alive"); } */ printf("how many games play? (pick 1-4)\n"); scanf("%d", &numofgames); (counter = 0; counter < numofgames; counter++) { //pulls letter file , writes variable "fileletter" //note self: make sure include "fileptr" fscanf knows pull fscanf(fileptr, " %c", &fileletter); singlegame(fileletter); } //closes file, not necessary now, later on in bigger programs may need more files fclose(fileptr); return 0; } //game rules function void gamerules() { printf("welcome letter guessing game\n"); printf("you enter number of games want play (1-4 games).\n"); printf("you have 5 chances guess each letter.\n"); printf("let's begin:\n"); } //single game function int singlegame(char fileletter) { int numguesses = 0; while (numguesses < maxguesses) { retrieveguess(); numguesses = numguesses + 1; } return 0; } //guess retrieval function char retrieveguess() { char inputletter; printf("what guess? (lowercase letters only, please)\n"); scanf(" %c", &inputletter); int guessedit(char fileletter, char inputletter); } //correct, or not, function int guessedit(char fileletter, char inputletter) { if (fileletter == inputletter) { printf("you guessed it!\n"); return '1'; } else if (inputletter < fileletter) { printf("the letter comes after guessed letter.\n"); return '0'; } else { printf("the letter comes before guessed letter.\n"); return '0'; } }
a few things:
//single game function int singlegame(char fileletter) { int numguesses = 0; while (numguesses < maxguesses) { retrieveguess(); numguesses = numguesses + 1; // should return 1 here if guess right, no? // like: // char guessedchar = retrieveguess(); // place call function guessedit here , if // 1 return result (if it's 0, don't return, let keep looping) } return 0; }
this function:
//guess retrieval function char retrieveguess() { char inputletter; printf("what guess? (lowercase letters only, please)\n"); scanf(" %c", &inputletter); int guessedit(char fileletter, char inputletter); }
isn't returning anything. need return statement each function define returning something. also, don't think last statement makes sense, return inputletter
this function:
//correct, or not, function int guessedit(char fileletter, char inputletter) { if (fileletter == inputletter) { printf("you guessed it!\n"); return '1'; } else if (inputletter < fileletter) { printf("the letter comes after guessed letter.\n"); return '0'; } else { printf("the letter comes before guessed letter.\n"); return '0'; } }
is returning char
('1'/'0') though declares returning int
. want write return 1;
/return 0;
. should place put comments
Comments
Post a Comment