Page 1 of 9

prob murs

Unread postPosted: 30 Oct 2006, 19:27
by univscien
Voila; le but du " " "programme" " " et de faire bouger un groupe de 4 pxl dans un labyrinte, mais le problème, c'est que, mon groupe de pxl travérsse et efface le mur (1pxl de largeurs, (c'est un dessin fait avec "Pen")) quand il passe dessu.

Code: Select all


:ClrDraw
:RecallPic 1
:4-A
:62-B
:5-C
:61-D
:Repeat K=105
:getKey-K
:Pt-Off(A,B)
:Pt-Off(C,B)
:Pt-Off(A,D)
:Pt-Off(C,D)
:If K=26
:Then
:C+2-C:A+2-A
:End
:If K=24
:Then
:C-2-C:A-2-A
:End
:If K=25
:Then
:D+2-D:B+2-B
:End
:If K=34
:Then
:D-2-D:B-2-B
:End
:Pt-On(A,B)
:Pt-On(C,B)
:Pt-On(A,D)
:Pt-On(C,D)
:End

Aidez moi plz :#ouin#:
Comment on fait pour que les pxl ne traversssent pas le mur?
Merci d'avance... :#love#:

Re: prob murs

Unread postPosted: 31 Oct 2006, 07:50
by M@D_Doc
Pour cela, il faut que ton bonhomme reconnaisse le mur comme un "pixel noi" : bref, qu'il reconnaisse la couleur du pixel.
une commande :
Code: Select all
PxlTest(

Tu met entre parenthèse les coordonnées Y,x (attention à l'ordre) du point à tester, et ça te sort un résultat sous forme bianire :
1: Pixel noir
0: Pixel blanc
Code: Select all
:PxlTest(Y,X)-A

:If A=0
:"Il peux avancer
:If A=1
:Il ne peut pas avancer

Re: prob murs

Unread postPosted: 31 Oct 2006, 12:10
by univscien
Merci. :;):
Mais il faut que je face çà pour chaques pxl de mon labyrinte ? :o:

Re: prob murs

Unread postPosted: 31 Oct 2006, 13:25
by univscien
J'ais transformé le code précédent en ce code:

:ClrDraw
:RecallPic 1
:4-A
:62-B
:5-C
:61-D
:Repeat K=105
:getKey-K
:Pt-Off(A,B)
:Pt-Off(C,B)
:Pt-Off(A,D)
:Pt-Off(C,D)
:If K=26
:Then
:C+2-C:A+2-A
:End
:If K=24
:Then
:C-2-C:A-2-A
:End
:If K=25
:Then
:D+2-D:B+2-B
:End
:If K=34
:Then
:D-2-D:B-2-B
:End

:pxl-Test(A+2,B)-E
:pxl-Test(A-1,B)-F
:pxl-Test(A,B+1)-G
:pxl-Test(A,B-2)-H
:pxl-Test(C+1,B)-E
:pxl-Test(C-2,B)-F
:pxl-Test(C,B+1)-G
:pxl-Test(C,B-2)-H
:pxl-Test(A+2,D)-E
:pxl-Test(A-1,D)-F
:pxl-Test(A,D+2)-G
:pxl-Test(A,D-1)-H
:pxl-Test(C+1,D)-E
:pxl-Test(C-2,D)-F
:pxl-Test(C,D+2)-G
:pxl-Test(C,D-1)-H
:If E=1
:Then
:A-1-A
:C-1-C
:End
:If F=1
:Then
:A+1-A
:C+1-C
:End
:If G=1
:Then
:B-1-B
:D-1-D
:End
:If H=1
:Then
:B+1-B
:D+1-D
:End

:Pt-On(A,B)
:Pt-On(C,B)
:Pt-On(A,D)
:Pt-On(C,D)
:End


Mais il ya toujours le 4pxl qui traverssent les murs, et parfois ce décalent tous seul de 1pxl vers le bas, toujour en clignotant.
Je comprend pas là... :#wrong#:

Re: prob murs

Unread postPosted: 31 Oct 2006, 13:33
by Lumin0u
il faut pas executer 2 affectations à une meme variable sans rien entre les 2 sinon ça sert à rien ^^ exemple si tu met:

:pxl-Test(A+2,B)-E
:pxl-Test(C+1,B)-E

sans rien mettre qui utiliserait E entre les 2 lignes, la 2eme ligne uniquement sera prise en compte parce qu'elle modifie elle aussi E

Re: prob murs

Unread postPosted: 31 Oct 2006, 13:47
by univscien
Lumin0u wrote:il faut pas executer 2 affectations à une meme variable sans rien entre les 2 sinon ça sert à rien ^^ exemple si tu met:

:pxl-Test(A+2,B)-E
:pxl-Test(C+1,B)-E

sans rien mettre qui utiliserait E entre les 2 lignes, la 2eme ligne uniquement sera prise en compte parce qu'elle modifie elle aussi E


:|: dsl mais je comprend pas l'histoire des 2 lignes.. :#tsss#:

En gros, il faut que je donne que des variables différentes? :#fou2#:

Re: prob murs

Unread postPosted: 31 Oct 2006, 14:01
by Lumin0u
wé xD enfin tu peux stocker les valeurs dans des listes c'est beaucoup plus pratique quand y en a beaucoup (c'est à dire ton cas :s)

