Page 1 sur 1

Problème d'affichage de Sprite

Publié : jeu. 20/mars/2014 19:55
par Zanshi
Tout d'abord, voila mon code de maintenant

Code : Tout sélectionner

InitSprite()
InitKeyboard()
UsePNGImageDecoder()
Structure var
  x.l
  PasX.l
  y.l
  PasY.l
EndStructure

Global Gus.var
Gus\x      = 0
Gus\y      = 0
Gus\PasX   = 0
Gus\PasY   = 0
Global in.l,out.l,x.l,xstep.l,y.l,ystep.l,dep.s

Enumeration
  #door
  #hero
  #land_1
  #land_2
  #step
  #wall
  #window
EndEnumeration
d:
OpenWindow(#window,0,0,960,680,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_BorderLess|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
OpenWindowedScreen(WindowID(#window),0,0,960,680,1,0,0)
ClearScreen(RGB(0,0,0))
LoadSprite(#door,"Image\door.png")
LoadSprite(#hero,"Image\hero.png")
LoadSprite(#land_1,"Image\land_1.png")
LoadSprite(#land_2,"Image\land_2.png")
LoadSprite(#step,"Image\step.png")
LoadSprite(#wall,"Image\wall.png")
TransparentSpriteColor(#hero,RGB(255,255,255))

For x=0 To 960 Step 40
  For y=0 To 680 Step 40
    DisplaySprite(#wall,x,y)
  Next
Next
in=Random(22-1)+1
out=Random(15-1)+1
DisplaySprite(#door,in*40,0)
DisplaySprite(#door,out*40,640)
xstep=Random(22-1)+1
ystep=Random(15-1)+1
DisplaySprite(#step,xstep*40,ystep*40)
For x=40 To 880 Step 40
  For y=40 To 600 Step 40
    ran=Random(100)
    Select ran
      Case 0 To 75
        If (y/40)%2=0
          DisplaySprite(#land_1,x,y)
        ElseIf (y/40)%2=1
          DisplaySprite(#land_2,x,y)
        EndIf
      Case 76 To 100
        DisplaySprite(#wall,x,y)
    EndSelect
    passage:
  Next
Next
DisplaySprite(#land_2,in*40,40)

Gus\x=in*40
Gus\y=40

Repeat
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_W)
    Gus\PasY = - 40
  EndIf
  If KeyboardPushed(#PB_Key_D)
    Gus\PasX = 40
  EndIf
  If KeyboardPushed(#PB_Key_S)
    Gus\PasY = 40
  EndIf
  If KeyboardPushed(#PB_Key_A)
    Gus\PasX = - 40
  EndIf
  
  Gus\x + Gus\PasX
  Gus\y + Gus\PasY
  Gus\PasX = 0
  Gus\PasY = 0
  
  DisplayTransparentSprite(#hero,Gus\x,Gus\y)
  FlipBuffers()
  
  If KeyboardPushed(#PB_Key_RightShift)
    Goto d
  EndIf
  If KeyboardPushed(#PB_Key_Escape) Or WaitWindowEvent()=#PB_Event_CloseWindow
    End
  EndIf
  Delay(20)
ForEver
Et voici les image nécessaire: https://mega.co.nz/#!UodlmBYa!HntrfwRCQ ... wEBbQuxW0c
Mon problème, c'est que je n'arrive pas à déplacé le joueur sans les "trainés"...
Quelqu'un pourrait m'aider s'il vous plait ?

Re: Problème d'affichage de Sprite

Publié : jeu. 20/mars/2014 20:03
par G-Rom
clearscreen

Re: Problème d'affichage de Sprite

Publié : jeu. 20/mars/2014 20:03
par majikeyric
Salut, juste en regardant ton code, il manque un clearscreen(0) avant DisplayTransparentSprite(#hero,Gus\x,Gus\y) je pense...

Re: Problème d'affichage de Sprite

Publié : jeu. 20/mars/2014 21:08
par Zanshi
Justement quand je le fait, cela me laisse que la couleur demandé et non le sol et les murs...

Re: Problème d'affichage de Sprite

Publié : jeu. 20/mars/2014 21:40
par comtois
il faut mettre la construction de ta map dans une procédure, et tu appelles cette procédure dans la boucle juste avant DisplayTransparentSprite(#hero,Gus\x,Gus\y).

Code : Tout sélectionner

DrawMap()
DisplayTransparentSprite(#hero,Gus\x,Gus\y)
Il faut donc stocker les informations de ta map dans un tableau, et la procédure DrawMap() permet d'afficher ce tableau.

Re: Problème d'affichage de Sprite

Publié : jeu. 20/mars/2014 21:46
par majikeyric
Il faut ré-afficher tous les éléments graphiques à chaque boucle( sol, murs, perso..) après avoir effacer l'écran.

mémorise ton écran dans un tableau et après tu le ré-affiche à chaque fois.

Dans ton code tu ne gère que l'affichage du perso.

*edit*: comtois a été plus rapide...

Re: Problème d'affichage de Sprite

Publié : jeu. 20/mars/2014 21:52
par Zanshi
Effectivement je n'y avais pas pensé, j'ai le droit de me sentir con ?

Merci comtois, et majikeyric

Re: Problème d'affichage de Sprite

Publié : jeu. 20/mars/2014 21:57
par majikeyric
On est tous des cons en puissance :mrgreen:

Re: Problème d'affichage de Sprite

Publié : jeu. 20/mars/2014 22:23
par Zanshi
J'ai fait le tableau, et du coup j'en ai profité pour faire les collisions, ça fonctionne.

Re: Problème d'affichage de Sprite

Publié : jeu. 20/mars/2014 22:49
par majikeyric
Cool! :mrgreen: