Ho questo problema da risolvere:
Scrivere nel linguaggio C++ il codice che implementi un software atto a realizzare il gioco di un labirinto. Il gioco sarà tale che due giocatori potranno sfidarsi e scambiarsi i ruoli di volta in volta. Pertanto, un giocatore potrà disegnare un labirinto mentre l'altro giocatore dovrà risolvere il labirinto.
Requisiti:
1. Il labirinto sarà costituito da una matrice 'm x n' di caratteri '#' che delimiteranno le aree che non sarà possibile percorrere. 2. Il percorso sarà fatto di caratteri spazio vuoto ' '. 3. Indicare il punto di partenza del labirinto con la lettera S. 4. Indicare il punto di arrivo con la lettera A. 5. Indicare con un asterisco * il percorso fatto per risolvere il labirinto. 6. Indicare con la lettera @ quando si sbaglia e bisogna tornare indietro. 7. Indicare alla fine il numero di errori commessi, ossia quante lettere @ sono presenti.
Inoltre, dalla premessa fatta si evince che il gioco sarà costituito di due componenti logiche simili, ma distinte:
1. Nella prima componente sarà implementato un codice che servirà per disegnare il labirinto, usando le 4 frecce per indicare la direzione nel quale tracciare il percorso. 2. Nella seconda componente sarà implementato il codice che servirà per risolvere il labirinto. Il giocatore percorra' il labirinto usando le 4 frecce per indicare la direzione. Il gioco funzionerà sul prompt dei comandi, e sarà implementato usando solo le funzionalità sino ad ora viste.
Di seguito, sono descritte alcune funzionalità specifiche che saranno utili al fine di implementare un software funzionante.
1. La cattura del segnale da tastiera delle quattro frecce. Le quattro frecce potrebbero essere individuate da 4 lettere, che possiamo usare per poter decidere la direzione in cui muoverci. Es: si potrebbero usare le lettere: o A (65) per indicare SINISTRA o D (68) per indicare DESTRA o W (87) per indicare SU o S (83) per indicare GIU Allo stesso modo è possibile catturare le 4 frecce, ma in questo caso occorrerà un ulteriore accorgimento. Le frecce come le lettere hanno dei corrispondenti valori numerici: o 75 per indicare SINISTRA o 77 per indicare DESTRA o 72 per indicare SU o 80 per indicare GIU
2. Per evitare che l'utente debba premere invio tutte le volte che si clicca sulla freccia o sul carattere corrispondente, occorrerà usare il comando _getch(), per poter leggere il carattere corrente. Es: char input_utente = _getch();
3. Usare il commando system("cls";); per pulire il promp dei comandi dalle digitazioni precedenti. Senza tale comando, il software funzionerà comunque, ma si vedrà un testo che scorre, mentre con il comando "system(cls);" si darà l'idea di vedere il labirinto come una immagine statica.
Aggiungo alcune righe di codice che sono riuscito a creare. Mi servirebbero alcune altre righe di codice per poter continuare... Grazie
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
const int righe = 20;
const int cols = 20;
char matrice[righe][cols];
for (int i = 0; i < righe; i++)
{
for (size_t j = 0; j < cols; j++)
{
matrice[j] = '#';
if (j == 1)
matrice[j] = '#';
}
}
for (int i = 0; i < righe; i++)
{
for (size_t j = 0; j < cols; j++)
{
cout << matrice[j] << " ";
}
cout << endl;
}
return 0;
}