Mein Compiler beschwert sich und wirft einen Fehler (siehe Titel) über diesen Code aus:
int toLevel(int xp)
{
int points = 0;
int level = 1;
for(; level < MAX_LEVEL; level++)
{
points += floor(level + 300*pow(2, level/7.));
if(xp < points)
{
break;
}
}
return level;
}
Der Fehler liegt in der for(; level < MAX_LEVEL; level++)
Zeile, und das vollständige Fehlerprotokoll sieht so aus (das ist Zeile 50, zur Referenz):
In function 'int toLevel(int)':
50 error: erwarteter Primärausdruck vor dem ';' Token
50 error: erwartet ')' vor dem ';' Token
50 error: erwartet ';' vor ')' Token
48 warning: unbenutzte Variable 'points'
59 error: erwartet '}' am Ende der Eingabe
59 warning: keine Rückgabeanweisung in einer Funktion, die nicht void zurückgibt
=== Build finished: 4 errors, 2 warnings ===
Irgendwelche Ideen? Ich nehme an, ich habe irgendwo eine Klammer nicht geschlossen, aber ich kann sie einfach nicht finden. Da ich davon ausgehe, dass dies der Fall sein könnte, hier ist der vollständige Code für diese Datei:
#include
#include
#include
#include
#include
using namespace std;
#define MAX_LEVEL 99;
#include "main.h"
int main()
{
Player player;
loadSkills(player);
if(!loadGame(player))
{
cout << "Es sieht so aus, als ob du zum ersten Mal spielst." << endl;
cout << "Wie ist dein Name?: ";
cin >> player.name;
}
cout << "Hallo " << player.name << ", du bist Level " << toLevel(player.xp) << endl;
//TODO
return 0;
}
//Gibt true zurück, wenn geladen, sonst false
bool loadGame(Player player)
{
//TODO
return false;
}
void loadSkills(Player player)
{
vector skills;
skills.push_back((Skill){"Melee"});
skills.push_back((Skill){"Woodcutting"});
skills.push_back((Skill){"Firemaking"});
skills.push_back((Skill){"Fishing"});
skills.push_back((Skill){"Cooking"});
player.skills = skills;
}
int toLevel(int xp)
{
int points = 0;
int level = 1;
for(; level < MAX_LEVEL; level++)
{
points += floor(level + 300*pow(2, level/7.));
if(xp < points)
{
break;
}
}
return level;
}
und die main.h, auf die verwiesen wird:
#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED
vector &split(const string &s, char delim, vector &elems) {
stringstream ss(s);
string item;
while(getline(ss, item, delim)) {
elems.push_back(item);
}
return elems;
}
//Methode zur Vereinfachung
vector split(const string &s, char delim) {
vector elems;
return split(s, delim, elems);
}
struct Skill
{
string name; //Der Name der Fähigkeit
};
struct Player
{
int health; //Die aktuelle Gesundheit des Spielers
int xp; //Die Erfahrungspunkte des Spielers
int maxhealth; //Die maximale Gesundheit des Spielers
vector skills; //Die dem Spieler zur Verfügung stehenden Fähigkeiten
string name; //Der Name des Spielers
};
class InteractOption
{
public:
void doAction();//Was passieren soll
bool succeeded; //Wenn true, erhalten sie die Erfahrungspunkte dafür.
int xp; //Menge an Erfahrungspunkten, die erhalten werden
Skill skill; //Fähigkeit, in der Erfahrungspunkte gesammelt werden
string name; //"Hacken"/"Angreifen"/etc
};
class WorldObject
{
public:
InteractOption interactOption; //Die Option zur Interaktion mit dem Objekt.
//Kann null sein (d.h. nicht interagierbar)
string name; //"Baum"/"Goblin"/etc
};
bool loadGame(Player);
void loadSkills(Player);
int toLevel(int);
#endif // MAIN_H_INCLUDED