yvesdudu
Messages postés48Date d'inscriptionjeudi 16 août 2007StatutMembreDernière intervention 3 juin 2018
-
6 nov. 2009 à 01:16
Cpcdos
Messages postés425Date d'inscriptionsamedi 11 juillet 2009StatutMembreDernière intervention28 octobre 2016
-
4 juil. 2011 à 13:32
Bonjour à tous
Je voudrais vous soumettre un bug incompréhensible qui se produit dans le programme que je suis en train de mettre au point à savoir:
C'est un jeu de bandit manchot en 3d et dans ma sub de rendu de direct3d , je fait un test de couleur pour savoir sur quelle case s'arrete la roue ( j'utilise pour cela l'API Windows GETPIXEL....).
Et donc je veux qu'en fonction de la couleur , la variable gain change de valeur.
Quand je lance le programme il arrive que de temps en temps la variable gain reste à 0 alors que la couleur est bien testée ( car je l'affiche à l'écran pour les tests).J'ai vérifié au moins 30 fois mon code et il n'y a pas d'erreur et de plus ,ce defaut se produit que sur la roue du centre alors qu'il y en a trois , pourquoi ? et pourquoi de manière aléatoire , car s'il y avait une erreur dans le code , le bug apparaitré chaque fois .
bien sur l'API GETPIXEL est bien déclarée en début de module
Ainsi que toutes les variables utilisées (long pour la couleur et Integer pour la variable gain).
Voici un extrait de mon code dans la sub rendu3D
couleur=getpixel(form1.hdc,x,y) ' x et y étant les coordonnées du point à tester.
if couleur=&hff00ff then gain=1
if couleur=&hffff00 then gain=2
etc
J'ai fait les tests 20 fois et au 21e , le bug apparait mais il peut aussi apparaitre au bout de 5 ,8 ou 15 tests.
Je devient fou de ne pas comprendre alors si quelqu'un peut m'aider , j'en serais très reconnaissant.
Encore merci et cordiales salutations
yvesdudu
Messages postés48Date d'inscriptionjeudi 16 août 2007StatutMembreDernière intervention 3 juin 2018 4 juil. 2011 à 09:12
Bonjour,
A vrai dire , la conception de ce jeu étant déjà ancienne , j'ai du trouver la solution moi mème à l'époque mais je ne me souviens plus quelle était ma boulette.
Toujours est il , voici la déclaration de l'API utilisée.
Merci pour l'attention portée à mon programme.
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, _
ByVal X As Long, ByVal Y As Long) As Long
pixel = GetPixel( {objet} .hdc, Int(x), Int(y))
'On récupère le rouge :
R = Int(pixel Mod 256)
'Le vert :
v = Int((pixel - R) / 256 Mod 256)
'Et le bleu
B = Int((pixel - R) / 256 / 256)
Comme ça on récupère la couleur R , V , B sur un pixel indiqué dans les coordonnées X , Y
après tu fais
rem pour le vert foncé
if r = 17 then
if v = 89 then
if b = 38then
{....}
end if
end if
end if
ps : pour savoir la couleur correspondante au rvb , ouvre Paint , et va dans "modifier les couleur" un truc comme ça et tu doit avoir des couleurs étalées au quelle tu peux choisir la couleur , choisis la et regarde en dessous il y a le rvb