arghhhh je galere jetez un coup deuil svp.... [Quick basic] - Programmation
Marsh Posté le 05-06-2001 à 19:34:36
djfm a écrit a écrit : for sb=1 to 50 if posy+diry=((x-1)+sb) then touche=1 next sb |
Ben ici je vois que tu compares une variable suivant y avec une variable suivant x... c'est un peu con non ?
Du coup a chaque fois touche=0 parce que l'egalite n'est jamais verifiee, la partie s'arrete et c'est pour ca que tu ne peux toucher qu'une fois la balle (en fait tu la touches jamais... )
Ce qu'il faudrait ecrire c'est :
(on vire la boucle qui sert a rien)
if ((posx+dirx>=x) and (posx+dirx<x+sb)) then touche=1
Marsh Posté le 05-06-2001 à 20:07:16
oui!!!!! ca marche!!!!!! merci!!
Marsh Posté le 05-06-2001 à 19:13:29
je c vraiment pa dou vient le pb, je galere depuis une semaine , svp dites moi ce kil va pas
c un pong en Qbasic, mais on peu ratraper la balle kune fois... pkoi??? je c , donner le prog entier et dire demerdez vous c pas top mais l a je c bvraiment pa koi faire...
screen 12
posx=4
posy=4
dirx=1
diry=1
dirx2=-1
diry2=-1
x=340
y=475
ON KEY(12) GOSUB decalg
on key(13) gosub decald
on key(3) gosub quitter
key(12) on
key(13) on
key(3) on
line(x,y)-((x+50),(y+5)),2,BF
do
circle(posx,posy),8
for pdt=1 to 40000
pdt2=pdt+3.14159256
next pdt
circle(posx,posy),8,0
if posx+dirx=637 or posx+dirx=3 then dirx=(dirx*(-1))
if posy+diry=3 then diry=(diry*(-1))
if posy+diry=475 then gosub enbas
posx=posx+dirx
posy=posy+diry
loop 'until len(inkey$)
decalg:
for k=1 to 20
x=x-1
line(x,y)-((x+50),(y+5)),2,BF
line((x+50),y)-((x+51),(y+5)),0,BF
next k
return
decald:
for k=1 to 20
x=x+1
line(x,y)-((x+50),(y+5)),2,BF
line((x-2),y)-((x-1),(y+5)),0,BF
next k
return
quitter:
end
return
enbas:
for sb=1 to 50
if posy+diry=((x-1)+sb) then touche=1
next sb
if touche=1 then diry=(diry*(-1))
if touche=0 then gosub quitter
touche=0
return
---------------
Do you serve a purpose,Or purposely serve?