Bon, je suis encore assez novice en matière de codage en général, donc il se peut que je rate quelque chose qui est évident pour tout le monde. Ceci étant dit, j'essaie d'imprimer une simple carte à partir d'un fichier texte, mais je veux d'abord charger les informations dans un vecteur. Le problème est que je ne semble charger que la dernière ligne. J'utilise curses pour l'impression et tout ça.
Voici le code de LevelControl. Pour l'instant, je n'ai que la fonction de chargement et la fonction :
void LevelControl::loadLevel(string levelName)
{
ifstream level;
string transferLine;
level.open(levelName);
if(level.fail()){perror("Level");}
while(getline(level, transferLine));
{
int counter = 0;
loadedLevel.push_back(transferLine);
printw("\n");
counter++;
transferLine.clear();
}
}
void LevelControl::printLevel()
{
int mapSizeX = loadedLevel.size();
string loadedString;
for(int i = 0; i < mapSizeX; i++ )
{
loadedString = loadedLevel[i];
mapSizeY = loadedString.size();
printw("%s \n", loadedString.c_str());
refresh();
loadedString.clear();
}
}
Voici mon main()
int main()
{
LevelControl currentLevel;
initscr();
currentLevel.loadLevel("level.txt");
bool loopGame = true;
while(loopGame)
{
currentLevel.printLevel();
getch();
}
endwin();
return 0;
}
Voici la carte que j'essaie d'imprimer et c'est exactement comme elle est écrite dans le fichier txt :
#########*
#........#
#........#
#........#
#........#
#........#
#........#
#........#
#........#
##########
Au lieu de cela, tout ce que j'obtiens est :
##########
Donc oui... aucune idée de la raison pour laquelle il ne lit que la dernière ligne. J'ai vu de nombreux exemples de getline utilisé dans une boucle while pour imprimer un fichier entier. Je ne sais pas pourquoi je ne peux pas tout repousser dans un vecteur. Ma fonction print vérifie la taille du vecteur et j'obtiens toujours 1. Je suis donc presque sûr que ma fonction print fonctionne (ou du moins qu'elle ne cause pas ce problème).
Quoi qu'il en soit, toute aide est la bienvenue !