#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define MAXGUESSES 5
// function declarations
void GameRules();
int SingleGame(char file_letter);
char RetrieveGuess();
int GuessedIt(char answer, char input_letter);
int main()
{
int PlayGames = 0, //Variable Declarations
i = 0; //Variable Declarations
char correctanswer; //Variable Declarations
GameRules(); //Call of GameRules Function
FILE *fp; //Opening File
fp = fopen("lettersin", "r"); //Opening File for Reading
printf("How many games would you like to play?1-4:"); //Prompting for Number of Games to Play
scanf("&d", &PlayGames); //Scanning number of games wished to be played, storing it in PlayGames
for (i = 0; i<PlayGames; i++) //For Loop that lasts until i=playgames
{
fscanf(fp, "%c", &correctanswer); //function to scan 1 letter from lettersin.txt
int SingleGame(correctanswer); //Play one game
if (SingleGame == 1) //if Single Game returns 1, you win
{
printf("You Win!");
}
else if (SingleGame == 0) //If Single Game returns 0, you lose
{
printf("You Lose");
}
}
fclose(fp); //Closes the File
return 0;
}
void GameRules() //Function that prints the Rules
{
printf("This is the Letter Game. The goal is to guess the correct letter within 5 attempts. After each guess you will be told whether the letter you attempted to guess comes before or after the letter actually guessed.\n");
}
char RetrieveGuess() //Function to prompt for a guess, then store the guess in an integer that is returned by the function when called
{
char a;
printf("Enter a letter");
scanf("%c", &a);
return a;
}
int GuessedIt(char answer, char input_letter) //Function that returns 1 when the answer is correct, or suggests where the correct answer is if the guess is incorrect
{
if (answer == input_letter) //if the guess is the same as the answer, return 1
{
return 1;
}
else if (answer > input_letter) //if the guess is incorrect, suggest on how to improve and return 0
{
printf("the correct letter comes before your guess"); return 0;
}
else
{
printf("the correct letter comes after your guess"); return 0;
}
}
int SingleGame(char file_letter) //Function to play 1 game
{
int numGuesses = 0; //Variable Declarations
char b;
while (numGuesses < MAXGUESSES) //While Loop that repeats until numguesses=maxguesses
{
b=RetrieveGuess(); //sets b equal to the value RetrieveGuess returns
GuessedIt(file_letter, b); //uses b and whichever value is entered into SingleGame to determine wheter the answer is correct
if (GuessedIt == 1) //If function that returns 1 if the guess is correct and ends the function, otherwise it increments numguesses
{
return 1;
numGuesses = 6;
}
else numGuesses = numGuesses++; //increments numguesses to end loop after 5 guesses
}
if (numGuesses == 5) //returns 0 if the letter is not guessed within 5 tries
{
return 0;
}
}
當我嘗試運行我的代碼時,我沒有收到任何錯誤消息,但是在輸入我想玩的遊戲數量後,我的代碼就結束了。有沒有錯誤,不是「無法找到或打開PDB文件」等,我使用Microsoft Visual Studio 2013點快速C中的字母遊戲在早期結束
在運行時沒有錯誤消息?但是你*得到(4)編譯器警告,所以請先處理它們。例如:if(SingleGame == 1)'這是一個函數標識符,而不是函數調用。 –
我修正了第一個2,但我找不出什麼警告'C4715:'SingleGame':並非所有控制路徑都返回一個值' –
當if(numGuesses == 5)是false時,不返回任何值。你想要'返回numGuesses!= 5;'?只是猜測;) –