11/01/10 15:14
Messy
Salve a tutti sono nuovo del forum e vorrei un aiutino da voi per un programma mooolto semplice.
Per domani devo fare un programma che simuli la battaglia navale in C,la nave da inserire è una sola ed è lunga due caselle,la matrice è 5 x 5,il programma funziona con due giocatori reali e inoltre mi deve chiedere dove voglio posizionare la suddetta nave e se la voglio in orizzontale e verticale.
Lo so che vi sto chiedendo di farmi praticamente il programma,ma il prof ha solo accennato l'argomento e non so come farlo..
Grazie a tutti ^^
aaa
11/01/10 16:33
nessuno
Beh ... riferisci al tuo prof. che non sei in grado di farlo perchè lui non ha spiegato bene ...
E comunque, mi sa che ci dovevi pensare un po' prima ... se è per domani ...
Ultima modifica effettuata da nessuno 11/01/10 16:33
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
11/01/10 21:29
Zonzo
Io ho provato a farlo, però non ho avuto tempo di provarlo.
Spero che funzioni.
#include <stdio.h>
#include <stdlib.h>
#define DIMENSIONE_CAMPO 5
#define LUNGHEZZA_NAVE 2
#define GIOCATORI 2
struct STR_NAVE{
int Posizione[LUNGHEZZA_NAVE][2];
char Nome[80];
int PosColpite;
};
void DisegnaCampo(struct STR_NAVE struttura);
int TrovaPosizione(int Ind1,int Ind2,struct STR_NAVE struttura);
int VerificaPosizione(int Index,struct STR_NAVE struttura);
int main()
{
int i,k,appo1,appo2;
struct STR_NAVE nave[GIOCATORI];
for(k=0;k<GIOCATORI;k++)
{
system("cls");
nave[k].PosColpite=0;
printf("Nome Giocatore %d: ",k+1);
scanf("%s",nave[k].Nome);
for(i=0;i<LUNGHEZZA_NAVE;i++)
{
DisegnaCampo(nave[k]);
do{
printf("%s\nScegli la %d^ coppia di coordinate dove sara inserita la nave(es. riga,colonna).\n",nave[k].Nome,i+1);
scanf("%d,%d",&nave[k].Posizione[i][0],&nave[k].Posizione[i][1]);
}while(VerificaPosizione(i,nave[k])==0);
DisegnaCampo(nave[k]);
if (i == (LUNGHEZZA_NAVE - 1))
{
printf("Nave inserita correttamente!\n");
system("pause");
}
}
}
system("cls");
printf("\t\tCOMINCIA LA BATTAGLIA!");
k=0;
while(1)
{
printf("\nE' il turno di %s.\n",nave[k].Nome);
printf("Scegli una coppia di coordinate(es. riga,colonna).\n");
scanf("%d,%d",&appo1,&appo2);
if(TrovaPosizione(appo1,appo2,nave[k])==0)
{
printf("Hai colpito una zona della nave!\n");
nave[k].PosColpite++;
}
else
{
printf("Niente da fare.\n");
}
if (nave[k].PosColpite == LUNGHEZZA_NAVE)
{
printf("%s ha vinto!!!\n\n",nave[k].Nome);
break;
}
if(k==0)
k=1;
else
k=0;
}
system("pause");
return 0;
}
void DisegnaCampo(struct STR_NAVE struttura){
int i,j;
system("cls");
for(i=0;i<DIMENSIONE_CAMPO;i++)
printf("%5d",i);
printf("\n\n");
for(i=0;i<DIMENSIONE_CAMPO;i++)
{
printf("%d ",i);
for(j=0;j<DIMENSIONE_CAMPO;j++)
{
if(TrovaPosizione(i,j,struttura)!=0)
printf("|__| ");
else
printf("|||| ");
}
printf("\n\n");
}
}
int TrovaPosizione(int Ind1,int Ind2,struct STR_NAVE struttura){
int i;
for(i=0;i<LUNGHEZZA_NAVE;i++)
if (Ind1 == struttura.Posizione[i][0] && Ind2 == struttura.Posizione[i][1])
return 0;
}
int VerificaPosizione(int Index,struct STR_NAVE struttura){
int i;
if ( (struttura.Posizione[Index][0] < 0 ) || ( struttura.Posizione[Index][0] >= DIMENSIONE_CAMPO ) ) return 0;
else if ( (struttura.Posizione[Index][1] < 0 ) || ( struttura.Posizione[Index][1] >= DIMENSIONE_CAMPO ) ) return 0;
else if ( Index==0 ) return 1;
else if ( ( (struttura.Posizione[Index][0] - struttura.Posizione[Index-1][0]) == 1) && ( ( struttura.Posizione[Index][1] - struttura.Posizione[Index-1][1] ) == 0 ) ) return 1;
else if ( ( (struttura.Posizione[Index][0] - struttura.Posizione[Index-1][0]) == -1) && ( ( struttura.Posizione[Index][1] - struttura.Posizione[Index-1][1] ) == 0 ) ) return 1;
else if ( ( (struttura.Posizione[Index][0] - struttura.Posizione[Index-1][0]) == 0) && ( ( struttura.Posizione[Index][1] - struttura.Posizione[Index-1][1] ) == 1 ) ) return 1;
else if ( ( (struttura.Posizione[Index][0] - struttura.Posizione[Index-1][0]) == 0) && ( ( struttura.Posizione[Index][1] - struttura.Posizione[Index-1][1] ) == -1 ) ) return 1;
else return 0;
}
Ultima modifica effettuata da Zonzo 11/01/10 22:26
aaa
11/01/10 22:14
Lawliet
Ma scusa, permettimi.. almeno commenta o spiega come l'hai fatto.
Non lo trovo corretto che dai un codice che non sai nemmeno se funziona perchè non l'hai provato, e tantomeno fare un codice pronto.
aaa
11/01/10 22:28
Zonzo
Postato originariamente da Lawliet:
Ma scusa, permettimi.. almeno commenta o spiega come l'hai fatto.
Non lo trovo corretto che dai un codice che non sai nemmeno se funziona perchè non l'hai provato, e tantomeno fare un codice pronto.
Si scusami davvero, ma andavo di fretta e ho potuto solamente scrivere due righe. Quando sarò più libero spiegherò il mio programma.
Ultima modifica effettuata da Zonzo 11/01/10 22:28
aaa