[résolu] Souci avec sinus scroll
Publié : jeu. 02/oct./2014 22:40
Arghhhhhhhhh, je n'arrive pas à savoir ce qui provoque les à-coups dans mon sinus scroll
J'y ai passé des heures... sans succès

Si vous pouviez m'éclairer d'un regard neuf
Les fichiers sont dispos ici : http://majikeyric.free.fr/purebasic/SinusScroll.zip
* A compiler en mode ASCII

J'y ai passé des heures... sans succès


Si vous pouviez m'éclairer d'un regard neuf

Les fichiers sont dispos ici : http://majikeyric.free.fr/purebasic/SinusScroll.zip
* A compiler en mode ASCII
Code : Tout sélectionner
EnableExplicit
#NomAppli$="SinusScroll"
#LargeurEcran=800
#HauteurEcran=600
#NomFonte$="199-64x64.png"
#LargeurFonte=64
#HauteurFonte=64
#NbCaracParLigne=13
#Amplitude=150
#PosYCentre=300
Global.i ib
Global.i fonte, largeurImageFonte, nbCaracteresParLigneFonte, nbCaracteresParLigneEcran,*texte
Global texte$
Global.i decalage=0
Global.i vitesse=1
Global.i j=0
Global.i i, j2, k
Global.a car
Global.i x,y
texte$="abcdefghijklmnopqrstuvwxyz"
texte$= Space(#nbCaracParLigne) + UCase(texte$) + Space(#nbCaracParLigne); + Chr(0)
*texte=@texte$
Global Dim posY.i(360)
For ib=0 To 359
posY(ib)=Cos(Radian(ib))*#Amplitude+#PosYCentre
Next
UsePNGImageDecoder()
If InitKeyboard()=0 Or InitSprite()=0
MessageRequester("Error", "Initialization failed !", #PB_MessageRequester_Ok|#MB_ICONERROR)
End
EndIf
If OpenWindow(0,0,0,#LargeurEcran,#HauteurEcran,#NomAppli$,#PB_Window_ScreenCentered | #PB_Window_BorderLess)=0 Or
OpenWindowedScreen(WindowID(0),0,0,#LargeurEcran,#HauteurEcran)=0
MessageRequester("Error", "Couldn't open the screen !", #PB_MessageRequester_Ok|#MB_ICONERROR)
End
EndIf
fonte=LoadSprite(#PB_Any, #NomFonte$)
If fonte=0
MessageRequester("Error", "GFX not loaded !",#PB_MessageRequester_Ok|#MB_ICONERROR)
End
EndIf
largeurImageFonte=SpriteWidth(fonte)
nbCaracteresParLigneFonte=largeurImageFonte/#LargeurFonte
j=0
Repeat
Repeat
Until WindowEvent()=0
ClearScreen(0)
j2=j
For i=0 To (#largeurEcran/#largeurFonte)+1
car=PeekA(*texte+i)-32
x=(car%nbCaracteresParLigneFonte)*#largeurFonte
y=(car/nbCaracteresParLigneFonte)*#hauteurFonte
For k=0 To #LargeurFonte-2 Step 2
ClipSprite(fonte,x+k,y,2,#hauteurFonte-6)
DisplayTransparentSprite(fonte,(i*#largeurFonte)-decalage+k,posY(j2))
j2+1
j2%360
Next
Next
j+1
j%360
decalage+vitesse
If decalage>=#largeurFonte
decalage-#largeurFonte
If PeekA(*texte+(#nbCaracParLigne+1))=0
*texte=@texte$
Else
*texte+1
EndIf
EndIf
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)