Anteprima
Vedrai una selezione di 5 pagine su 20
Progetti Programmazione Corsa Auto, Agenda Elettronica Pag. 1 Progetti Programmazione Corsa Auto, Agenda Elettronica Pag. 2
Anteprima di 5 pagg. su 20.
Scarica il documento per vederlo tutto.
Progetti Programmazione Corsa Auto, Agenda Elettronica Pag. 6
Anteprima di 5 pagg. su 20.
Scarica il documento per vederlo tutto.
Progetti Programmazione Corsa Auto, Agenda Elettronica Pag. 11
Anteprima di 5 pagg. su 20.
Scarica il documento per vederlo tutto.
Progetti Programmazione Corsa Auto, Agenda Elettronica Pag. 16
1 su 20
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

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

Dettagli
Publisher
A.A. 2015-2016
20 pagine
1 download
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 Laboratorio 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.