gazghul33
Messages postés18Date d'inscriptionlundi 9 avril 2007StatutMembreDernière intervention22 avril 2007
-
13 avril 2007 à 11:27
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
13 avril 2007 à 23:31
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 13 avril 2007 à 11:37
Quand même et avant qu'on ne recommence :
Ce que tu trouves dans la propriété Picture d'une PictureBox contenant une image n'est pas un handle mais une adresse en mémoire .
Tu ne peux comparer 2 images en comparant les 2 adresses qui leur ont été attribuées. Même si tes images sont créées par duplication, ces 2 adresses seront toujours différentes.
Ton expression aboutira donc systématiquement à une valeur FALSE ...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 13 avril 2007 à 12:01
Bon !
On va y aller par clichés :
- cliché 1 : si tes deux images sont définies par un chemin de fichier : c'est ces chemins qu'il faut comparer. Tu as toujours la possibilité de mettre ce chemin dans la propriété tag de l'image, en même temps que tu la charges
- cliché 2 : tes images sont faites par duplication : le problème de la nécessité d'une vérification disparait de soi (puisque tu sais par construction qu'elles sont identiques)
- cliché 3 : tu n'es ni dans le cas du cliché 1 ni dans celui du cliché 2 : il est alors inévitable de faire (dans une double-boucle) pixel par pixel, une comparaison. Si, dans cette double boucle, un seul pixel est différent du pixel correspondant de l'autre image, tes images ne sont pas identiques
- cliché final : il n'existe aucune autre méthode de comparaison !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 13 avril 2007 à 12:48
il va te falloir, je pense, modifier quelques peu l'architecture de ton projet...
le mieux etant encore d'avoir un tableau en mémoire qui stocke l'etat de ton plateau....
Dim Plateau(1 To 7, 1 To 7) As Byte
et de tester ainsi tes cases :
If Plateau(4, 2) = 1 Then
en utilisant par exemple comme codification pour chaque case :
0 => case vide
1 => case occupée par un pion noir
2 => case occupée par un pion blanc...
c'est plus simple, plus sur, et plus rapide que d'effectuer des tests sur les images.
pour dessiner ton plateau, par la suite, il suffira de parcourir le tableau en x et en y pour récupérer l'etat de chacune de tes cases.
gazghul33
Messages postés18Date d'inscriptionlundi 9 avril 2007StatutMembreDernière intervention22 avril 2007 13 avril 2007 à 16:46
Ton truc a l'air de tenir la route mais le probleme reste toujours présent...
comment faire sachant que pour le othello je place mon pion ou je veux ou quasiment... de pouvoir tester les cases?
Même pour la création du plateau je comprend pas tout.
désolé je suis un très jeune novice
en gros comment réaliser un mini othello de 4*4 cases ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 13 avril 2007 à 16:58
Bonjour;
Oublie pour l'instant Othello et :
1) fait un projet avec 1 seul pion et relève ses coordonnées, à chaque déplacement, dans une variable xx et une variable yy
puis exerce-toi tout simplement à retrouver (par msgbox) la valeur de ces 2 variables
2) toujours avec un seul pion : en lieu et place de 2 variables : utilise un Tableau (vois celà dans ton aide en ligne)
et à retrouver l'abscisse et l'ordonnée de ton pion
3) kif kif, mais cette fois-ci avec plusieurs pions et (pour ton tableau) autant de lignes à 2 colonnes qu'il y a de pions
Il te faut travailler un peu (pas vraiment beaucoup)....
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 13 avril 2007 à 18:52
Je ne crois pas que la vocation de ce forum soit d'enseigner ces notions de base !
Voilà toutefois un exemple (lance, analyse et comprends) de création, d'écriture et de lecture d'un tableau d'une seule colonne :
Private Sub Command1_Click()
'on déclare ici un tableau toto d'une seule colonne
Dim toto(3) As Integer
For i = 0 To 2
toto(i) = i
Next
MsgBox "on va maintenant lire ce que contient le tableau"
For i = 0 To 2
MsgBox "valeur de la ligne " & i & " : " & toto(i)
Next
MsgBox "ON VA MAINTENANT AUGMENTER DE 10 LA 2ME LIGNE DU TABLEAU"
toto(1) = toto(1) + 10
For i = 0 To 2
MsgBox "valeur de la ligne " & i & " : " & toto(i)
Next
End Sub
pour créer u_n tableau titi à 2 colonnes et 5 lignes, j'aurais écrit :
Dim titi(4,1)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 13 avril 2007 à 23:31
Tu peux aussi utiliser la propriété TAG de tes picturebox pour y inscrire une valeur de ton choix.
Disons qu'un pion blanc est joué. Tu peux donc y inscrire "Blanc" comme tag
Lorsque tu feras ta vérification d'alignement, tu peux vérifier si le TAG des picturebox est "Blanc" ou "Rouge"
Peut-être est-ce moins compliqué que les tableaux à 2 dimensions ?
L'idée d'un tableau est tout de même excellente dans ce genre de programme...