每当我尝试运行此游戏时,它会自动返回0。 游戏是一个基于文本的生存游戏,我在Code :: Blocks上编码。编译器是MinGW。我是一个知识渊博的程序员。编译时没有错误。
// This game automatically returns 0 and ends for some reason...
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
int hunger;
int warmth;
int thirst;
int choice;
// Declares variables for hunger, warmth, thirst, and the users choice
int start()
{
cout<< "You are stuck in a forest, all alone"<< endl;
cout<< "You must maintain your hunger, thirst, and warmth." << endl;
int mainPage();
}
int hunt()
{
srand(time(0));
cout<< "You have chosen hunt!"<< endl;
if ((rand() % 2) == 2){
cout<< "You caught a deer!"<< endl;
hunger = hunger + 1;
}
else{
cout<< "You could not find anything..."<< endl;
}
int mainPage();
}
// The previous function is used for the hunting choice
int wood()
{
cout<< "You have chosen find firewood!"<< endl;
if ((rand() % 2) == 2){
cout<< "You found firewood!"<<endl;
warmth = warmth + 1;
}
else{
cout<< "You could not find any firewood"<< endl;
}
int mainPage();
}
// Wood choice
int water()
{
cout<< "You have chosen find water!"<< endl;
if ((rand() % 2) == 2){
cout<< "You have found a river!"<< endl;
thirst = thirst + 1;
}
else{
cout<< "You could not find anything..."<< endl;
}
int mainPage();
}
// Water choice
int mainPage()
{
warmth = warmth - 1;
hunger = hunger - 1;
thirst = thirst - 1;
// Subtracts one from each variable per turn
if (hunger == 0){
cout<< "You starved!"<< endl;
cout<< "Game over!"<< endl;
return 0;
}
if (thirst == 0){
cout<< "You became dehydrated!"<< endl;
cout<< "Game over!"<< endl;
return 0;
}
if (warmth == 0){
cout<< "You froze!"<< endl;
cout<< "Game over!"<< endl;
return 0;
}
// You die if any of the variables reach zero
cout<< "Your hunger is"<< hunger<< endl;
cout<< "Your warmth is"<< warmth<< endl;
cout<< "Your thirst is"<< thirst<< endl;
cout<< "What would you like to do?"<< endl;
cout<< "1 = hunt, 2 = find firewood, 3 = find water"<< endl;
cin>> choice;
if (choice = 1){
int hunt();
}
if (choice = 2){
int wood();
}
if (choice = 3){
int water();
}
// The main page that takes the users choice as input and also tells you the amount of each variable
}
int main()
{
hunger = 5;
thirst = 5;
warmth = 5;
int start();
}
// the main function
答案 0 :(得分:3)
您的代码有几个问题。首先,您没有正确调用您的功能。当你有
int start();
在main()
中,它不会调用start
函数,而是声明一个名为start
的函数,该函数返回int
并且不执行任何操作。知道你的主要功能必不可少
int main() {}
因为除了设置一些永远不会使用的变量之外什么都不做。打开警告的好编译器应该至少告诉您有未使用的变量。
当你声明一个函数而不是调用它时,你将在其他地方调用函数时遇到同样的问题。
修复函数调用后,第二个问题就会出现。在定义函数之前,您将使用函数。解决这个问题的一个简单方法是在定义/使用任何函数之前声明所有函数的函数原型,以便编译器知道该函数将会存在。
第三个问题是你使用
srand(time(0));
在函数hunt()
中。这意味着每次拨打hunt
时,您都会重新设置rand
。而不是这样做,你可以将srand(time(0));
放在main中,然后每次执行程序时只会rand
种子。
我看到的最后一件事是没有声明返回int
的函数实际返回任何内容。如果声明函数具有返回值,则需要从函数返回一些内容。如果您不想返回任何内容,则可以返回类型void
,这意味着该函数不返回任何内容。