feature image - https://source.unsplash.com/random/900×600/?wallpaper&sig=edabcc63-f51c-472d-9911-c3070a122ff5

Rougelike in C++ 11: Disegnare la mappa partendo da un array

Esercizio

Mostrare a video una mappa di dimensione fissata salvata in un array (scegliere un modo adatto di salvare i dati della mappa). Per ora la mappa è tutta vuota e la terra nuda nel nostro rougelike è rappresentata dal carattere ..

Video

Soluzione

La dimensione della mappa sarà definita da due costanti W e H,definite utilizzando di preprocessore #define.

Se pensiamo ad una mappa 2x2, il nostro vettore sarà [(0,0),(1,0),(0,1),(1,1)]\left[(0,0),(1,0),(0,1),(1,1)\right], quindi per ottenere la posizione dell’elemento di posto (i,j)(i,j) nella mappa di dimensioni (W,H)(W,H)

posizione=(jW+i)posizione = (j*W+i)

per cui il nostro codice sarà

#include <iostream>

#define W 20
#define H 20

using namespace std;

int main() {
char map[W*H];

for(auto i=0;i<W*H;i++){
map[i]='.';
}

// disegno mappa
for(auto y = 0;y < H;y++){
for(auto x=0;x<W;x++){
cout << map[y*W+x];
}
cout << endl;
}
}

Altri Esercizi

Esercizi sugli array in C++

Esercizi sulle funzioni in C++

Esercizi sulle matrici / array bidimensionali in C++

Andrea Pollini

Matematico, informatico.