Il 0% ha trovato utile questo documento (0 voti)
4 visualizzazioni12 pagine

Materiale Programmazione

L'esercitazione richiede di completare le classi GameCharacter e Weapon per un gioco in stile Rogue, migliorando il combattimento tra l'eroe e un mostro. Il progetto include tre classi principali: Dungeon, Weapon e GameCharacter, con funzioni nel file main.cpp per gestire eventi di gioco e rendering. Le modifiche al codice sono indicate tramite commenti TODO e FIXME, e la classe Dungeon non deve essere modificata.

Caricato da

Hejdk Hejdj
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
4 visualizzazioni12 pagine

Materiale Programmazione

L'esercitazione richiede di completare le classi GameCharacter e Weapon per un gioco in stile Rogue, migliorando il combattimento tra l'eroe e un mostro. Il progetto include tre classi principali: Dungeon, Weapon e GameCharacter, con funzioni nel file main.cpp per gestire eventi di gioco e rendering. Le modifiche al codice sono indicate tramite commenti TODO e FIXME, e la classe Dungeon non deve essere modificata.

Caricato da

Hejdk Hejdj
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd

Esercitazione

Class exercise
Obiettivo
• Il progetto CLion fornito contiene classi e scheletri
di classi che implementano un gioco in stile Rogue
([Link]

• Scopo dell’esercitazione è:

• Completare le classi GameCharacter e Weapon,


scrivendo codice di diversi metodi

• Correggere il comportamento del gioco nel file


[Link] per fare in modo che il combattimento
tra l’eroe ed un mostro sia più realistico
Obiettivo
• Il progetto CLion fornito contiene classi e scheletri
di classi che implementano un gioco in stile Rogue
([Link]

• Scopo dell’esercitazione è:

• Completare le classi GameCharacter e Weapon,


scrivendo codice di diversi metodi

• Correggere il comportamento del gioco nel file


[Link] per fare in modo che il combattimento
tra l’eroe ed un mostro sia più realistico
Schema del codice
• Il programma è composto da 3 classi:

• Dungeon crea mappe casuali con stanze, corridoi,


scale, porte, etc.

• Weapon rappresenta un arma con forza e magia

• GameCharacter rappresenta un personaggio del


gioco, ed è composto con Weapon, sfruttandone il
metodo use() per calcolare l’effetto del
combattimento contro un altro GameCharacter.
Schema del codice
• In main sono presenti diverse funzioni che implementano elementi fondamentali del gioco:

• getEvent() interagisce col giocatore tramite la tastiera, ricevendo i comandi

• isLegalCell() controlla che una cella della mappa del Dungeon possa ospitare un
personaggio

• setupCharacterCell() cerca delle coordinate nella mappa dove disporre un


personaggio all’avvio del gioco (“spawn”)

• isLegalMove() controlla che il movimento di un personaggio sia consentito, ovvero


si muova su una cella che lo può contenere, controllando che questa cella già non
contenga un altro personaggio.

• updateGame() aggiorna lo stato del gioco secondo i comandi del giocatore

• renderHUD() disegna sullo schermo le caratteristiche del giocatore (head up display)

• renderGame() disegna sullo schermo la mappa ed i personaggi (operazione di


“compositing”)
Schema del codice
• La funzione main() provvede ad istanziare personaggi,
mappa ed armi. Il cuore è un classico “game loop”, ovvero
un ciclo infinito (a meno di richiesta di fine gioco) in cui:

• Si ricevono gli eventi del gioco (in questo caso i


comandi del giocatore)

• Si aggiorna lo stato del gioco sulla base degli eventi

• Si disegna (rendering) il tutto:

• Disegnando lo HUD

• Disegnando la schermata del gioco


Dove modificare il codice
• Le indicazioni precise sul codice da modificare sono
fornite come commenti indicati con TODO e FIXME

• Per vedere tutti questi commenti selezionare la


finestra TODO di CLion
Dove modificare il codice
• Le indicazioni precise sul codice da modificare sono
fornite come commenti indicati con TODO e FIXME

• Per vedere tutti questi commenti selezionare la


finestra TODO di CLion
Classe Weapon

• Implementare il costruttore

• Implementare getter/setter per I due attributi

• Implementare il metodo use() secondo le


specifiche nei commenti
Classe GameCharacter
• Implementare il costruttore (la signature è fornita)

• Implementare il metodo move() con due overload


(signature fornite)

• Completare l’implementazione dei metodi fight()


e receiveDamage()

• Notare come la classe GameCharacter sia


composta con Weapon. Attenzione al fatto che
Weapon è un puntatore e deve essere inizializzato
e controllato prima del suo uso.
Main
• Istanziare oggetti: hero di tipo GameCharacter,
sword di tipo Weapon, e enemy di tipo
GameCharacter

• Completare la funzione renderHUD() per fare in


modo che se hero ha un’arma a disposizione ne
venga stampata la forza

• EXTRA: modificare la funzione updateGame(),


eventualmente aggiungendo nuove funzioni di aiuto
per fare in modo che il giocatore possa attaccare il
mostro solo quando è in una posizione adiacente.
Classe Dungeon

• Questa classe non deve essere toccata

Potrebbero piacerti anche