silvervale01 (Ex-Member)
Rookie
Messaggi: 24
Iscritto: 29/09/2007
|
Ciao!!!
Aiuto!!!sto facendo un gioco degli scacchi e mi sono bloccato!
Non riesco a dire a VB6 di dichiarare un'area con le matrici;
esempio:quando clicco sulll'alfiere (imagebox) devono illuminarsi le celle in diagonale libere e quando il giocatore clicca su una delle celle illuminate il pezzo si deve muovere in quell'area...(come scacchiera ho usato una immagine quindi i pezzi sono immagini dentro una immagine...)
help
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Devi chiarire meglio come e' fatto il tuo programma ... non hai dato i dettagli sufficienti ...
Non si e' capito neanche cosa non riesci a fare ...
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
come scacchiera hai usato un immagine singola?
secondo me la cosa migliore da fare per creare una scacchiera è di creare un' array di 64 elementi di image o picture ed associare ad ogni image un elemento nella matrice. ad esempio se clicchi su image(62) allora dovrai fare le operazione sull'elemento della matrice(8;7) contando che l'elemento 62 sarebbe il penultimo dell'ultima riga.
non so semi sono spiegato.
Ultima modifica effettuata da Overflow il 27/01/2008 alle 17:03 |
|
silvervale01 (Ex-Member)
Rookie
Messaggi: 24
Iscritto: 29/09/2007
|
aspetta... ecco i mio progetto...
http://www.mediafire.com/?csuyxqj5wzl
x overflow:tu intendi mettere in un array le 32 immagini dei pezzi e le altre 32 immagini vuote per le caselle vuote ma poi basta che gli dico alla matrice:
Codice sorgente - presumibilmente Plain Text |
è così?
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
la cosa è abbastanza complessa...
io ho in parte analizzato la situazione ed ho trovato questa soluzioe:
io ho pensato di inserire 64 image. e creare un type con le caratteristiche delle celle e poi associare ad ogni image cliccata l'elemento della matrice corrispondente.
Codice sorgente - presumibilmente VB.NET |
Private Type casella val As Boolean 'cella piena o vuota pedina As Integer 'pedina che devi muovere alfiere, pedone ecc... bianco As Boolean 'se la pedina è bianca o nera End Type 'valori da attribuire alla variabile pedina Const torre = 1 Const alf = 2 Const cavallo = 3 Const re = 4 Const regina = 5 Const pedone = 6 Dim cella(8, 8) As casella Private Sub Form_Load() 'va inizializzata la matrice da (0,0) a (0,7) con val = true, bianco = true e 'pedina con le ripsettive pedine torre cavallo ecc... e poi le da (1,0) a (1,7) come prima solo che pedina sara sempre pedone e poi lo stesso per il nero End Sub Private Sub Image1_Click(Index As Integer) Select Case Index Case 0 'esegui operazioni per la casella 1 cioè cella(0,0) torre bianco Case 1 'esegui operazioni per la casella 2 cioè cella(0,1) cavallo bianco 'ecc... End Select End Sub
|
io l'ho pensata in questo modo...
Ultima modifica effettuata da Overflow il 27/01/2008 alle 17:36 |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Non solo hai usato una sola picture ma hai visualizzato la scacchiera con tutti i pezzi a partire da una singola immagine ... in questo modo non potrai visualizzare i pezzi.
Puoi usare una sola picture (e poi operare con il metodo PaintPicture), ma devi avere le bitmap dei singoli pezzi e anche quelli del quadrato bianco e del quadrato nero.
In questo modo puoi visualizzare il pezzo che ti serve nel posto che ti serve.
|
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
Postato originariamente da Overflow:
la cosa è abbastanza complessa...
io ho in parte analizzato la situazione ed ho trovato questa soluzioe:
io ho pensato di inserire 64 image. e creare un type con le caratteristiche delle celle e poi associare ad ogni image cliccata l'elemento della matrice corrispondente.
Codice sorgente - presumibilmente VB.NET |
Private Type casella val As Boolean 'cella piena o vuota pedina As Integer 'pedina che devi muovere alfiere, pedone ecc... bianco As Boolean 'se la pedina è bianca o nera End Type 'valori da attribuire alla variabile pedina const vuoto =0 Const torre = 1 Const alf = 2 Const cavallo = 3 Const re = 4 Const regina = 5 Const pedone = 6 Dim cella(8, 8) As casella Private Sub Form_Load() 'va inizializzata la matrice da (0,0) a (0,7) con val = true, bianco = true e 'pedina con le ripsettive pedine torre cavallo ecc... e poi le da (1,0) a (1,7) come prima solo che pedina sara sempre pedone e poi lo stesso per il nero End Sub Private Sub Image1_Click(Index As Integer) Select Case Index Case 0 'esegui operazioni per la casella 1 cioè cella(0,0) torre bianco Case 1 'esegui operazioni per la casella 2 cioè cella(0,1) cavallo bianco 'ecc... End Select End Sub
|
io l'ho pensata in questo modo... |
scusate non volevo quotare, volevo solo modificare. Ultima modifica effettuata da Overflow il 27/01/2008 alle 17:47 |
|
silvervale01 (Ex-Member)
Rookie
Messaggi: 24
Iscritto: 29/09/2007
|
grazie,
avrei solo un dubbio:
per inizializzare la matrice nel form load usando i valori type devo dirgli ad esmpio x la prima riga:
Codice sorgente - presumibilmente Plain Text |
val matrice(0,0)=true
bianco matrice(0,0)=true
|
ma poi x dirgli la pedina devo scrivere:
Codice sorgente - presumibilmente Plain Text |
? |
|
Overflow (Normal User)
Expert
Messaggi: 334
Iscritto: 11/01/2008
|
no.. viene cosi.
Codice sorgente - presumibilmente VB.NET |
Private Sub Form_Load() 'prima cella torre bianco cella(0, 0).val = True cella(0, 0).bianco = True cella(0, 0).pedina = torre 'secondacella 'cavallo bianco cella(0, 1).val = True cella(0, 1).bianco = True cella(0, 1).pedina = cavallo End Sub
|
questo è solo per la prima e seconda cella cioè la torre e il cavallo, questo va fatto per tutte le pedine però, re, alfiere, regina e pedoni cambiando sempre però i valori della matrice.
Poi in ogni cella gli metti l'immagine della pedina corrispondente...
ciao.
Ultima modifica effettuata da Overflow il 27/01/2008 alle 19:15 |
|