Battaglia navale in C

Katia96
ho fatto già il programma, ma ora lo dobbiamo modificare con quelle 3 varianti, se me lo potete modificare, grazie al migliore, ci conto

/* gioco della battaglia navale. in ogni casella
0 = mare
1 = nave
*/
#include
#include
#include /* serve per la funzione Sleep */
#include /* serve per la funzione srand */

#define dim 3 /* dimensioni della griglia di gioco */
#define num_navi 3 /* numero di navi da abbattere */

int batt[dim][dim]; /* griglia di gioco vera */
int battv[dim][dim]; /* griglia di gioco visualizzata */
int r,c,i,j,cont;


/* inizializzazione griglia: all'inizio è tutto mare */
void InizializzaGriglia()
{
for(i=0; i

Risposte
Non ci siamo ancora... vedi un po' come va scritto il main nella prima variante:



Ti pare chiaro?? :)

Katia96
main()
{
InizializzaGriglia();
PosizionaNavi();
/* inizia il gioco */
cont = 0;
int contspari=0;
while (cont20)
contspari++;
printf("Game Over";);
system("pause";);
}

non capisco come metterlo nel ciclo while

Ma scusa un attimo, hai testato quello che hai scritto
in Bloodshed Dev-C++?? Direi proprio di no...

1. Devi scrivere int contspari=0; dato che in
precedenza tale variabile non l'avevi dichiarata.

2. Tale contatore deve essere incrementato nel
ciclo while del main, altrimenti non serve a nulla
dichiararlo se poi non lo si usa.

3. Il controllo sul numero di spari va messo anche
nella condizione di uscita dello stesso ciclo while.

4. La stampa di "Bravo, etc etc" va fatta solo nel
caso in cui all'uscita dal ciclo while il contatore
spari è inferiore al numero massimo fissato.

Sistema un po' il codice che poi procediamo. ;)

Ciao Katia. Dato che il programma che proponi praticamente ve lo ha dato
il professore, vedasi qui, l'unico vostro compito consta nell'aggiungere quelle
tre semplici varianti. Se noi te le scrivessimo di sana pianta tu cosa impareresti??
Probabilmente molto poco, se non niente, in quanto queste cose le si imparano
solamente provandoci. Quindi, ecco, ora ti do qualche idea e poi, se vorrai un'ul-
teriore mano, cerca di mettere in pratica i consigli scrivendo qui il tuo codice.

Il primo punto è davvero semplice. Basta mettere un'ulteriore condizione nel ci-
clo while del main (pilotato da un ulteriore contatore) che tenga conto dei tentativi
effettuati: nel caso in cui si terminino i tentativi e le navi non siano tutte affondate
(tramite un if) basta stampare "Game over".

Il secondo è un po' più complicato ma non di molto. Dovrai raddoppiare i campi
di battaglia (reali e virtuali) e ogni qual volta si ha un cambio di giocatore che spa-
ra occorrerà considerare un differente campo di battaglia. Inoltre, come indicato
nella consegna, va tolta la funzione che genera le navi a random, bensì ogni gio-
catore, prima di cominciare il gioco, deve disporre le proprie navi inserendo le
coordinate tramite tastiera ( fin qui le navi sono solo "unitarie" ).

Il terzo è ancora un po' più difficile da gestire in quanto le navi possono essere
anche binarie e volendo ternarie (facendo riferimento sempre ad una griglia 3x3).
In ogni modo prima vediamo di sistemare i primi due punti e in un secondo mo-
mento pensiamo anche a quest'ultima variante. ;)

Questa discussione è stata chiusa