vuoi
o PayPal
tutte le volte che vuoi
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 9
int get_index_User()
{ char mia_password[MAX_STRLEN];
int i;
printf("Inserire Password:\t");
scanf("%s",mia_password);
for(i=0; i<NUM_USERS; i++)
{ if(m_user[i].used)
{ if(!strcmp(mia_password,m_user[i].password))
{ return i;
}
}
}
return -1;
}
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 10
int main()
{ srand(time(NULL)); // richiamo a time e srand
char cosa_fare;
bool bExit = false;
int i=0;
crea_agenda(); // richiamo a crea_agenda
while(bExit == false)
{ printf("***********************************************\n");
printf("* Benvenuto/a nella proria agenda elettronica *\n");
printf("***********************************************\n");
printf("Digitare la propria scelta\n");
printf("'V' per Visualizzare un appuntamento\n");
printf("'I' per Inserire un appuntamento\n");
printf("'D' per Disdire un appuntamento\n");
printf("'S' per Uscire dall'agenda elettronica\n");
printf("'T' per vedere un Test\n");
printf("Inserire la propria scelta:\t");
cosa_fare= getchar();//Uso la funzione getchar per inserire i caratteri per la scelta dell'operazione da
eseguire
fflush(stdin);
system("cls");
switch (toupper(cosa_fare)) //Utilizzo il costrutto di controllo if per gestire i vari casi di inseriemnto da
parte dell' utente
{ case 'V':
visualizza(); // richiamo a visualizza
break;
case 'I': aggiorna(); // richiamo a aggiorna
break;
case 'D':
disdire(); // richiamo a disdire
break;
case 'S': printf("Ciao e' stato un piacere esserti stato utile\n");
bExit = true;
break;
case 'T':
test(); //richiamo a test
break;
}
system("pause");
}
return 0;
}
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 11
/* Gioco auto
Si vuole sviluppare un programma per la simulazione di un gioco che prevede
un’auto su un percorso che deve evitare degli ostacoli.
Si suppone di aver un percorso come in figura dove sul fondo è presente un’auto
(rossa) che può andare a destra o sinistra.
L’auto deve evitare automaticamente gli ostacoli che incontra durante il percorso. Gli
ostacoli vengono creati uno alla volta ad ogni passo in una posizione casuale sulla prima
riga. L’oggetto si muove di una o due posizioni casuali. Ad ogni turno l’auto viene
spostata automaticamente a destra o a sinistra nel caso un ostacolo si trovi nel suo
intorno (zona verde in figura).
La partita finisce o quando l’auto si scontra con un oggetto o quando sono passati 100
passi. */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define LATOMIN 20
#define MAX_PASSI 100
#define MAX_SPAZIO 50
void creazione_campo(int,int);
void credits();
void rules();
void manuale(int , register char);
void automatico(int );
void crea_ostacoli(int,int);
void crea_matrice(int,int);
int scelta();
struct
{ char S='*';
char E=' ';
int colonna,passi=0,vite=1;
char spazio[MAX_SPAZIO][MAX_SPAZIO];
}gioco;
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 12
int main()
{ int riga,na_1,na_2,logical=1,i,j;
register char direzione;
int dim1,dim2;
// definisco la matrice di gioco
do
{ printf("Inserisci la lunghezza del campo di gioco (min %d) e (max %d):\t",LATOMIN,MAX_SPAZIO);
scanf("%d",&dim1);
printf("Inserisci la larghezza del campo da gioco (min %d) e (max %d):\t",LATOMIN,MAX_SPAZIO);
scanf("%d",&dim2);
}
while(dim1 < LATOMIN && dim1 > MAX_SPAZIO && dim2 < LATOMIN && dim2 >
MAX_SPAZIO );
crea_matrice(dim1,dim2);
system("cls");
credits();
system("pause");
system("cls");
rules();
printf("\n");
system("pause");
system("cls");
Start:
srand(time(NULL));
riga=dim1-2;
gioco.colonna=2+rand()%dim2-2; // posizione causale della macchina
gioco.spazio[riga][gioco.colonna]='V';
na_1=1+rand()%dim1-1;
na_2=1+rand()%dim2-10;
gioco.spazio[na_1][na_2]='X';
int flag=scelta();
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 13
while (logical==1)
{ if((gioco.passi == MAX_PASSI)&&(gioco.vite == 1)) // Controllo se i passi sono ugalu a
quelli programmati da fare prima di superare il gioco tenedo conto dello stato della vita
{
printf("\a\n\t----------------------------------------------------\n");
printf(" !!! PLAYER WIN THE GAME !!! \n");
printf("\n\t----------------------------------------------------\n");
logical = 0;
system("PAUSE");
}
//Controllo sul numero delle vite e dei passi. Se pari a zero e i passi sono minori di quelli programmati
la partita termina
if((gioco.passi <= MAX_PASSI)&&(gioco.vite==0))
{ printf("La tua auto e' distrutta!\n\n");
logical=0;
}//Controllo sul numero delle vite. Se pari a zero la partita termina
system("cls");
j=1+rand()%dim2;
gioco.spazio[1][j]='O';
creazione_campo(dim1,dim2); //richiamo la funzione crea_spazio
if(flag==1)
{ manuale(riga,direzione); // richiamo la funzione manuale
}
else
{ automatico(riga); // richiamo la funzione demo
}
//Questa porzione di codice ha il compito di generare degli ostacoli che si sposteranno lungo il percorso
ad ogni iterazione
crea_ostacoli(dim1,dim2);
system("cls");
}
}
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 14
void creazione_campo(int dim1, int dim2) // stampa della posizione attuale degli elementi nella matrice
{ register int i,j;
printf("\n");
for (i=0; i<dim1; i++)
{ for (j=0; j<dim2; j++)
{ if (gioco.spazio[i][j]==gioco.S || gioco.spazio[i][j]=='O' || gioco.spazio[i][j]=='X' || gioco.spazio[i]
[j]=='V')
{ printf("%c ",gioco.spazio[i][j]);
}
else
{ printf(" ");
}
}
printf("\n");
}
}
// Le funzioni che seguono sono delle semplici void per la stampa di informazioni sul gioco e su come si gioca
void credits()
{ printf(" -------------------------------\n");
printf("| BENVENUTO NEL GIOCO CAR SPEED |\n");
printf(" -------------------------------\n\n");
}
void rules()
{ printf("*******************\n");
printf("* REGOLE DI GIOCO *\n");
printf("*******************\n\n");
printf("* Il gioco consiste nel far muovere l'auto (indentificata da: V )\n");
printf("* e farla arrivare alla fine del percorso (ovvero dopo 100 passi)\n");
printf("* evitanto gli ostacoli presenti! Se invece l'auto colpisce un ostacolo\n");
printf("* finisce la partita!\n\n");
printf(" *************\n");
printf(" * MOVIMENTI *\n");
printf(" *************\n\n");
printf("E' possibile muovere l'auto manualmente solo nelle direzioni destra -> e sinistra <-: \n\n");
printf("A per far muovere l'auto a sinistra\n\n");
printf("D per far muovere l'auto a destra!\n\n");
printf("Oppure e' possibile avviare una demo del gioco\n\n");
}
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 15
void manuale(int riga, register char direzione)
{ direzione=getchar();
//Switch-case che determina il movimento della navicella nel campo dei meteoriti. All'interno di ogni case
ci sono dei controlli
fflush(stdin);
switch (direzione)
{ case 'a':
case 'A': gioco.passi+=1;
gioco.spazio[riga][gioco.colonna]=gioco.E;
gioco.colonna--;
if (gioco.spazio[riga][gioco.colonna]==gioco.S)
{ printf("Non puoi spostarti in questa direzione!\n");
system("pause");
gioco.colonna++;
}
gioco.spazio[riga][gioco.colonna]='V';
break;
case 'd':
case 'D': gioco.passi+=1;
gioco.spazio[riga][gioco.colonna]=gioco.E;
gioco.colonna++;
if (gioco.spazio[riga][gioco.colonna]==gioco.S)
{ printf("Non puoi spostarti in questa direzione!\n");
gioco.colonna--;
system("pause");
} gioco.spazio[riga][gioco.colonna]='V';
break;
default: // qualsiasi altro tasto ASCII viene considerato come un passo
gioco.passi+=1;
}
}
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 16
void automatico(int riga)
{ int decisione=rand()%2; // destra o sinistra
int decisione2=1+rand()%2; // uno o due posizioni casuali
if(gioco.spazio[riga-4][gioco.colonna]=='O' || gioco.spazio[riga-3][gioco.colonna]=='O' &&
gioco.spazio[riga][gioco.colonna]=='V') // riga-4 e riga -3 è la posizione con cui vado a confrontare la
posizione dell' ostacolo
{ if(decisione==0 && decisione2==1) // sinistra 1 posizione
{ gioco.passi+=1;
gioco.spazio[riga][gioco.colonna]=gioco.E;
gioco.colonna--;
if (gioco.spazio[riga][gioco.colonna]==gioco.S)
{ gioco.colonna+2;
}
gioco.spazio[riga][gioco.colonna]='V';
}
if(decisione==0 && decisione2==2) // sinistra due posizioni
{ gioco.passi+=1;
gioco.spazio[riga][gioco.colonna]=gioco.E;
gioco.colonna-1;
if (gioco.spazio[riga][gioco.colonna]==gioco.S)
{ gioco.colonna+2;
}
else
{ gioco.colonna-2;
}
gioco.spazio[riga][gioco.colonna]='V';
}
if(decisione==1 && decisione2==1) // destra 1 posizione
{ gioco.passi+=1;
gioco.spazio[riga][gioco.colonna]=gioco.E;
gioco.colonna++;
if (gioco.spazio[riga][gioco.colonna]==gioco.S)
{ gioco.colonna-2;
}
gioco.spazio[riga][gioco.colonna]='V';
}
if(decisione==1 && decisione2==2) // destra due posizioni
{ gioco.passi+=1;
gioco.spazio[riga][gioco.colonna]=gioco.E;
gioco.colonna+1;
if (gioco.spazio[riga][gioco.colonna]==gioco.S)
{ gioco.colonna-2;
Appunti di Giacomo Gargiulo per info: g iacomo.gargiulo.made4Core@gmail.com Pag 17
}
else
{ gioco.colonna+2;
}
gioco.spazio[riga][gioco.colonna]='V';
}
}
else
{ if(decisione==0 && decisione2==1) // sinistra 1 posizione
{ gioco.passi+=1;
gioco.spazio[riga][gioco.colonna