Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - creazione scacchiera esagonale e inserimento valori all'interno di ogni campo
Forum - C/C++ - creazione scacchiera esagonale e inserimento valori all'interno di ogni campo - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
frasck (Normal User)
Newbie


Messaggi: 8
Iscritto: 01/03/2009

Segnala al moderatore
Postato alle 13:15
Lunedė, 02/03/2009
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:

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 10:09
Martedė, 03/03/2009
Testo quotato

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

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 10:16
Martedė, 03/03/2009
Testo quotato

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.

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 10:24
Martedė, 03/03/2009
Testo quotato


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

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 10:29
Martedė, 03/03/2009
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)

PM Quote
Avatar
frasck (Normal User)
Newbie


Messaggi: 8
Iscritto: 01/03/2009

Segnala al moderatore
Postato alle 15:42
Martedė, 03/03/2009
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 ....:(

PM Quote
Avatar
gigisoft (Member)
Guru


Messaggi: 696
Iscritto: 11/10/2008

Segnala al moderatore
Postato alle 15:54
Martedė, 03/03/2009
Testo quotato

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:

Codice sorgente - presumibilmente C/C++

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



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

Luigi

Ultima modifica effettuata da gigisoft il 03/03/2009 alle 15:56
PM Quote
Avatar
gioser (Normal User)
Pro


Messaggi: 111
Iscritto: 03/10/2008

Segnala al moderatore
Postato alle 9:17
Mercoledė, 04/03/2009
Secondo me theprogrammer ha ragione...

e' sufficiente una matrice quadrata per rappresentare la scacchiera

00 01 02 03
10 11 12 13
20 21 22 23
30 31 32 33

con
00 come vertice in alto
30 vertice a sinistra
03 vertice a destra
33 vertice in basso

le regole per le caselle adiacenti sono molto semplici:

data una cella di coordinate ij, le celle adiacenti sono:
i-1, j
i+1, j
i, j-1
i, j+1
i-1, j-1
i+1, j+1

provate a pensarci ... :)

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo