Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Battaglia Navale in C molto semplificata
Forum - C/C++ - Battaglia Navale in C molto semplificata

Avatar
Messy (Normal User)
Newbie


Messaggi: 1
Iscritto: 11/01/2010

Segnala al moderatore
Postato alle 16:14
Lunedì, 11/01/2010
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 ^^

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 17:33
Lunedì, 11/01/2010
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 il 11/01/2010 alle 17: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à.
PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 18:02
Lunedì, 11/01/2010
Se lo dice così al professore è praticamente come subire una fucilata!
Ne so per esperienza personale, io sui professori ormai non ci conto più (salvo alcuni che sono davvero in gamba).
Chiedi troppo..
Roma non è stata costruita in un giorno :pat:

PM Quote
Avatar
Zonzo (Ex-Member)
Rookie


Messaggi: 34
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 22:29
Lunedì, 11/01/2010
Io ho provato a farlo, però non ho avuto tempo di provarlo.
Spero che funzioni.
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define DIMENSIONE_CAMPO 5
  5. #define LUNGHEZZA_NAVE 2
  6. #define GIOCATORI 2
  7.  
  8. struct STR_NAVE{
  9.        int Posizione[LUNGHEZZA_NAVE][2];
  10.        char Nome[80];
  11.        int PosColpite;
  12. };
  13.  
  14. void DisegnaCampo(struct STR_NAVE struttura);
  15. int TrovaPosizione(int Ind1,int Ind2,struct STR_NAVE struttura);
  16. int VerificaPosizione(int Index,struct STR_NAVE struttura);
  17.  
  18. int main()
  19. {
  20. int i,k,appo1,appo2;
  21. struct STR_NAVE nave[GIOCATORI];
  22.  
  23. for(k=0;k<GIOCATORI;k++)
  24. {                        
  25.  system("cls");                      
  26.  nave[k].PosColpite=0;
  27.  printf("Nome Giocatore %d: ",k+1);
  28.  scanf("%s",nave[k].Nome);                      
  29.  for(i=0;i<LUNGHEZZA_NAVE;i++)
  30.  {
  31.   DisegnaCampo(nave[k]);                            
  32.   do{
  33.    printf("%s\nScegli la %d^ coppia di coordinate dove sara inserita la nave(es. riga,colonna).\n",nave[k].Nome,i+1);
  34.    scanf("%d,%d",&nave[k].Posizione[i][0],&nave[k].Posizione[i][1]);
  35.   }while(VerificaPosizione(i,nave[k])==0);
  36.   DisegnaCampo(nave[k]);
  37.   if (i == (LUNGHEZZA_NAVE - 1))
  38.   {
  39.     printf("Nave inserita correttamente!\n");
  40.     system("pause");      
  41.   }
  42.  }
  43. }
  44.  
  45.  system("cls");
  46.  printf("\t\tCOMINCIA LA BATTAGLIA!");
  47.  
  48.  k=0;
  49.  while(1)
  50.  {
  51.   printf("\nE' il turno di %s.\n",nave[k].Nome);
  52.   printf("Scegli una coppia di coordinate(es. riga,colonna).\n");
  53.   scanf("%d,%d",&appo1,&appo2);
  54.   if(TrovaPosizione(appo1,appo2,nave[k])==0)
  55.   {
  56.     printf("Hai colpito una zona della nave!\n");
  57.     nave[k].PosColpite++;
  58.   }
  59.   else
  60.   {
  61.     printf("Niente da fare.\n");
  62.   }
  63.   if (nave[k].PosColpite == LUNGHEZZA_NAVE)
  64.   {
  65.    printf("%s ha vinto!!!\n\n",nave[k].Nome);
  66.    break;  
  67.   }
  68.   if(k==0)
  69.     k=1;
  70.   else
  71.     k=0;  
  72.  }
  73.  
  74. system("pause");
  75. return 0;
  76. }
  77.  
  78. void DisegnaCampo(struct STR_NAVE struttura){
  79.  int i,j;
  80.  
  81.  system("cls");
  82.  
  83.  for(i=0;i<DIMENSIONE_CAMPO;i++)
  84.     printf("%5d",i);
  85.      
  86.  printf("\n\n");
  87.  
  88.  for(i=0;i<DIMENSIONE_CAMPO;i++)
  89.  {
  90.     printf("%d  ",i);
  91.     for(j=0;j<DIMENSIONE_CAMPO;j++)
  92.     {  
  93.        if(TrovaPosizione(i,j,struttura)!=0)
  94.         printf("|__| ");            
  95.        else
  96.         printf("|||| ");
  97.     }
  98.     printf("\n\n");
  99.  }                        
  100. }
  101.  
  102. int TrovaPosizione(int Ind1,int Ind2,struct STR_NAVE struttura){
  103.  int i;
  104.  
  105.  for(i=0;i<LUNGHEZZA_NAVE;i++)
  106.    if (Ind1 == struttura.Posizione[i][0] && Ind2 == struttura.Posizione[i][1])
  107.       return 0;      
  108. }
  109.  
  110. int VerificaPosizione(int Index,struct STR_NAVE struttura){
  111.  int i;
  112.  
  113.  if ( (struttura.Posizione[Index][0] < 0 ) || ( struttura.Posizione[Index][0] >= DIMENSIONE_CAMPO ) ) return 0;
  114.  else if ( (struttura.Posizione[Index][1] < 0 ) || ( struttura.Posizione[Index][1] >= DIMENSIONE_CAMPO ) ) return 0;
  115.  else if ( Index==0 ) return 1;
  116.  else if ( ( (struttura.Posizione[Index][0] - struttura.Posizione[Index-1][0]) == 1) && ( ( struttura.Posizione[Index][1] - struttura.Posizione[Index-1][1] ) == 0 ) ) return 1;
  117.  else if ( ( (struttura.Posizione[Index][0] - struttura.Posizione[Index-1][0]) == -1) && ( ( struttura.Posizione[Index][1] - struttura.Posizione[Index-1][1] ) == 0 ) ) return 1;
  118.  else if ( ( (struttura.Posizione[Index][0] - struttura.Posizione[Index-1][0]) == 0) && ( ( struttura.Posizione[Index][1] - struttura.Posizione[Index-1][1] ) == 1 ) ) return 1;
  119.  else if ( ( (struttura.Posizione[Index][0] - struttura.Posizione[Index-1][0]) == 0) && ( ( struttura.Posizione[Index][1] - struttura.Posizione[Index-1][1] ) == -1 ) ) return 1;
  120.  else return 0;
  121.  
  122. }




Zonzo ha allegato un file: Battaglia Navale.zip (8563 bytes)
Clicca qui per scaricare il file

Ultima modifica effettuata da Zonzo il 11/01/2010 alle 23:26
PM Quote
Avatar
Lawliet (Normal User)
Expert


Messaggi: 386
Iscritto: 09/04/2009

Segnala al moderatore
Postato alle 23:14
Lunedì, 11/01/2010
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.

PM Quote
Avatar
Zonzo (Ex-Member)
Rookie


Messaggi: 34
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 23:28
Lunedì, 11/01/2010
Testo quotato

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 il 11/01/2010 alle 23:28
PM Quote