Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
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.
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...???
dp per generare una posizione dei giocatori e posizionarli sul campo potrei fare:
for(i=1;i<=4; i++)/*genera 4 posizioni a caso sul campo*/
{
nx=rand()%6;
ny=3+rand()%3-6;/*sposto sulle ultime 3 colonne*/
campo[nx][ny]=giocator1;
if(campo[nx][ny]==' ')/*controllo cella libera*/
nx=rand()%6;
ny=rand()%3;/*sposto sulle prime 3 colonne*/
campo[nx][ny]=giocator2;
}
for(i=0; i<6; i++)
{for(j=0; j<6; j++)
printf("%c",campo[i][j]);
printf("\n");
}
system("PAUSE");
return0;
}
facendo così riesco a non farle mischiare...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'.
for(i=1;i<=4; i++)/*genera 4 posizioni a caso sul campo*/
{
nx=rand()%6;
ny=3+rand()%3-6;/*sposto sulle ultime 3 celle*/
campo[nx][ny]=giocator1;
nx=rand()%6;
ny=rand()%2;/*sposto sulle prime 3 celle*/
campo[nx][ny]=giocator2;
}
for(i=0; i<6; i++)
{for(j=0; j<6; j++)
printf("%c",campo[i][j]);
printf("\n");
}
system("PAUSE");
return0;
}
ho messo la rete...raga per favore sapete dirmi perchè mi genera dei giocatori mancanti???...non mi vengono idee su come mettere un controllo sulle celle
if(campo[nx][ny]!='x')/*controllo che i giocatori non siano ripetuti sulla stessa cella*/
i++;
campo[nx][ny]=giocator1;
}
j=1;
while(j<=squadrao){
nx=rand()%6;
ny=rand()%2;/*sposto sulle prime 3 celle*/
if(campo[nx][ny]!='o')/*controllo che i giocatori non siano ripetuti sulla stessa cella*/
j++;
campo[nx][ny]=giocator2;
}
for(i=0; i<6; i++){
for(j=0; j<6; j++)
printf("%c",campo[i][j]);
printf("\n");
}
system("PAUSE");
return0;
}
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.