Skip to content

v3.0 - Creazione della prima mappa di gioco da un’immagine

Choose a tag to compare

@AlbyMiscy AlbyMiscy released this 09 Nov 17:59
· 28 commits to main since this release
41e0958
step03

📌 Descrizione

In questo aggiornamento di NeoSnake sono state introdotte importanti modifiche strutturali e funzionali al progetto, finalizzate a rendere l’esperienza di gioco più completa e coerente con un ambiente di gioco reale.

  • Implementazione della mappa di gioco (map.hpp, map.cpp): è stata aggiunta una nuova classe Map in grado di caricare una mappa da immagine e disegnarla utilizzando la texture wall.png.
  • Gestione dinamica della view: La view ora segue il serpente in modo fluido e viene limitata ai margini della mappa, impedendo che il giocatore possa vedere aree al di fuori del campo di gioco.
  • Gestione collisione tra serpente e muri: Durante l'update, il gioco verifica se la testa del serpente si sta spostando verso una cella muro o al di fuori della mappa. In caso positivo viene impostato lo stato di Game Over (GAMEOVER), impedendo ulteriori movimenti.
  • Correzione del metodo moveFruit(): Il posizionamento del frutto è stato migliorato: ora viene generato esclusivamente su celle libere, evitando sia le sezioni del serpente sia i muri della mappa.
  • Generato il file resource_path.h.in e inclusa la directory generata in CMake: Aggiunto il template resource_path.h.in e generato resource_path.h via configure_file per definire la macro RESOURCE_DIR (path assoluto della cartella resources). Introdotta la variabile ${GENERATED_DIR} (${CMAKE_BINARY_DIR}/generated) e aggiunta a target_include_directories(NeoSnake) per rendere visibile l'header generato al compilatore. A questo punto i percorsi delle risorse sono corretti in fase di sviluppo/debug indipendentemente dalla working directory dell'eseguibile.
NeoSnake
 │
 ├── 📂handlers/
 │   ├── draw.cpp
 │   ├── fruitFunction.cpp
 │   ├── input.cpp
 │   ├── snakeFunction.cpp
 │   └── update.cpp
 │
 ├── 📂header/
 │   ├── engine.hpp
 │   ├── fruit.hpp
 │   ├── snake.hpp
+│   ├── resource_path.h.in
+│   └── map.hpp
 │
 ├── 📂src/
 │   ├── engine.cpp
 │   ├── fruit.cpp
 │   ├── main.cpp
 │   ├── snake.cpp
+│  └── map.cpp
 │
 └── 📂resources/
+    ├── 📂levels/
+    │   └── Level01.png
     │
+    └── 📂texture/
+       └── wall.png

🔗 Link utili