Anteprima
Vedrai una selezione di 3 pagine su 7
Tiro al Bersaglio Pag. 1 Tiro al Bersaglio Pag. 2
Anteprima di 3 pagg. su 7.
Scarica il documento per vederlo tutto.
Tiro al Bersaglio Pag. 6
1 su 7
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Function.c

#include "header.h"

//****************************gioco***********************************************

**************************************************

//Dati di input:il vettore a[7][5] che rappresenta il bersaglio,la variabile struttura Tiratore[]

relativa

// alla struct TIRATORE,il vettore Vet che rappresenta le vittorie di una partita di 50 turni,nx

che è il

//numero di righe del bersaglio e my che è il numero di colonne del bersaglio.

//Dati di output:la visualizzazione del bersaglio con i relativi punteggi posizionali,la posizione

in

//righe-colonne di dove è stato colpito il bersaglio da ogni singolo giocatore,il punteggio

posizione fatto

//da ogni giocatore,il punteggio massimo fatto alla fine di ogni turno,il numero del turno

corrente e

//il numero del giocatore/i che hanno vinto.

//Caratteristiche:questa procedura ci consente di svolgere tutte le parti principali che

riguardano il gioco:vedere il bersaglio

//facendo uso di un ciclo annidato for ,generare 5 posizioni casuali sulle caselle con la function

rand, assegnare il punteggio

//posizionale ai giocatori,vedere quale è stato il punteggio massimo all'interno di ogni

turno,stabilire la vittoria del

//giocatore/i utilizzando principalmente un ciclo for che considera la variabile Giocatore come

indice e altri relativi cicli

// che consentono il corretto funzionamento del programma.

//*******************************************************************************

***************************************************

void gioco(char a[][5],struct TIRATORE Tiratore[], int Vet[],int nx,int my)

