PDA

Visualizza la versione completa : [C]Simulazione gioco cani e gatti


tonyleone
19-02-2015, 19:16
Salve, volevo mostrarvi il mio problema , praticamente mi hanno assegnato un progetto per l'esame di progr 1 dove mi viene chiesto di simulare un gioco tra cani e gatti,inizialmente vengono predisposti in modo random i 4 animali sulla scacchiera , successivamente viene calcolata la distanza tra i cani e il gatto , a quel punto il cane si muove nella direzione del gatto piu vicino , il gioco finisce o quando i cani raggiungono i gatti oppure quando si raggiungono un certo numero di passi , il mio problema principale sta nella stesura del codice , in quanto ho giÓ costruito una mappa e scritto tutti i procedimenti ma non avendo avuto la possibilitÓ di seguire il corso ho questi problemi sul codice , vi posto uno "pseudo codice " spero che qualcuno possa aiutarm , la scandeza Ŕ per il 21 :dh˛:


#include<stdio.h>//header file che consente le varie operazioni di input e output
#include<stdlib.h>//header file che consente l'uso di rand, srand e di RAND_MAX
#include<time.h>//fornisce un accesso standardizzato alle funzioni di acquisizione e manipolazione del tempo.
#include<math.h>
#define n 2;




typedef struct animali{
int nx;
int ny;

}animali ;
animali_cani[2];
animali_gatti[2];





void inserisci_animali(char scacchiera[8][8])





int main()
{



/*
Dichiarazione delle variabili.
*/
int i,nx,ny; /* Contatore per i cicli while.*/
int posRiga, posCol; /* Variabili utilizzate per riempire la scacchiera in modo pseudo-random*/
char gatti[2];
char cani[2];
srand(time(NULL)); /* Funzione che inizializza lo pseudo-random. Se non ci fosse, ad ogni avvio del programma
la posizione dei pedoni e della regina, sarebbe sempre la stessa.*/
char colonne[8] = {'a','b','c','d','e','f','g','h'}; /*Dichiarazione e inizializzazione della stringa utilizzata
per definire le colonne della scacchiera.*/
char scacchiera[][8] =
{{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'},
{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'},
{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'},
{'b','n','b','n','b','n','b','n'},
{'n','b','n','b','n','b','n','b'}}; /* Dichiarazione e inizializzazione della scacchiera.*/
char s;

void inserisci_cane(char scacchiera[8][8],animali_cani[n],animali_gatti[n]);
int i,n ;

srand((unsigned int)time(0));
for (i=0;i<n;i++){
animali_cani[i].nx=rand%8;
animali_cani[i].ny=rand%8 }

for (i=0;i<n;i++) {
animali_gatti[i].nx=rand%8;
animali_gatti[i].ny=rand%8;

scacchiera[animali_cani[nx][ny]='C'
scacchiera[animali_gatti[nx][ny]='G';
}
printf("Cani inseriti nella posizione %d,%d\n",animali_cani[nx][ny])
printf("Cani inseriti nella posizione %d,%d\n",animali_gatti[nx][ny])

}

int distanza(animali_gatti[2],animali_cani[2],char scacchera[8][8]);
int d1,d2,d3,d4,origine1,origine2,;

printf ("I Cani si trovano in posizione">>>ricavare le coordinate dalla funzione inserisce cane
origine1=animali_cani[nx][ny];
printf ("i gatti si trovano in posizione">> ricavare coordinate gatti dalla funzione inserisci cane
origine1=animali_gatti[nx][ny]
distanzaCane1Gatto1 = formula con pitagora;
distanzaCane1Gatto2 = formula con pitagora;
distanzaCane2Gatto1 = formula con pitagora;
distanzaCane2Gatto2 = formula con pitagora;
if (d1< d2) AND (d1 < d3) AND ( d1 < d4) variabileDiScelta = 1;
else if( d2 < d1) || (d2 < d3) || ( d2 < d4) variabileDiScelta = 2;
else if( d3 < d1) || (d3 < d2) || ( d3 < d4) variabileDiScelta = 3;
else if(d4 < d1) || (d4 < d2) || (d4 < d3) variabileDiScelta = 4;
switch(variabileDiScelta)
case 1: ---PRIMO CANE VA INCONTRO AL PRIMO GATTO--- endcase;
case 2: ---PRIMO CANE VA INCONTRO AL SECONDO GATTO--- endcase;
case 3: ---SECONDO CANE VA INCONTRO AL PRIMO GATTO--- endcase;
case 4: ---SECONDO CANE VA INCONTRO AL SECONDO GATTO--- endcase;
endswitch






void visualizza_scaccheria(char schacchiera[][8])
{
int i,j,n;
for(i=0;i<n;++i)
{
for(j=0;j<n;++j)
printf("%c",scacchiera[i][j]);
printf("\n");
}
}

linoma
19-02-2015, 20:34
Fai un ciclo for per ogni cane dentro il quale con un altro ciclo foir controlli la distanza dal gatto se quest'ultima Ŕ nulla incrementi i cani giunti sino al gatto altrimenti avanzi versoil gatto.



for(cane=0;cane < cani;cane++){
for(gatto=0;gatto<gatti;gatto++){
if distanza==0
else
muovi
}
}

vbextreme
20-02-2015, 06:35
http://forum.ubuntu-it.org/viewtopic.php?f=33&t=593992&start=40

Loading