Re: prob murs

Unread postPosted: 31 Oct 2006, 16:51
by Potamogale
Ce que tu peut faire c'est ca:

(je te donne pas le code parce que j'ai la flemme, faut que tu apprenne ca aussi, reflechir toi meme en fonction de ton prog)

après le getkey qui definit le mouvement de ton "bloc" mais AVANT sa relocalisation, tu fais une verification sur l'endroit où il est censé aller avec un pxlTest. Si c'est occupé par un mur, tu fais pas la modification sur les coords et tu fais un goto vers le getkey...

C'est peut-être pas tres clair, mais bon, on verra bien ^^

Re: prob murs

Unread postPosted: 31 Oct 2006, 17:27
by univscien
Que d'éxplications... :=): Merci...
Aprés réfléxion, je suis arrivé a ce résultat:



:ClrDraw
:RecallPic 1

:4-A
:61-B

:Repeat K=105
:getKey-K
:Pt-Off(A,B)
:Pt-Off(A+1,B)
:Pt-Off(A,B+1)
:Pt-Off(A+1,B+1)

:If K=26 and not(pxl-Test(A+2,B)) and not(pxl-Test(A+2,B+1))
:Then
:A-1-A

:End
:If K=24 and not(pxl-Test(A-1,B)) and not(pxl-Test(A-1,B+1))
:Then
:A+1-A

:End
:If K=25 and not(pxl-Test(A,B+2)) and not(pxl-Test(A+1,B+2))
:Then
:B-1-B

:End
:If K=34 and not(pxl-Test(A,B-1)) and not(pxl-Test(A+1,B-1))
:Then
:B+1-B

:End
:Pt-Off(A,B)
:Pt-Off(A+1,B)
:Pt-Off(A,B+1)
:Pt-Off(A+1,B+1)
:End

Mais vous pouvez me dire si c'est juste, psk si je le mes sur ma calcullette et que c'est faux... :#mad#: :cask:

Merci... :#coucou#:

Re: prob murs

Unread postPosted: 31 Oct 2006, 22:45
by univscien
Nouveau code:


:ClrDraw
:RecallPic 1

:4-A
:2-B

:Repeat K=105
:getKey-K

:Pxl-Off(B,A)
:Pxl-Off(B,A+1)
:Pxl-Off(B+1,A)
:Pxl-Off(B+1,A+1)

:If K=26and not(pxl-Test(B,A+2)) and not(pxl-Test(B+1,A+2))
:A+1-A

:If K=24 and not(pxl-Test(B,A-1)) and not(pxl-Test(B+1,A-1))
:A-1-A

:If K=25 and not(pxl-Test(B-1,A)) and not(pxl-Test(B-1,A+1))
:B-1-B

:If K=34 and not(pxl-Test(B+2,A)) and not(pxl-Test(B+2,A+1))
:B+1-B

:Pxl-On(B,A)
:Pxl-On(B,A+1)
:Pxl-On(B+1,A)
:Pxl-On(B+1,A+1)

:End

J'avais un probléme de direction et de pxl.
J'utilise maintenant PxlOn()
et non PtOn()
Donc tout va bien, rien ne traversse les murs et tout va dans le bon sens.
:D:
Le seul problème (encore UN... :#mad#: ?)
C'est que mon groupe de 4pxl clignote trés vite et je ne le voit qu'à moitié.
Quelqu'un a une idée pour que je vois les pxl en + foncé?? please?
Merci.
:#zen#: