Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Algoritmo simula partita di pallavolo
Forum - C/C++ - Algoritmo simula partita di pallavolo

Avatar
asteroid (Normal User)
Newbie


Messaggi: 17
Iscritto: 21/01/2011

Segnala al moderatore
Postato alle 18:31
Venerdì, 21/01/2011
Si vuole sviluppare un programma per la simulazione del gioco della pallavolo. Si suppone di avere due squadre di 4 giocatori ognuna. Il campo da gioco viene considerato come una mappa regolare di dimensioni 6 x 6. Ogni giocatore, per ogni squadra, possiede una regione (cella) identificata casualmente.
Il gioco procede in questo modo:
· In modo casuale si sceglie la squadra che batte la palla.
· La palla viene lanciata nel campo avversario e cade in una cella scelta
casualmente,
se la palla cade in una cella vuota il punteggio viene dato alla
squadra attaccante. La squadra ricevente provvede a battere la palla.
Se la palla cade in una cella con un giocatore la palla viene lanciata
nel campo avversario
· La palla lanciata ha il 40% di cadere sulla rete e il 20% di andare fuori. In
questo caso il punto va alla squadra avversaria a quella che batte.
Vince la squadra che per prima arriva a 20.
L’algoritmo usa la function rand() in stdlib per generare numeri casuali: si
ricorda che, per esempio, se numero_casuale è un int, la chiamata
numero_casuale=rand()%11; genera un numero casuale intero (distribuzione
uniforme) nell’insieme (0,1,2,3,4,5,6,7,8,9,10). Usare sempre la srand() per
rendere automatica la scelta iniziale del seed della sequenza di numeri casuali.

io ho cominciato a dichiarare una matrice 6x6
:-?
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void main()
{int i,j,nx,ny;
char squadra1;
char squadra2;
squadra1='x'; *\sarebbero i giocatori cn le maglie x
squadra2='o'; *\sarebbero i giocatori cn le maglie o
char campo [][6]= {{' ',' ',' ',' ',' ',' ',},
{' ',' ',' ',' ',' ',' ',},
{' ',' ',' ',' ',' ',' ',},
{' ',' ',' ',' ',' ',' ',},
{' ',' ',' ',' ',' ',' ',},
{' ',' ',' ',' ',' ',' ',}};
è mi sn fermato qui, perchè non sò se dividere il campo in modo da far entrare una squadra nel campo 3x3 e viceversa l'altra...???
:idea:
dp per generare una posizione dei giocatori e posizionarli sul campo potrei fare:

for(i=1;i<=4; i++)
{nx=rand()%6;
ny=rand()%6;
campo[nx][ny]= squadra1;
}
for(i=1;i<=4; i++)
{nx=rand()%6;
ny=rand()%6;
campo[nx][ny]= squadra2;
}

se
avete altre idee in merito...sarei lieto di visionarle insieme a voi...:heehee:


herman
PM Quote
Avatar
Danyez (Normal User)
Newbie


Messaggi: 15
Iscritto: 28/01/2010

Segnala al moderatore
Postato alle 21:53
Sabato, 22/01/2011
Mi raccomando, controlla che le posizioni del giocatore 1 e 2 non si trovino nella parte di campo in cui non devono stare o sulla rete =)


http://danyez.net < Un mio piccolo blog di recente nascita.
PM Quote
Avatar
asteroid (Normal User)
Newbie


Messaggi: 17
Iscritto: 21/01/2011

