gpt4 book ai didi

用 c 创建一个游戏来猜测下一个数字是更高还是更低

转载 作者:行者123 更新时间:2023-11-30 15:44:24 25 4
gpt4 key购买 nike

所以我现在正在学习编码。这是一个在Linux 终端上运行的程序。

游戏应生成 2-14 之间的数字(一副牌),并让用户猜测下一个数字会更高还是更低。

我遇到的问题是游戏运行正常,但游戏会评估上一回合的数字。如果我在第一回合得到 6,第二回合得到 7,第三回合得到 3,并且我猜测第三回合的数字会更高,那么它将评估为正确的猜测,因为 7 高于 6,而不是理应考虑到 3。

此外,当输入不正确时,我的代码创建新的随机数时遇到问题。它应该保持相同的数字,直到用户输入有效的选择。

示例输出:

当前牌是 9。下一个数字会更高(1)还是更低(2)?2

你猜错了。您当前的分数是-1!目前的数量是 9。下一个数字会更高(1)还是更低(2)?2

卡片是相同的。您当前的分数是-1!当前数量为 3下一个数字会更高(1)还是更低(2)?

这是我的完整代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
/*declare variables*/
int pastCard;
int currentCard;
int score;
int userChoice;
int playGame = 1;


/*set up random*/
int range;
srand(time(NULL));
range = (13 - 1) + 1;

pastCard = rand() % range + 2;
currentCard = rand() % range + 2;

while (playGame == 1)
{
/*change the current card to the past card before creating new current card*/
pastCard = currentCard;

/*generate a random int for card*/

currentCard = rand() % range + 2;

if (currentCard < 11)
{
printf("The current card is a %d.\n", currentCard);
}
else if (currentCard == 11)
{
printf("The current card is a jack.\n", currentCard);
}
else if (currentCard == 12)
{
printf("The current card is a queen.\n", currentCard);
}
else if (currentCard == 13)
{
printf("The current card is a king.\n", currentCard);
}
else if (currentCard == 14)
{
printf("The current card is an ace.\n", currentCard);
}

printf("Will the next card be higher(1) or lower(2)? (press 0 to quit)\n");
scanf("%d", &userChoice);
printf("\n");


if (userChoice == 1)
{
if (currentCard > pastCard)
{
score++;

printf("You have guessed correctly.\n");
printf("Your current score is %d!\n", score);
}
else if (currentCard < pastCard)
{
score--;

printf("You have guessed incorrectly.\n");
printf("Your current score is %d!\n", score);
}
else if (currentCard == pastCard)
{
printf("The cards are the same.\n");
printf("Your current score is %d!\n", score);
}
}
else if (userChoice == 2)
{
if (currentCard < pastCard)
{
score++;

printf("You have guessed correctly.\n");
printf("Your current score is %d!\n", score);
}
else if (currentCard > pastCard)
{
score--;

printf("You have guessed incorrectly.\n");
printf("Your current score is %d!\n", score);
}
else if (currentCard == pastCard)
{
printf("The cards are the same.\n");
printf("Your current score is %d!\n", score);
}
}
else if (userChoice == 0)
{
playGame = 0;
printf("Final score: %d\n", score);

score = 0;

printf("Play again? (press 1 for yes, 0 for no)\n");
scanf("%d", &playGame);
printf("\n");
}
else
{
printf("Please enter a valid choice.\n");
}

}

return 0;
}

请帮忙!这让我非常沮丧!

最佳答案

您可以通过更改来解决您的主要问题:

printf("The current number is a %d.\n", currentCard);

至:

printf("The current number is a %d.\n", pastCard);

在所有地方,因为正如您所写的那样,currentCard 是他们试图猜测的那个,而不是您想要向他们展示的那个。您可以通过将 pastCard 重命名为 currentCard,并将 currentCard 重命名为 nextCard 来改进程序。

或者,使用更新后的代码,更改为:

if (pastCard < 11) {
printf("The current card is a %d.\n", pastCard);
} else if (pastCard == 11) {
printf("The current card is a jack.\n", pastCard);
} else if (pastCard == 12) {
printf("The current card is a queen.\n", pastCard);
} else if (pastCard == 13) {
printf("The current card is a king.\n", pastCard);
} else if (pastCard == 14) {
printf("The current card is an ace.\n", pastCard);
}

关于用 c 创建一个游戏来猜测下一个数字是更高还是更低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19485073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com