Probleme code image

gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 avril 2007 - 13 avril 2007 à 11:27
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 13 avril 2007 à 23:31
http://www.vbfrance.com/auteurdetail.aspx?ID=1029518
J'ai un problème avec du code (partie en rouge), il reste faux quoi qu'il arrive.

Do
n = n + 1
Loop Until (Picture1(Index + n).Picture Picture1(Index).Picture) Or n 3

(dans le cas d un mini othello)
comment fait on pour vérifier q' une image correspond ou non?

13 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
13 avril 2007 à 11:32
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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 ...
0
gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 avril 2007
13 avril 2007 à 11:43
Peut etre mais je sais toujours pa comment faire !
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 avril 2007 à 11:53
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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 !
0
gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 avril 2007
13 avril 2007 à 12:11
le probleme c'est que je peux poser un pion blanc comme un pion noir et donc c'est plus difficile pour le chemin de fichier
pour comparer pixel par pixel je vois pas comnent faire meme avec http://www.vbfrance.com/codes/API-TEST-EGALITE-ENTRE-DEUX-IMAGES-RAPIDE_18131.aspx
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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.

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 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 ?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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)....
0
gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 avril 2007
13 avril 2007 à 17:00
le probleme c'est que c'un projet a rendre pour lundi!
0
gazghul33 Messages postés 18 Date d'inscription lundi 9 avril 2007 Statut Membre Dernière intervention 22 avril 2007
13 avril 2007 à 17:16
Je vais continuer dans la série gros nul
pour créer et visualiser un tableau on fait comment?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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...

MPi
0
Rejoignez-nous