Oppure

Loading
02/03/09 8:55
theprogrammer
Importerebbe ... perche' se e' un gioco conosciuto, esiste sicuramente uno standard ...
aaa
02/03/09 12:15
frasck
ma che importa lo standard,prima ho scritto la regola per giocare,a me serve un modo per creare la scacchiera e principalmente inserire la pedina all'interno alternativamente ...tutto qua!!!:asd:
aaa
03/03/09 9:09
gigisoft
Postato originariamente da frasck:

ma che importa lo standard,prima ho scritto la regola per giocare,a me serve un modo per creare la scacchiera e principalmente inserire la pedina all'interno alternativamente ...tutto qua!!!:asd:


Beh... in effetti e' vero, non ha molta importanza, comunque se ho capito bene e' lo stesso modo in cui venivano disposte le palline nel videogame "Puzzle Bobble", mi sono spesso chiesto come venisse rappresentato all'interno.
Io penso comunque, poiche' la scacchiera e' fissa e di pochi elementi, che ti convenga rappresentarla semplicemente come un array e creare manualmente la corrispondenza "Elemento - Coordinate" inserendo in ogni elemento 6 puntatori alle caselle adiacenti.

Luigi
aaa
03/03/09 9:16
theprogrammer
Postato originariamente da gigisoft:
Beh... in effetti e' vero, non ha molta importanza


E allora diciamo che NON mi sono spiegato ...

Se si trova un gioco con una scacchiera SIMILE a questa, si puo' cercare di capire COME sono rappresentate le coordinate di QUEL gioco e usare la STESSA rappresentazione in questa ... non mi pareva una cosa complessa da comprendere ...

In ogni caso, penso che il miglior modo sia quello di usare in memoria un semplice "vettore" e numerare le celle dall'alto in basso e da sinistra a destra con un valore intero che parta da 0 e arrivi al massimo-1 di celle. Sapendo quante celle ci sono per ogni riga, diventa semplice per una funzione a cui si passa l'indice, determinare l'effettiva cella da trattare.
aaa
03/03/09 9:24
gigisoft
In ogni caso, penso che il miglior modo sia quello di usare in memoria un semplice "vettore" e numerare le celle dall'alto in basso e da sinistra a destra con un valore intero che parta da 0 e arrivi al massimo-1 di celle. Sapendo quante celle ci sono per ogni riga, diventa semplice per una funzione a cui si passa l'indice, determinare l'effettiva cella da trattare.


in generale hai ragione, ma nel caso specifico, in cui la scacchiera e' fissa e di piccole dimensioni, secondo me non conviene inserire tanti calcoli per individuare le caselle (per non parlare delle adiacenze) per cui quella della corrispondenza manuale e dei puntatori mi sembra comunque la soluzione piu' indicata.

Luigi
aaa
03/03/09 9:29
theprogrammer
La corrispondenza non la farei con calcoli complessi ma semplicemente con un paio di semplici tabelle precaricate con le coordinate x e y.

Ad esempio

int scacchiera[MAXCELLE];
int posx[MAXCELLE], posy[MAXCELLE];

in cui scacchiera rappresenta il suo contenuto e posx, posy le coordinate dell'elemento passato come indice (0..MAXCELLE-1)
aaa
03/03/09 14:42
frasck
Il problema è che la scacchiera non puo essere una semplice matrice con coordinate i,j,percheè ogni casella della scacchiera non è un quadrato ma un esagono...nn so se si riesce a veder nel codice che ho postato prima...il miio problema è quello ....:(
aaa
03/03/09 14:54
gigisoft
Postato originariamente da theprogrammer:

La corrispondenza non la farei con calcoli complessi ma semplicemente con un paio di semplici tabelle precaricate con le coordinate x e y.

Ad esempio

int scacchiera[MAXCELLE];
int posx[MAXCELLE], posy[MAXCELLE];

in cui scacchiera rappresenta il suo contenuto e posx, posy le coordinate dell'elemento passato come indice (0..MAXCELLE-1)


Beh... questo comunque rende difficile il problema delle adiacenze, io proponevo la rappresentazione delle caselle tramite una struttura che contenesse:

struct Casella{
 int x, y; // coordinate dove la casella va disegnata
 Casella *c[6]; // caselle adiacenti 
 /* altri eventuali campi che servono per il gioco */
}


mi sembra adatto al problema, e neanche troppo difficile da gestire.

Luigi
Ultima modifica effettuata da gigisoft 03/03/09 14:56
aaa