Oppure

Loading
27/01/08 18:12
Overflow
no.. viene cosi.
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 27/01/08 18:15
aaa
27/01/08 19:09
silvervale01
ok
ma.. mi rimane ancora un dubbio:
per ogni image click devo fare 63 case (64 con lo 0) e ho 64 image quindi devo fare 4096 (64*64)case con 64 select case in tutto... :d
però mi sfugge una cosa: la variabile index del select case è la matrice di controlli delle immagini no? quindi nel case 0 avrò l'index=0 cioè la prima immagine ma quali operazioni dovrei eseguire?... e poi quando sposto il pedone ad esempio gli dovrò dire di mettere vuota la cella in cui è ma come faccio ad individuarla?
Ultima modifica effettuata da silvervale01 27/01/08 19:10
aaa
27/01/08 19:32
Overflow
no.. tu avrai solamente 64 case per i valori di index poiche ad ogni valore di index associerai un elemento della matrice... le operazioniche andrai a fare sono:
nell'eveneto click se index = 0 (cioè hai cliccato sulla prima image che chiamamo casella per comodità;) verifichi se:
1)è vuota e quindi esci.
2)se non è vuota andrai a vedere la pedina che c'è su quella casella(image), a seconda della pedina che c'è dovrai evidenziare le caselle dove quella pedina puo andare percio se la pedina è una torre per esempio dovrai fare due cicli: uno che itererà su gli elementi dellamatrice 'orizzontale' e uno 'verticale' che si fermano nel caso trovi una cella piena e dello stesso colore della torre, cioè andrai a verificare se val=true e bianco=true(nel caso la torre sia bianca)fermati alla casella prima, altrimenti se val=true e bianco=false fermati su quella casella, altrimenti uscirà dal ciclo poichè finiscono le caselle disponibili..
questi sono i passi + elementari ì, diciamo base poi bisogna rifinire un sacco di altre cose.

Inoltre nel type va inserito un altro campo: stato che avra valore 1 quando viene cliccata la casella con la pedina,invece avra valore 0 nel caso viene cliccato altrove. questa variabile servirà quando deve essere spostata la pedina.
Quindi avrai:
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
    stato as integer
End Type 
'poi se vuoi inserire altre costanti per la variabile stato fai tu


E' un progetto molto complesso, bisogna avere un bel po di esperienza nel campo della programm. e soprattutto logca...

spero di essere stato chiaro...
ti auguro buona fortuna..
Ultima modifica effettuata da Overflow 27/01/08 19:45
aaa
28/01/08 13:24
silvervale01
grazie tante ho capito...
solo un ultima domanda: che codice dovrò usare per associare ogni valore di index ad un valore della matrice?
xkè questo mi sembra troppo scontato e nn penso funzioni...
matrice(6,6)=index(54)
Ultima modifica effettuata da silvervale01 28/01/08 13:28
aaa
28/01/08 14:27
Overflow
no l'associazione viene fatta nel select case dell'image_click.
quando si fa
select case
case 0
'opererai sulla matrice cella(0,0)
case 1
'opererai sulla matrice cella(0,1) ecc..
end select
l'associazione è questa. in questo modo quando clicchi su image opererai su un dato elemento della matrice cella.
non puoi usare quella sintassi che hai scritto.
l'associazione si crea appunto quando vai a lavorare su un dato elemento della matrice quando clicchi su una icona.
poi ho pensato un altra cosa.. per la sistemazione delle immagini nelle image, avrei pensato di aggiungere un timer ed effettuare ad ogni intervallo l'inserimento di un immagine... vabe comunque questa è una cosa che ho pensato stanotte!! e potrebbe confonderti solamente... fai come credi + opportuno..
ciao.
aaa
28/01/08 14:39
Overflow
ti faccio un esempio semplice però bisogna fare una piccola modifica sempre nel famoso type:
private type casella 
'oltre ai valori di prima aggiungi
pathimage as string
end type

private sub image1_click(index as intger)
select case index
case 0
if cella(0,0).val=true and cella(0,0).bianco=true then 'controlla se la casella 0 è piena se si verifica se il colore della pedina è bianco. ora controlla che pedina c'è con un altro select
select case cella(0,0).pedina
case torre
'è la torre per esempio
colora le celle possibili per il movimento della torre
for i=0 to 7 'solo per il movimento orizzontale poi va fatto un altro ciclo per il movimento verticale
if cella(i,0).val=false then
cella(i,0).pathimage = "pathdellimmaginechesegnalacasellaperilpossibilemovimentodellapedina'
end if
next i
case cavallo
'lo tesso per qui e il resto dei case
case re
case regina
case alfiere
end select
end if
case 1
'ripeti la prodcedura fatta con case 1 solo che cambi i valori della matrice. magari crei una funzione che faccia questo tutte le volte passadoli solo ogni volta parametri diversi a seconda del case
end select
end sub

poi in un timer carichi le immagini delle image da cella(..,..).pathimage

image(..)=loadpicture(cella(..,..).pathimage)

spero sia tutto chiaro poi se hai problemi posta pure...
ci saranno forse dei problemi perche il codice l'ho scritto direttamente qui, no su visual basic non l'ho controllato

ciao.
Ultima modifica effettuata da Overflow 28/01/08 14:47
aaa