Esercizio 08
Si realizzi un programma che riproduca un semplice gioco di avventura testuale in cui il campo di gioco è un grafo i cui nodi sono costituiti da una descrizione e una lista di oggetti (rappresentati da una stringa, per esempio: “coltello”, “chiave”, ecc.). Gli archi sono caratterizzati da una direzione (stringa indicante la direzione, p.e. “Nord”, “Sud”, ecc...) ed eventualmente da un oggetto. Il gioco è giocato da un personaggio caratterizzato da un nome e da una lista di oggetti, inizialmente vuota.
Si realizzi le seguenti funzioni:
- funzione caricaGrafo che inserisce i nodi nel grafo (in ogni nodo inserire la descrizione degli ambienti e l’elenco di oggetti);
- funzione aggiungiOggetto (Personaggio, Oggetto), che aggiunge al personaggio un oggetto presente in un Nodo;
- funzione spostamento (Grafo, Nodo, Direzione, Personaggio): Sposta il personaggio in un altro Nodo rispettando le seguenti regole: Se nell’arco avente la direzione data c’è un oggetto e il personaggio possiede tale oggetto restituisce il nodo destinazione ed elimina l'oggetto sia dall'arco che dal personaggio; se nell’arco è presente un oggetto e il personaggio non possiede tale oggetto la funzione restituisce il nodo di stesso (il personaggio non si muove); se l’arco non possiede oggetti la funzione restituisce il nodo destinazione. Se il personaggio arriva al nodo destinazione e il nodo contiene oggetti aggiungere gli oggetti presenti nel nodo al personaggio.
- funzione direzioniDisponibili(Nodo), che restituisce la lista delle direzioni che il personaggio può intraprendere (lista di stringhe).
- funzione visualizzaOggetti(Nodo), che restituisce la lista di oggetti presenti nel nodo
- funzione doveMiTrovo(Nodo), che restituisce la descrizione del nodo
- funzione inventario(Personaggio), che restituisce l'elenco di oggetti che il personaggio possiede
- funzione direzioni(Nodo), che restituisce le direzioni che il personaggio può prendere (stampando l'elenco delle direzioni degli archi uscendi dal nodo)
Si faccia il test delle funzioni creando un grafo che non abbia più di 4 archi per ogni nodo e si usi almeno una volta le funzioni realizzate. Dopo aver realizzato tutti i punti richiesti in questa esercitazione, inviarla all'indirizzo paolo.buono@uniba.it in una cartella compressa in formato zip. Il file deve essere chiamato: "[ASDBR1314] esercizio08 - cognome.zip" (cognome è il cognome dello studente che ha realizzato l'esercitazione) e deve contenere solo file .h, .cpp, e il file di progetto (NO .exe). Scadenza dell'invio dell'esercitazione: 23.59 di domenica 15 dicembre.