Traitement conditionnel sur une couleur

Résolu
CCJ Messages postés 565 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 30 avril 2008 - 11 sept. 2004 à 19:45
CCJ Messages postés 565 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 30 avril 2008 - 11 sept. 2004 à 22:15
bonjour!
Je suis entrain de faire un jeu aser basic(des pettit carré!)dont les petit carré (des labels)se deplace avec:
if keycode = vbkeyup then
playeur1.top = playeur1.top + 120
end if
voila mais comment faire pour que mes petits bonhomes(carré)ne puisse pas aller dans toutes les zones d'une certaine couleur?
voila merci de vos reponses
voila
VirusMan :-p

5 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 sept. 2004 à 21:51
X,y c'est les coordonnées du point à tester
0,0 c'est le point en haut à gauche
Me.ScaleWidth-1, Me.ScaleHeight-1 c'est le point en bas à droite

je pense qu'il faut tester tous les nouveaux points où va se retrouver le petit carré.

si depy > 0 --> déplacement vers le bas
Ancienneposition = playeur1.top + playeur1.Height - 1
NouvellePosition = AnciennePosition + depy
for y = AnciennePosition to NouvellePosition
for x=Playeur1.Left to Playeur1.Left + Playeur1.Width - 1
couleur = GetPixel(Me.hdc,x,y)
if couleur = interdite then --> pas de déplacement
next x
next y

si depy < 0 --> déplacement vers le haut
Ancienneposition = playeur1.top
NouvellePosition = AnciennePosition + depy
for y = AnciennePosition to NouvellePosition step - 1
for x=Playeur1.Left to Playeur1.Left + Playeur1.Width - 1
couleur = GetPixel(Me.hdc,x,y)
if couleur = interdite then --> pas de déplacement
next x
next y

si depx > 0 --> déplacement vers la droite
Ancienneposition = playeur1.Left + playeur1.Width - 1
NouvellePosition = AnciennePosition + depx
for x = AnciennePosition to NouvellePosition
for y=Playeur1.Top to Playeur1.Top + Playeur1.Height - 1
couleur = GetPixel(Me.hdc,x,y)
if couleur = interdite then --> pas de déplacement
next x
next y

si depx < 0 --> déplacement vers la gauche
Ancienneposition = playeur1.Left
NouvellePosition = AnciennePosition + depx
for x = AnciennePosition to NouvellePosition step - 1
for y=Playeur1.Top to Playeur1.Top + Playeur1.Height - 1
couleur = GetPixel(Me.hdc,x,y)
if couleur = interdite then --> pas de déplacement
next x
next y

c'est seulement une idée, j'ai rien testé.
3
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 sept. 2004 à 20:43
avec GetPixel

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

- - - - - - - - - - - - - - - - - - - - - -

couleur = GetPixel(Me.hdc, x, y)
0
CCJ Messages postés 565 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 30 avril 2008 1
11 sept. 2004 à 20:50
j'y connai rien a getpixel:
-a quoi correspond x et y
-coment l'utiliser pour empecher mon carre dans un zone d'une certaine couleur
si kelkun repond a ces question ca serrai vraiment sympas merci
VirusMan :-p
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
11 sept. 2004 à 21:55
inversion des deux next pour les deux derniers déplacements droite et gauche

si depx < 0 --> déplacement vers la gauche
Ancienneposition = playeur1.Left
NouvellePosition = AnciennePosition + depx
for x = AnciennePosition to NouvellePosition step - 1
for y=Playeur1.Top to Playeur1.Top + Playeur1.Height - 1
couleur = GetPixel(Me.hdc,x,y)
if couleur = interdite then --> pas de déplacement

next y
next x
0

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

Posez votre question
CCJ Messages postés 565 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 30 avril 2008 1
11 sept. 2004 à 22:15
tu veut dire que a chaque deplacement j'enregistre la posistion initiale et la direction puis si mon getpixel me done une bonne couleur je change rien sinon je fais demi-tour.ca me semble une bonne idee
merci!
VirusMan :-p
0
Rejoignez-nous