PDA

Visualizza versione completa : battaglia navale


Riccio
07-06-2015, 16.52.33
sono nuovvissimo del forum sono qui per discutere di un problema con un programma. Praticamente voglio realizzare un programma che mi permetta di giocare a battaglia navale funziona così:
il programma attraverso il random inserisce 0 ed 1 nella matrice in maniera casuale, 1 corrisponde ad una nave e 0 corrisponde al mare.
Quando inserisco le coordinate nella matrice 3x3 il programma controlla se è presente un 0 o un 1 e se presente 1 dice affondato se presente 0 dice acqua.
Quando colpisce una nave il programma deve cambiare il numero 1 portandolo ad esempio a due quindi quando reinserisco le coordinate mi dovra dire "già colpito" e lo stesso con lo 0. Secondo voi si puo fare in modo molto semplice? sull'ultima parte non sono molto sicuro mi potete consigliare?
Non mi serve un'interfaccia grafica ecco perchè mi deve dire che lì già è stata fatta la mossa. Io non ne capisco molto di questo gioco il limite di mosse che imposterei per trovare le navi è di 5 o 6 altrimenti sarebbe troppo facile che dite è fattibile? Si puo semplificare l'ultima parte ?

niente print e scanf e accettata solo la libreria iostream e quella del random.

ho inziato così ma poi???
#include <iostream>
#include <time.h>
using namespace std;
int main()
{
int x[9],b[3][3],a,d,c;
srand(time(NULL));
for (int i=0; i<9; i=i+1)
{x[i]= (rand()%2);
cout<<x[i] ;
cout<<"\n";
}
d=0;
a=0;
while (a<3){
c=0;
while (c<3){
b[a][c]=x[d];
c=c+1;
d=d+1;
}
a=a+1;
}
system("pause");
return 0;
}

Riccio
07-06-2015, 18.39.05
Nessuno sa aiutarmi?

LoryOne
08-06-2015, 08.58.20
Scusa ma con b[3][9] non elimini x[9] ?

LoryOne
08-06-2015, 10.30.40
La battaglia navale che vuoi far tu implica:
* Una griglia di x righe per y colonne
Se non sbaglio hai deciso una griglia 3x9 ?
Una serie di navi composte da un numero z di celle consecutive, es:
* Portaerei 6 celle
* Corazzata 5 celle
* Incrociatore 4 celle
* Sommergibile 3 celle
* Torpediniere 2 celle
e tutte le navi non possono sovrapporsi sulla stessa riga o colonna in base all'allineamento orizzontale o verticale, ma possono essere affiancate.
Se non sbaglio non hai deciso nulla di tutto cio;
* Un numero di colpi (x*y) fino a flotta del tutto affondata (o con uscita dal gioco preventiva) e statistica di affondamento per ogni colpo;
* Due giocatori con due griglie popolate in modo tale che uno non possa conoscere la disposizione dell'altro.
Qui puoi decidere di giocare solo tu contro la disposizione del PC e mi pare che questa sia la tua scelta.

Scomponi in moduli il problema, identificandone le variabili, le priorità e le criticità, produci spezzoni di codice che assolvano al compito preposto per ogni modulo ed infine mettili insieme

Ps: Se hai usato cout per l'output userai cin per l'input.

LoryOne
08-06-2015, 10.51.36
https://www.youtube.com/watch?v=yPe-GGntIhQ