【发布时间】:2015-09-26 05:37:31
【问题描述】:
好的,我已经看了好几个小时了,可能只是因为太晚了,但我脑残了。所以代码应该完成以下工作:
- 显示说明
- 询问用户要玩的游戏数
- 每场比赛 一种。从文件中获取一封信 湾。玩一场游戏 一世。虽然仍有猜测 ii.从玩家那里得到猜测 iii.将猜测与文件中的字母进行比较 iv.如果猜测正确,则返回 1 v. 否则增加计数器 六。如果 5 次猜测不正确,则返回 0 C。检查输赢
这是我到目前为止的代码,有什么想法可以让这个东西正常运行吗?:
#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 Game\n");
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';
}
}
【问题讨论】:
-
现在运行有什么不妥之处?
-
这是什么
return '1';为什么不只是return 1;? -
返回的是什么
retrieveGuess()?。也许你只需要睡觉:) -
应始终检查来自
fopen()的返回值,即注释掉错误检查是一种非常糟糕的编程习惯。