Oppure

Loading
06/07/10 10:57
Leonhearth
Testo esercizio:
testo:
Si vuole sviluppare un programma per la simulazione del gioco del tennis.
Supponiamo di avere un giocatore che gioca contro un simulatore. Il simulatore
lancia la palla che deve essere respinta dal giocatore.
Il giocatore (rettangolo rosso) viene collocato in una mappa regolare di dimensioni
come in figura. Il giocatore ha a disposizione una racchetta (nero in figura). Il
simulatore fa un punto se il giocatore non riesce a respingere la palla altrimenti se il
ricevitore colpisce la palla il punto va al giocatore.
img130.imageshack.us/img130/1893/…
Il gioco procede in questo modo:
· Il simulatore lancia la palla con una certa intensità che è identificata da un
numero casuale da 1 a 10.
· Se la palla cade nella cella arancione questa viene respinta dal battitore che
fa un punto.
· Se la palla cade in una cella gialla il punto va al battitore se l’intensità del
tiro è minore di 3 altrimenti il punto va al simulatore.
· Se la palla ricade in una zona azzurra il punto va al giocatore.
· La palla non può essere mai lanciata sul giocatore.
Simulare 100 volte la gara ognuna composta da 500 lanci. Il giocatore vince se
respinge almeno l’80% dei lanci. Stampare la statistica delle vittorie.
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.
Effettuare almeno 5 test, visualizzando lo schema come presentato in figura.

Io ho già buttato giù qualche riga di codice ma nn essendo mlt esperto penso di aver combinato un mezzo pasticcio.. qualcuno un pò più esperto potrebbe aiutarmi con questo problema? E' importante grazie.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define COLONNE    5
#define RIGHE      4
void visualizza_mat(char b[RIGHE][COLONNE],int n,int m);
struct giocatore {
       char nome[10];
       char cognome[10];
				};
    typedef struct giocatore gt;
       void main()
       {
       
           int totT=0,totS=0,j,r,i,c,simulatore=0,tennista=0,palla,n_lanci=50000,vittorie=0,sconfitte=0,perc_respinte=0,perc_respinte2=0;

           gt gioc ;
char campo2[RIGHE][COLONNE]={
    {'B','B','B','B','B'},
	{'B','G',' ','G','B'},
	{'B','A',' ','A','B'},
	{'B','G',' ','G','B'}};
           printf("Benvenuto nel programma di simulazione del gioco del tennis vuoi giocare?\n");
		   visualizza_mat(campo2,RIGHE,COLONNE);
           printf("\n-- Inserisci il tuo nome -- \n");
           scanf("%s",gioc.nome);
		   printf("-- Inserisci il tuo cognome -- \n");
           scanf("%s",gioc.cognome);
    		   srand(time(NULL));
			   perc_respinte=(n_lanci*80)/100;
			    perc_respinte2=(500*80)/100;
printf(">> IL GIOCO PUO' INIZIARE <<\n\n");


for(i=0;i<100;i++){
	totT=totT+tennista;
	totS=totS+simulatore;
	tennista=0; 
	simulatore=0;
 for(j=0;j<500;j++)	{							//INIZIO FOR
	 char  campo2[RIGHE][COLONNE]={
    {'B','B','B','B','B'},
	{'B','G',' ','G','B'},
	{'B','A',' ','A','B'},
	{'B','G',' ','G','B'}};
	                                     
	 palla=1+rand()%10;
	 do{									//INIZIO REPEAT UNTIL
        r=rand()%3;
		c=rand()%4;
	 }									    //FINE REPEAT UNTIL
	 while ((c == 2) && (r == 1 || r == 2 || r == 3));
	
       		  fflush(stdin);
		  campo2[r][c]='X'; 
		 

		  if((r==2 && c ==1) || (r==2 && c==3))
			  tennista++;
		  else if((r==1 && c==1) || (r==1 && c==3) || (r==3 && c==1) || (r==3 && c==3)){
		   
			  if(palla<3)
				  tennista++;
			  else
				  simulatore++;
				 }
		   			
			 if(((r==0) && (c==0 || c==1 || c==2 || c==3 || c==4)) || (r==1 && c==0) || (r==1 && c==4) || (r==2 && c==0) || (r==2 && c==4) || (r==3 && c==0) || (r==3 && c==4))			
					 tennista++;
				   }
				  printf("%dTennista:%d\n",i,tennista);
				  if(tennista>perc_respinte2)
					  vittorie++;
				  else
					  sconfitte++;
	   								}		//FINE FOR
printf("\n-- Il giocatore ha totalizzato %d punti --\n",totT);
printf("\n-- Il simulatore h+a totalizzato %d punti --\n",totS);
printf("\n-- Le partite vinte sono: %d quelle perse invece sono: %d --\n",vittorie,sconfitte);

printf("\nPer vincere il giocatore deve totalizzare un numero di punti maggiore della \npercentuale di lanci respinti che risulta essere: %d, di conseguenza :\n",perc_respinte);
 if(totT>perc_respinte)
	 printf("\n-- Hai vinto tu giocatore!! --\n");
 else
	 printf("\n-- Mi dispiace hai perso, ha vinto il simulatore --\n");

}


void visualizza_mat(char b[RIGHE][COLONNE],int n,int m)
{
	int i,j;
	printf("\n");
	printf("ECCO IL CAMPO DI TENNIS: \n");
	for(i=0;i<RIGHE;i++)
	{	
		for(j=0;j<COLONNE;j++)
			printf("  %c",b[i][j]);
		printf("\n");
	}
}


in pratica mi vince sempre il giocatore e mai il simulatore ecco il problema principale :\
Ultima modifica effettuata da Leonhearth 06/07/10 11:07
aaa
06/07/10 11:03
TheKaneB
ringrazia che HeDo non sia il mod di questa sezione :rotfl:

EDIT: Adesso va meglio :D
Ultima modifica effettuata da TheKaneB 06/07/10 12:13
aaa