Problème déplacement d'une box

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Problème déplacement d'une box

Message par wolfjeremy »

Salut,

Mon problème est que tout va bien quand je fait un déplacement positif par rapport au axe x et y, mais quand j'esseye de faire un déplacement n'egatif et bien sa ne marche plus :mad:

Voici le code : (pas de média c'est juste des box avec draw :wink: )


InitSprite ()
InitKeyboard ()

x = 10
y = 384

x_pnj = 50
y_pnj = 10

temp=50
temp2=50

OpenScreen (1024, 768, 32, "Test rpg" )



Repeat

FlipBuffers ()

ClearScreen (black)

StartDrawing ( ScreenOutput ())

Box (400, 50, 50, 50, RGB (0, 0, 255))

Box (300, 5, 250, 75, RGB (114, 238, 141))

Box (x_pnj, y_pnj, 50, 50, RGB (0, 0, 255))

Box (600, 618, 50, 50, RGB (0, 0, 255))

Box (512.5, 643, 175, 125, RGB (204, 51, 51))

Box (x, y, 50, 50, RGB (241, 233, 14))
StopDrawing ()

ExamineKeyboard ()

If KeyboardPushed ( #PB_Key_Up )
            y-3
             ;La touche droite du curseur est appuyée
         ElseIf KeyboardPushed ( #PB_Key_Right )
            x+3
             ;La touche bas du curseur est appuyée
         ElseIf KeyboardPushed ( #PB_Key_Down )
            y+3
             ;La touche gauche du curseur est appuyée
         ElseIf KeyboardPushed ( #PB_Key_Left )
            x-3
EndIf

If x_pnj < 240
x_pnj+5

ElseIf x_pnj >= 240 And y_pnj < 115
y_pnj+5

ElseIf y_pnj >= 115 And x_pnj < 400
x_pnj+5

ElseIf x_pnj >= 400
If temp<>0
temp-1
EndIf

EndIf

If temp=0
If x_pnj >= 400 And y_pnj < 450
y_pnj+5

ElseIf y_pnj >= 450 And x_pnj < 600
x_pnj+5

ElseIf x_pnj >= 600 And y_pnj < 557
y_pnj+5

ElseIf y_pnj >= 557
If temp2<>0
temp2-1
EndIf

EndIf
EndIf

If temp2=0

If y_pnj >= 557 And x_pnj > 500
x_pnj-5

EndIf

EndIf

Until KeyboardPushed ( #PB_Key_Escape )


Voila donc tout va bien, sauf au moment où il doit repartir de son dernier arret, je fait donc y_pnj-5 et il decale juste un peu le box alors qu'il devrais aller jusque 500 sur l'axe des y :(

J'espere que quelqu'un pourra m'aider (ce qui est plus que probable).

Merci d'avance pour votre aide.
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

A oui aussi, est-il possible de faire un random avec des chaines de caractéres ?

Merci d'avance pour votre réponse.
Anonyme

Message par Anonyme »

C'est codé comme un cochon :D

Si j'ai bien compris, tu veut déplacer ton carré.
et tu fait un truc du style :

Code : Tout sélectionner

If y_pnj => 557 And x_pnj > 500 
x_pnj-5 
EndIf 
1°er bug : La condition n'est valable que si X > 500 , or , dès que X est plus grand que 500 ausitôt X = X - 5 , donc il est plus petit que 500 est la condition n'est plus valable...

Pour les randoms sur les chaine de caractère, fait le avec le code ascii. :wink:
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Ouai je sais c'est juste des test alors je fait pas attention lol

J'ai beaucoup esiter sur les conditions enfin bon vais revoir sa...

Merci pour le random
Anonyme

Message par Anonyme »

Code : Tout sélectionner

InitSprite () 
InitKeyboard () 

x = 10 
y = 384 

x_pnj = 50 
y_pnj = 10 

temp=50 
temp2=50 

Phase = 0 



OpenScreen (1024, 768, 32, "Test rpg" ) 



Repeat 
FlipBuffers () : ClearScreen (black) : ExamineKeyboard () 

StartDrawing ( ScreenOutput ()) 
 Box (400, 50, 50, 50, RGB (0, 0, 255)) 
  Box (300, 5, 250, 75, RGB (114, 238, 141)) 
   Box (x_pnj, y_pnj, 50, 50, RGB (0, 0, 255)) 
    Box (600, 618, 50, 50, RGB (0, 0, 255)) 
     Box (512.5, 643, 175, 125, RGB (204, 51, 51)) 
      Box (x, y, 50, 50, RGB (241, 233, 14)) 
      DrawText(0,0,Str(x_pnj)+":"+Str(y_pnj))
       StopDrawing () 





If KeyboardPushed ( #PB_Key_Up ) 
            y-3 
             ;La touche droite du curseur est appuyée 
         ElseIf KeyboardPushed ( #PB_Key_Right ) 
            x+3 
             ;La touche bas du curseur est appuyée 
         ElseIf KeyboardPushed ( #PB_Key_Down ) 
            y+3 
             ;La touche gauche du curseur est appuyée 
         ElseIf KeyboardPushed ( #PB_Key_Left ) 
            x-3 
EndIf 



If Phase=0 : x_pnj + 1 : EndIf
If x_pnj=230 And Phase=0 : Phase=1  : EndIf

If Phase = 1 : y_pnj + 1 : EndIf
If y_pnj=125 And Phase=1 : Phase=2  : EndIf

If Phase = 2 : x_pnj + 1 : EndIf
If x_pnj=400 And Phase=2 : Phase=3  : EndIf

If Phase = 3 : y_pnj + 1 : EndIf
If y_pnj=550 And Phase=3 : Phase=4  : EndIf

If Phase=4 : x_pnj + 1 : EndIf
If x_pnj=600 And Phase=4 : Phase=5  : EndIf


If Phase=5
 If x_pnj > 50 : x_pnj-1 : EndIf
  If y_pnj > 10 : y_pnj-1 : EndIf
   If x_pnj <= 50 And y_pnj <= 10 : phase=0 : EndIf
    EndIf




Until KeyboardPushed ( #PB_Key_Escape )

essaye de creer une fonction MoveTO(X,Y) :wink:
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Heu une fonction ? une procèdure quoi ? (excuse j'ai parfois du mal avec le voc de programmation lol)
Anonyme

Message par Anonyme »

Oui, c'est pareil :D en plus t'es un Darkbasicien :D

:wink:
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Ok, lol oui Darkbasicien comme tu dit :)
Répondre