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: 6378
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