Ho un problema con il ricaricamento della matrice dentro il mio file, in sostanza appena riapro il programma il mondo di gioco non si carica correttamente e i caratteri vengono messi tutti su una linea.
Queste sono tutte le costanti e le funzioni:
const int campoY = 100;
const int campoX = 200;
const int visualePlayerX = 30;
const int visualePlayerY = 15;
const int visualePlayerXShip = 30;
const int visualePlayerYShip = 15;
void disegnaCampo(int playerX, int playerY)
{
system("cls");
for (int i = playerY - visualePlayerY / 2; i < playerY + visualePlayerY / 2; ++i)
{
for (int j = playerX - visualePlayerX / 2; j < playerX + visualePlayerX / 2; ++j)
{
if (i >= 0 && i < campoY && j >= 0 && j < campoX)
{
cout << dungeon[i][j];
}
else
{
cout << " ";
}
}
cout << endl;
}
}
void disegnaNave()
{
system("cls");
for (int i = 0; i < shipY; ++i)
{
for (int j = 0; j < shipX; ++j)
{
cout << spaceShip[i][j];
}
cout << endl;
}
}
void disegnaPianeta()
{
int posX;
int posY;
for(int i = 0; i < 5;i++)
{
posX = rand() % (campoX - 4) + 1;
posY = rand() % (campoY - 2) + 1;
for (int i = 0; i < campoY; ++i)
{
for (int j = 0; j < campoX; ++j)
{
if ((i == posY || i == posY + 2) && j >= posX && j < posX + 5)
{
dungeon[i][j] = "#";
}
else if (i > posY && i < posY + 2 && (j == posX || j == posX + 4))
{
dungeon[i][j] = "#";
}
}
}
}
}
void disegnaAsteroide()
{
int posX;
int posY;
for(int i = 0; i < 5; i++)
{
posX = rand() % (campoX - 8) + 1; // Posizione casuale sull'asse X
posY = rand() % (campoY - 6) + 1; // Posizione casuale sull'asse Y
// Disegna il pentagono
int midX = posX + 4;
int midY = posY + 2;
dungeon[midY][midX] = "0"; // Vertice superiore del pentagono
dungeon[midY + 1][midX - 1] = "0"; // Lato sinistro
dungeon[midY + 1][midX + 1] = "0"; // Lato destro
dungeon[midY + 2][midX - 2] = "0"; // Lato sinistro
dungeon[midY + 2][midX + 2] = "0"; // Lato destro
dungeon[midY + 3][midX - 1] = "0"; // Base sinistra
dungeon[midY + 3][midX] = "0"; // Base
dungeon[midY + 3][midX + 1] = "0"; // Base destra
}
}
void inizializzaCampo()
{
for (int i = 0; i < campoY; ++i)
{
for (int j = 0; j < campoX; ++j)
{
if (i == 0 || i == campoY - 1 || j == 0 || j == campoX - 1)
{
dungeon[i][j] = "#";
}
else
{
dungeon[i][j] = " ";
}
}
}
disegnaAsteroide();
disegnaPianeta();
}
void creaMondo()
{
ifstream file("spazio.txt");
if(!file.good())
{
inizializzaCampo();
ofstream file("spazio.txt");
for (int i = 0; i < campoY; ++i)
{
for (int j = 0; j < campoX; ++j)
{
if (i == 0 || i == campoY - 1 || j == 0 || j == campoX - 1)
{
file << dungeon[i][j];
}
else
{
file << dungeon[i][j];
}
}
file << endl;
}
file.close();
}
else
{
ifstream file("spazio.txt");
if (file.is_open())
{
for (int i = 0; i < campoY; ++i)
{
for (int j = 0; j < campoX; ++j)
{
if (i == 0 || i == campoY - 1 || j == 0 || j == campoX - 1)
{
file >> dungeon[i][j];
}
else
{
file >> dungeon[i][j];
}
}
}
file.close();
cout << "File 'spazio.txt' creato con successo." << endl;
}
}
}
void salvataggioMondo()
{
ofstream file("spazio.txt");
if (file.is_open())
{
for (int i = 0; i < campoY; ++i)
{
for (int j = 0; j < campoX; ++j)
{
file << dungeon[i][j];
}
file << endl;
}
file.close();
cout << "Mondo di gioco salvato con successo." << endl;
}
}
Ho messo tutto quello che penso sia necessario per far capire al meglio il problema.