{ int turno;//questa è la variabile turno che useremo in un ciclo for da cui si uscirà se il

turno è maggiore di 50

int i,j;//contatori rispettivamente relativi al numero di righe e colonne del bersaglio

int Pos_max=0; //questa variabile che viene inizializzata a zero ci serve per assegnare il

valore del punteggio posizione ai giocatori

int Punteggio_max=0;

int Giocatore=0; // la variabile Giocatore è un indice

for(turno=0;turno<50&&Punteggio_max<100;turno++)//facciamo un ciclo che deve

terminare o dopo 50 turni o dopo che uno dei giocatori fa 100 punti

{ printf("\n!!!PICCOLA ANNOTAZIONE!!!= Quando il punteggio posizione vale o

1 o 2, \nil punteggio assegnato al giocatore e' sempre 1.\nPer il resto il punteggio posizione

coincide con il punteggio assegnato.");

printf("\n\n");

//questo ciclo for serve per visualizzare il bersaglio di 7 righe x 5 colonne

for(i=0;i<7;i++)

{ for(j=0;j<5;j++)

{ printf("[_%c_]",a[i][j]);

}

printf("\n");

}

//Stabilisco il valore "posizionale" dei punteggi dei turni

//(N.B. Le righe vanno lette dal numero 0 al numero 6 e le colonne vanno lette dal

numero 0 al numero 4)

//con il relativo punteggio di posizione

for(Giocatore=0;Giocatore<5;Giocatore++)

{ Tiratore[Giocatore].Punteggio_Posizione=0;//inizializziamo a zero la

variabile Punteggio_posizione interna alla struct

nx=rand()%7;//sulle righe vengono generate posizioni casuali da 0 a 6

my=rand()%5;//sulle colonne vengono generate posizioni casuali da 0 a 4

Tiratore[Giocatore].Punteggio_Posizione=a[nx][my]-48;// dato che il

vettore a è di tipo char e contiene caratteri numerici ricaviamo l'equivalente intero sottraendo

il valore del char a 48 perchè in C i caratteri sono trattati mediante il codice ASCII

//48 è il codice ASCII dello zero

printf("\nIl %d-simo giocatore ha colpito la casella nella posizione=[%d]

[%d]\n",Giocatore,nx,my);

printf("Il giocatore numero %d ha fatto questo punteggio posizione:

%d\n", Giocatore,Tiratore[Giocatore].Punteggio_Posizione);

}

//Finiti i turni, stabiliamo il vincitore assegnando

//il valore del "colore" al giocatore che ha buttato la freccetta

//piu vicina al centro,quindi la variabile Pos_max dovrà coincidere con la

variabile Punteggio_Posizione relativa a Tiratore[]

Pos_max=0;

for(Giocatore=0;Giocatore<5;Giocatore++)

{ if(Tiratore[Giocatore].Punteggio_Posizione>Pos_max)

Pos_max=Tiratore[Giocatore].Punteggio_Posizione; //Non conservo

la posizione max perche' piu' persone potrebbero fare lo stesso punteggio

}

//Assegno il punto o assegniamo i punti ai giocatori vincitori

for(Giocatore=0;Giocatore<5;Giocatore++)

{ if(Tiratore[Giocatore].Punteggio_Posizione==Pos_max)

{

if(Pos_max>=1&&Pos_max<=2)Tiratore[Giocatore].Punteggio+=1;//come abbiamo già

detto le celle che hanno il valore posizionale di 1 e 2 possono dare solo 1 punto al giocatore che

vince il turno else Tiratore[Giocatore].Punteggio+=Pos_max;//per il resto il valore

posizionale coincide con il punteggio assegnato: valore posizionale=3 ->punteggio=3;valore

posizionale=6 ->punteggio=6

}

}

//Vedo chi e' il punteggio totale massimo fatto durante ogni turno

Punteggio_max=-1;

for(Giocatore=0;Giocatore<5;Giocatore++)

{ if(Tiratore[Giocatore].Punteggio>Punteggio_max)

Punteggio_max=Tiratore[Giocatore].Punteggio;

}

printf("\nIL PUNTEGGIO MASSIMO FATTO FINO AD ORA E':

%d\n\nSIAMO NEL TURNO NUMERO :%d", Punteggio_max, turno);

printf("\n\n*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");

}

//La posizione del vettore corrisponde al numero di giocatore.

//il contenuto della posizione del vettore corrisponderà alla vittoria.

//esempio: Giocatore 0 ha vinto? Se ha vet[0]=1, significa che ha vinto, altrimenti

Vet[0]=0, ha perso

for(Giocatore=0;Giocatore<5;Giocatore++)

if(Tiratore[Giocatore].Punteggio==Punteggio_max) Vet[Giocatore]=1;

}

//****************************Inizializza*******************************************

****************************************

//Dati di input:la variabile struttura Tiratore[] relativa alla struct TIRATORE.

//Dati di output:pone uguale a zero le variabili Giocatore e punteggio interne alla struct

TIRATORE.

//Caratteristiche:questa è la procedura che inizializza a zero il punteggio dei giocatori e il

numero dei giocatori

//facendo uso di un contatore i che va da 0 a 4 visto che 5 è il numero totale dei giocatori.

//*******************************************************************************

******************************************

void Inizializza(struct TIRATORE Tiratore[])

{ int i;

for(i=0;i<N_GIOCATORI;i++)

{ Tiratore[i].Giocatore=i;

Tiratore[i].Punteggio=0;

}

}

//**************************************regole************************************

**********

//Dati di input:nessuno.

//Dati di output:restituisce la visualizzazione delle regole del gioco.

//Caratteristiche:questa è la procedura che contiene le regole del gioco e il

//bersaglio con i punteggi(1 oppure 3 oppure 6)relativi alla casella alla quale appartiene

//un determinato colore(arancione oppure verde oppure rosso).

//*******************************************************************************

***********

void regole()

{ printf("\nLe regole sono queste:\n");

printf("\n* Giocano 5 giocatori ");

printf("\n* Vince chi fa 100 punti");

printf("\n* Il gioco termina dopo 50 turni");

printf("\n* I punteggi sono questi:");

printf("\n [6 punti per la cella rossa]");

printf("\n [3 punti per le celle verdi]");

printf("\n [1 punto per le celle arancioni]\n");

printf("\n");

printf("ECCO IL BERSAGLIO CON I PUNTI E I COLORI:\n");

printf("+------------------------------------------------------------------------+\n");

printf("| 1_arancione || 1_arancione || 1_arancione || 1_arancione || 1_arancione|");

printf("\n+------------------------------------------------------------------------+\n");

printf("| 1_arancione || 1_arancione || 1_arancione || 1_arancione || 1_arancione|");

printf("\n+------------------------------------------------------------------------+\n");

printf("| 1_arancione || 3_verde || 3_verde || 3_verde || 1_arancione|");

printf("\n+------------------------------------------------------------------------+\n");

printf("| 1_arancione || 3_verde || 6_rosso || 3_verde || 1_arancione|");

printf("\n+------------------------------------------------------------------------+\n");

printf("| 1_arancione || 3_verde || 3_verde || 3_verde || 1_arancione|");

printf("\n+------------------------------------------------------------------------+\n");

printf("| 1_arancione || 1_arancione || 1_arancione || 1_arancione || 1_arancione|");

printf("\n+------------------------------------------------------------------------+\n");

printf("| 1_arancione || 1_arancione || 1_arancione || 1_arancione || 1_arancione|");

printf("\n+------------------------------------------------------------------------+\n");

}

MAIN.c

/* Nome del progetto:Tiro al bersaglio

Descrizione:Si vuole sviluppare un programma per la simulazione di un gioco di tiro a

bersaglio.

Si suppone di avere 5 giocatori che si alternano nel tirare una freccetta verso un

bersaglio. Il bersaglio è formato da celle di diverso colore come nella seguente

figura. Ad ogni colore è associato un punteggio: 6 rosso, 3 verde e 1 arancione. A ogni

turno un giocatore tira la sua freccetta che cade in una certa cella in modo casuale. Dopo il

turno di tutti i giocatori il punteggio viene assegnato solo al giocatore che ha la

freccetta più vicina al centro. In caso di parità si assegna lo stesso punteggio a tutti i

giocatori. Il gioco termina o quando uno dei giocatori è arrivato a 100 o quando sono

terminati 50 turni.

*/

#include "header.h"

void main()

{ int nx,my,i;//nx=numero di righe del bersaglio, my=numero di colonne del bersaglio, i=

contatore

struct TIRATORE Tiratore[N_GIOCATORI]; //questa è la dichiarazione del vettore

struttura Tiratore[N_GIOCATORI] che,relativo alla struct TIRATORE,è un array che

contiene la struct di 5 elementi visto che i giocatori che partecipano al gioco sono 5

char a[7][5]={{'1','1','1','1','1'},{'1','2','2','2','1'},{'1','3','3','3','1'},{'1','3','6','3','1'},

{'1','3','3','3','1'},{'1','2','2','2','1'},{'1','1','1','1','1'}};//questo è l'array che permette all'utente

di conoscere il valore posizionale delle celle

int Vet[5]={0,0,0,0,0}; //questo è il vettore che indica le vittorie di una partita di 50 turni

e che viene inizializzato a zer

Dettagli
Publisher
A.A. 2015-2016
7 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher GG4core di informazioni apprese con la frequenza delle lezioni di Programmazione I e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Napoli - Parthenope o del prof Giunta Giulio.