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++ - progetto  gioco del tennis
Forum - C/C++ - progetto gioco del tennis

Avatar
Leonhearth (Normal User)
Newbie


Messaggi: 11
Iscritto: 06/07/2010

Segnala al moderatore
Postato alle 12:57
Martedì, 06/07/2010
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.
http://img130.imageshack.us/img130/1893/tenniscampo.png
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.

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #define COLONNE    5
  6. #define RIGHE      4
  7. void visualizza_mat(char b[RIGHE][COLONNE],int n,int m);
  8. struct giocatore {
  9.        char nome[10];
  10.        char cognome[10];
  11.                                 };
  12.     typedef struct giocatore gt;
  13.        void main()
  14.        {
  15.        
  16.            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;
  17.  
  18.            gt gioc ;
  19. char campo2[RIGHE][COLONNE]={
  20.     {'B','B','B','B','B'},
  21.         {'B','G',' ','G','B'},
  22.         {'B','A',' ','A','B'},
  23.         {'B','G',' ','G','B'}};
  24.            printf("Benvenuto nel programma di simulazione del gioco del tennis vuoi giocare?\n");
  25.                    visualizza_mat(campo2,RIGHE,COLONNE);
  26.            printf("\n-- Inserisci il tuo nome -- \n");
  27.            scanf("%s",gioc.nome);
  28.                    printf("-- Inserisci il tuo cognome -- \n");
  29.            scanf("%s",gioc.cognome);
  30.                    srand(time(NULL));
  31.                            perc_respinte=(n_lanci*80)/100;
  32.                             perc_respinte2=(500*80)/100;
  33. printf(">> IL GIOCO PUO' INIZIARE <<\n\n");
  34.  
  35.  
  36. for(i=0;i<100;i++){
  37.         totT=totT+tennista;
  38.         totS=totS+simulatore;
  39.         tennista=0;
  40.         simulatore=0;
  41.  for(j=0;j<500;j++)     {                                                       //INIZIO FOR
  42.          char  campo2[RIGHE][COLONNE]={
  43.     {'B','B','B','B','B'},
  44.         {'B','G',' ','G','B'},
  45.         {'B','A',' ','A','B'},
  46.         {'B','G',' ','G','B'}};
  47.                                              
  48.          palla=1+rand()%10;
  49.          do{                                                                    //INIZIO REPEAT UNTIL
  50.         r=rand()%3;
  51.                 c=rand()%4;
  52.          }                                                                          //FINE REPEAT UNTIL
  53.          while ((c == 2) && (r == 1 || r == 2 || r == 3));
  54.        
  55.                   fflush(stdin);
  56.                   campo2[r][c]='X';
  57.                  
  58.  
  59.                   if((r==2 && c ==1) || (r==2 && c==3))
  60.                           tennista++;
  61.                   else if((r==1 && c==1) || (r==1 && c==3) || (r==3 && c==1) || (r==3 && c==3)){
  62.                    
  63.                           if(palla<3)
  64.                                   tennista++;
  65.                           else
  66.                                   simulatore++;
  67.                                  }
  68.                                        
  69.                          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))                    
  70.                                          tennista++;
  71.                                    }
  72.                                   printf("%dTennista:%d\n",i,tennista);
  73.                                   if(tennista>perc_respinte2)
  74.                                           vittorie++;
  75.                                   else
  76.                                           sconfitte++;
  77.                                                                         }               //FINE FOR
  78. printf("\n-- Il giocatore ha totalizzato %d punti --\n",totT);
  79. printf("\n-- Il simulatore h+a totalizzato %d punti --\n",totS);
  80. printf("\n-- Le partite vinte sono: %d quelle perse invece sono: %d --\n",vittorie,sconfitte);
  81.  
  82. 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);
  83.  if(totT>perc_respinte)
  84.          printf("\n-- Hai vinto tu giocatore!! --\n");
  85.  else
  86.          printf("\n-- Mi dispiace hai perso, ha vinto il simulatore --\n");
  87.  
  88. }
  89.  
  90.  
  91. void visualizza_mat(char b[RIGHE][COLONNE],int n,int m)
  92. {
  93.         int i,j;
  94.         printf("\n");
  95.         printf("ECCO IL CAMPO DI TENNIS: \n");
  96.         for(i=0;i<RIGHE;i++)
  97.         {      
  98.                 for(j=0;j<COLONNE;j++)
  99.                         printf("  %c",b[i][j]);
  100.                 printf("\n");
  101.         }
  102. }



in pratica mi vince sempre il giocatore e mai il simulatore ecco il problema principale :\

Ultima modifica effettuata da Leonhearth il 06/07/2010 alle 13:07
PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 13:03
Martedì, 06/07/2010
ringrazia che HeDo non sia il mod di questa sezione :rotfl:

EDIT: Adesso va meglio :D

Ultima modifica effettuata da TheKaneB il 06/07/2010 alle 14:13
PM Quote