HeroGian
23-04-2013, 15:48
Salve a tutti, volevo chiedervi qualche consiglio per programmare l'intelligenza artificiale del computer nel gioco della battaglia navale.
Preciso che non vi chiedo assolutamente di farmi il codice ci mancherebbe xd.. volevo giusto raccogliere qualche idea su come procedere e poi mettermi a fare qualche prova.
Per ora l'unica idea che mi è venuta in mente è una cosa del genere:
Nel mio programma ho definito una struttura dati fatta un questo modo
struct nave {
int x;
int y;
int lunghezza;
int punti vita;
int posizione;
bool affondata;
};
x e y sono le coordinate della prima cella, la posizione mi segna se è verticale o orizzontale e punti vita quante celle ancora da colpire rimangono.
La mia idea era quella di fare un'altra strutta definita in questa maniera:
struct tab {
bool DX;
bool SX;
bool UP;
bool DOWN;
bool colpito;
};
e fare una cosa del genere: controllare che colpito sia false e in quel caso sparare a caso nella matrice del giocatore ed aggiornare le possibili posizioni di altre parti della nave, es: se colpisco una cella adiacente alla prima con la stessa coordinata x allora vuol dire che la nave è orizzontale, quindi posso già escludere UP e DOWN mettendoli a false..
L'unica idea che mi è venuta in mente, ma mi sembra un po intricata da mettere a punto.. o forse si potrebbe fare con solo tre booleani, due che mi stabiliscono se è orizzontale o verticale e il terzo se allo stato precedente ha colpito o meno una nave??
voi che fareste??
grazie :)
Preciso che non vi chiedo assolutamente di farmi il codice ci mancherebbe xd.. volevo giusto raccogliere qualche idea su come procedere e poi mettermi a fare qualche prova.
Per ora l'unica idea che mi è venuta in mente è una cosa del genere:
Nel mio programma ho definito una struttura dati fatta un questo modo
struct nave {
int x;
int y;
int lunghezza;
int punti vita;
int posizione;
bool affondata;
};
x e y sono le coordinate della prima cella, la posizione mi segna se è verticale o orizzontale e punti vita quante celle ancora da colpire rimangono.
La mia idea era quella di fare un'altra strutta definita in questa maniera:
struct tab {
bool DX;
bool SX;
bool UP;
bool DOWN;
bool colpito;
};
e fare una cosa del genere: controllare che colpito sia false e in quel caso sparare a caso nella matrice del giocatore ed aggiornare le possibili posizioni di altre parti della nave, es: se colpisco una cella adiacente alla prima con la stessa coordinata x allora vuol dire che la nave è orizzontale, quindi posso già escludere UP e DOWN mettendoli a false..
L'unica idea che mi è venuta in mente, ma mi sembra un po intricata da mettere a punto.. o forse si potrebbe fare con solo tre booleani, due che mi stabiliscono se è orizzontale o verticale e il terzo se allo stato precedente ha colpito o meno una nave??
voi che fareste??
grazie :)