Segnala al moderatore
Postato alle 13:10
Lunedì, 24/01/2011
infatti ho provato ad eseguirlo il codice in C... e le posizioni dei giocatori di entrambe le squadre mi vengono mischiate...
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void main()
  6. {
  7. int i,j,nx,ny;
  8. char squadra1='x';
  9. char squadra2='o';
  10. char campo[][6]={{' ',' ',' ',' ',' ',' ',},
  11.                            {' ',' ',' ',' ',' ',' ',},
  12.                            {' ',' ',' ',' ',' ',' ',},
  13.                            {' ',' ',' ',' ',' ',' ',},
  14.                            {' ',' ',' ',' ',' ',' ',},
  15.                            {' ',' ',' ',' ',' ',' ',}};
  16. srand(time(NULL));
  17. for(i=1; i<=4; i++)
  18. {
  19. nx=rand()%6;
  20. ny=rand()%6;
  21. campo[nx][ny]=squadra1;
  22. }
  23. for(i=1; i<=4; i++)
  24. {
  25. nx=rand()%6;
  26. ny=rand()%6;
  27. campo[nx][ny]=squadra2;
  28. }
  29. for(i=0; i<6; i++)
  30. {for(j=0; j<6; j++)
  31. printf("%c",campo[i][j]);
  32. printf("\n");
  33. }


non sò come  dividere il campo in modo ke le squadre non vengono mischiate:yup:


herman
PM Quote
Avatar
asteroid (Normal User)
Newbie


Messaggi: 17
Iscritto: 21/01/2011

Segnala al moderatore
Postato alle 18:30
Martedì, 25/01/2011
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. int main()
  5. {int  j,i,nx,ny;
  6. char giocator1='x';      /*giocatori maglia x*/
  7. char giocator2='o';      /*giocatori maglia o*/
  8. char campo [][6]= {{' ',' ',' ',' ',' ',' '},
  9.                    {' ',' ',' ',' ',' ',' '},
  10.                    {' ',' ',' ',' ',' ',' '},
  11.                    {' ',' ',' ',' ',' ',' '},
  12.                    {' ',' ',' ',' ',' ',' '},
  13.                    {' ',' ',' ',' ',' ',' '}};              
  14. srand(time(NULL));
  15. for(i=1;i<=4; i++)  /*genera 4 posizioni a caso sul campo*/
  16. {
  17. nx=rand()%6;
  18. ny=3+rand()%3-6;                   /*sposto sulle ultime 3 colonne*/
  19. campo[nx][ny]=giocator1;
  20. if (campo[nx][ny]==' ')             /*controllo cella libera*/
  21. nx=rand()%6;
  22. ny=rand()%3;                          /*sposto sulle prime 3 colonne*/
  23. campo[nx][ny]=giocator2;
  24. }
  25. for(i=0; i<6; i++)
  26. {for(j=0; j<6; j++)
  27. printf("%c",campo[i][j]);
  28. printf("\n");
  29. }
  30.   system("PAUSE");     
  31.   return 0;
  32. }



facendo così riesco a non farle mischiare:rofl:...ma adesso rimane il problema maggiore è ke i giocatori generati in alcuni test...sono mancanti cioè a volte i giocatori 'o' ne sono 3,2,1 ecc... e lo stesso per i giocatori 'x'.:-?


herman
PM Quote
Avatar
asteroid (Normal User)
Newbie


Messaggi: 17
Iscritto: 21/01/2011

Segnala al moderatore
Postato alle 17:04
Mercoledì, 26/01/2011
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. int main()
  5. {int  j,i,nx,ny;
  6. char giocator1='x';      /*giocatori maglia x*/
  7. char giocator2='o';      /*giocatori maglia o*/
  8. char campo [][6]= {{' ',' ',' ',' ',' ',' '},
  9.                    {' ',' ',' ',' ',' ',' '},
  10.                    {' ',' ',' ',' ',' ',' '},
  11.                    {' ',' ',' ',' ',' ',' '},
  12.                    {' ',' ',' ',' ',' ',' '},
  13.                    {' ',' ',' ',' ',' ',' '}};          
  14. srand(time(NULL));
  15. char rete='I';
  16. for(i=0;i<6;i++){
  17. campo[i][2]=rete;                  
  18. }      
  19. for(i=1;i<=4; i++)                         /*genera 4 posizioni a caso sul campo*/
  20.  
  21. {
  22. nx=rand()%6;
  23. ny=3+rand()%3-6;             /*sposto sulle ultime 3 celle*/
  24. campo[nx][ny]=giocator1;
  25. nx=rand()%6;
  26. ny=rand()%2;                /*sposto sulle prime 3 celle*/
  27. campo[nx][ny]=giocator2;
  28. }
  29. for(i=0; i<6; i++)
  30. {for(j=0; j<6; j++)
  31. printf("%c",campo[i][j]);
  32. printf("\n");
  33. }
  34.   system("PAUSE");     
  35.   return 0;
  36. }


ho messo la rete:k:...raga per favore sapete dirmi perchè mi genera dei giocatori mancanti???:idea:...non mi vengono idee su come mettere un controllo sulle celle


herman
PM Quote
Avatar
asteroid (Normal User)
Newbie


Messaggi: 17
Iscritto: 21/01/2011

Segnala al moderatore
Postato alle 17:20
Venerdì, 28/01/2011
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main()
  6. {int squadrax=4;
  7. int squadrao=4;
  8.     int  j,i,nx,ny;
  9.     char giocator1='x';      /*giocatori maglia x*/
  10.     char giocator2='o';      /*giocatori maglia o*/
  11.     char campo [][6]= {{' ',' ',' ',' ',' ',' '},
  12.                       {' ',' ',' ',' ',' ',' '},
  13.                       {' ',' ',' ',' ',' ',' '},
  14.                       {' ',' ',' ',' ',' ',' '},
  15.                       {' ',' ',' ',' ',' ',' '},
  16.                       {' ',' ',' ',' ',' ',' '}};
  17.  
  18.     srand(time(NULL));
  19.     char rete='I';
  20.     for(i=0;i<6;i++){
  21.         campo[i][2]=rete;
  22.     }
  23.  
  24.     i=1;
  25.     while(i<=squadrax){
  26.         nx=rand()%6;
  27.         ny=3+rand()%3;             /*sposto sulle ultime 3 celle*/
  28.         if(campo[nx][ny]!='x')     /*controllo che i giocatori non siano ripetuti sulla stessa cella*/
  29.             i++;
  30.         campo[nx][ny]=giocator1;
  31.     }
  32.     j=1;
  33.     while(j<=squadrao){
  34.         nx=rand()%6;
  35.         ny=rand()%2;                 /*sposto sulle prime 3 celle*/
  36.         if(campo[nx][ny]!='o')          /*controllo che i giocatori non siano ripetuti sulla stessa cella*/      
  37.             j++;
  38.         campo[nx][ny]=giocator2;
  39.     }
  40.  
  41.     for(i=0; i<6; i++){
  42.         for(j=0; j<6; j++)
  43.             printf("%c",campo[i][j]);
  44.         printf("\n");
  45.     }
  46.   system("PAUSE");     
  47.   return 0;
  48. }


:asd:  raga il codice mi genera 4 giocatori'x' e 4 giocatori'o' ora non sò come far scegliere la squadra per battere la palla....essendo il problema:
In modo casuale si sceglie la squadra che batte la palla.
La palla viene lanciata nel campo avversario e cade in una cella scelta
casualmente
.Se la palla cade in una cella vuota il punteggio viene dato alla
squadra attaccante. La squadra ricevente provvede a battere la palla.
. Se la palla cade in una cella con un giocatore la palla viene lanciata
nel campo avversario
· La palla lanciata ha il 40% di cadere sulla rete e il 20% di andare fuori. In
questo caso il punto va alla squadra avversaria a quella che batte.
Vince la squadra che per prima arriva a 20.


herman
PM Quote