C代码-猜谜游戏-函数问题



好吧,我已经看了几个小时了,可能只是因为太晚了,但我已经脑残了。因此,代码应该完成以下任务:

    <
  1. 显示指令/gh>
  2. 询问用户玩游戏的数量
  3. 每个游戏从档案中得到一封信b.玩一个游戏虽然还在猜测2让玩家猜猜看3比较guess和letter from fileiv.如果guess正确,返回1v. Else增加计数器vi.如果5猜测错误,返回0c.检查输赢

这是我到目前为止的代码,任何想法如何让这个东西正常运行?:

#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 for guess and returns guess
//Called from inside singleGame function
int guessedIt(char answer, char inputLetter);
//Lets user know if answer comes before or after their guess.
//Returns 1 if answer is correct, and 0 for incorrect.
//Called from inside singleGame function.


int main()
{
    char fileLetter = 'a';
    FILE* filePtr;
    int numOfGames = 0;
    int counter = 0;
    //run it
//Rules of Game
gameRules();
//File pointer that opens the file, "r" stands for reading the 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 would you like to play? (Pick from 1-4)n");
scanf("%d", &numOfGames);
for (counter = 0; counter < numOfGames; counter++)
{
    //Pulls a letter from the file and writes it to variable "fileLetter"
    //Note to self: make sure to include "filePtr" so fscanf knows where to pull from
    fscanf(filePtr, " %c", &fileLetter);
    singleGame(fileLetter);
}
//Closes file, not necessary now, but good for later on in bigger programs that may need more files
fclose(filePtr);
return 0;
}
//Game rules function
void gameRules()
{
printf("Welcome to the Letter Guessing Gamen");
printf("You will enter the number of games you want to play (1-4 games).n");
printf("You have 5 chances to 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 is your 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 your guessed letter.n");
    return '0';
}
else
{
    printf("The letter comes before your guessed letter.n");
    return '0';
}
}

几点:

//Single Game Function
int singleGame(char fileLetter)
{
    int numGuesses = 0;
    while (numGuesses < MAXGUESSES)
    {
        retrieveGuess();
        numGuesses = numGuesses + 1;
        // You should return 1 here if the guess is right, no?
        // Something like:
        // char guessedChar = retrieveGuess();
        // place call for function guessedIt here and if it
        // is 1 return the result (if it's 0, don't return, let it keep looping)
    }
    return 0;
}
这个函数

:

//Guess retrieval function
char retrieveGuess()
{
char inputLetter;
printf("What is your guess? (Lowercase letters only, please)n");
scanf(" %c", &inputLetter);
int guessedIt(char fileLetter, char inputLetter);
}

没有返回任何内容。对于每个定义为返回值的函数,都需要一个return语句。此外,我认为最后一个语句甚至没有意义,只是返回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 your guessed letter.n");
        return '0';
    }
    else
    {
        printf("The letter comes before your guessed letter.n");
        return '0';
    }
}

返回一个char('1'/'0'),尽管它声明返回一个int。你想写return 1;/return 0;。应该放在我放注释的地方

最新更新