06/01/10 12:04
Alby_c84
Ciao a tutti...I need a little help...
sto programmando la battaglia navale in C come compito di fine corso all'uni ma mi sono bloccato perchè mi si incrociano le navi.
In pratica ho dichiarato una struttura struct Ship, generale per ogni nave con campi lenght, x e y (coordinate del punto di partenza della nave) e direction (0= orizz e 1= vert) e un puntatore a tale struttura. Poi ho dichiarato una struttura Player (contenente come campi struct Ship portaerei, struct Ship corazzata ecccc) e due variabili di tipo struct Player. Tutto ciò globale.
Nel main chiamo una funzione a cui passo il puntatore a Ship e l'indirizzo delle variabili Struct Player. nella funzione essendo 8 le navi in gioco alloco memoria per un vettore di struct Ship di 8 elementi e lo riempio creando a caso dei valori di direction, x e y per ogni nave e poi copio ogni elemento del vettore nella relatiova "nave" di ogni giocatore. la funzione rende un puntatore alla prima locazione di memoria allocata. Questo è preso in ingresso da un altra funzione che scorre il vettore e disegna le navi partendo dalle coordinate x y del punto di partenza e stampando verso destra se è orzzontale o verso il basso se è verticale. Sono riuscito a fare in modo che le navi abbiano tutte punti di partenza diversi (che elimina il problema delle navi a "lancette i orologio", ma ogni tanto mi si incrociano!! la cosa più logica sarebbe un contrllo del tipo "se la casella successiva è libera stampa la lettera della nave altrimenti cambia le coordinate di partenza o la direzione...il fatto è che queste sono salvate in un vettore creato in un altra funzione mentre in quella che stampa il vettore viene solo ciclato per ricavarne i dati....scusate se sono stato lungo ma effettivamente è un po complesso il funzionamento del programma...ovviamente è vitato l'uso dei break che non siano quelli obbligatori di un costrutto switch!!!!! Se serve vi posto il codice grazie in anticipo!!!!
sto programmando la battaglia navale in C come compito di fine corso all'uni ma mi sono bloccato perchè mi si incrociano le navi.
In pratica ho dichiarato una struttura struct Ship, generale per ogni nave con campi lenght, x e y (coordinate del punto di partenza della nave) e direction (0= orizz e 1= vert) e un puntatore a tale struttura. Poi ho dichiarato una struttura Player (contenente come campi struct Ship portaerei, struct Ship corazzata ecccc) e due variabili di tipo struct Player. Tutto ciò globale.
Nel main chiamo una funzione a cui passo il puntatore a Ship e l'indirizzo delle variabili Struct Player. nella funzione essendo 8 le navi in gioco alloco memoria per un vettore di struct Ship di 8 elementi e lo riempio creando a caso dei valori di direction, x e y per ogni nave e poi copio ogni elemento del vettore nella relatiova "nave" di ogni giocatore. la funzione rende un puntatore alla prima locazione di memoria allocata. Questo è preso in ingresso da un altra funzione che scorre il vettore e disegna le navi partendo dalle coordinate x y del punto di partenza e stampando verso destra se è orzzontale o verso il basso se è verticale. Sono riuscito a fare in modo che le navi abbiano tutte punti di partenza diversi (che elimina il problema delle navi a "lancette i orologio", ma ogni tanto mi si incrociano!! la cosa più logica sarebbe un contrllo del tipo "se la casella successiva è libera stampa la lettera della nave altrimenti cambia le coordinate di partenza o la direzione...il fatto è che queste sono salvate in un vettore creato in un altra funzione mentre in quella che stampa il vettore viene solo ciclato per ricavarne i dati....scusate se sono stato lungo ma effettivamente è un po complesso il funzionamento del programma...ovviamente è vitato l'uso dei break che non siano quelli obbligatori di un costrutto switch!!!!! Se serve vi posto il codice grazie in anticipo!!!!
aaa