Page 1 sur 1

Problème de débutant

Publié : mar. 15/mars/2005 16:49
par Pascal Vernie
Bonjour à tous,
Mon problème et le suivant
Avec le petit programme ci-dessous,la balle fait assez souvent des saccades en se déplaçant, alors qu'avec un programme comme PUREBREAKER ou SOKOBAN 3D écrit eux aussi en PureBasic tout est
parfaitement fluide ( trés beaux programmes qui montrent toutes les possibilités de PureBasic )
Ai-je fait une faute de programmation ? Ou alors y à-t'il une possibilité
de donner en quelque sorte la priorité à PureBasic pendant son exécution.
En vous remerçiant de votre aide.

InitSprite()
InitKeyboard()
OpenScreen(1024,768,32,"")

LoadSprite(1,"balle.bmp")

xbal = 500
ybal = 200
xb = 2
yb = 5

Repeat

ExamineKeyboard()
ClearScreen(200,200,200)
StartDrawing(ScreenOutput())
Box(300,20,700,750,RGB(128,128,128))
StopDrawing()

DisplayTransparentSprite(1,xbal,ybal)
xbal + xb
ybal + yb

Gosub test:

If KeyboardPushed(#pb_key_escape)
End; Fin du jeu
EndIf

FlipBuffers()
ForEver

test:
If ybal < 20
ybal = 20
yb = -yb
EndIf
If ybal > 700
ybal = 700
yb = - yb
EndIf
If xbal < 300
xbal = 300
xb = - xb
EndIf
If xbal > 980
xbal = 980
xb = -xb
EndIf
Return

Publié : mar. 15/mars/2005 17:04
par Crystal Noir
salut :)

Beurk les gosub, pas beau lol bref de toute facon ya plusieurs manières de programmer.

Lorsque tu fais ton openscreen essaies de jouer sur la commande SetRefreshRate qui permet de piloter le taux de rafraichissement de l'écran.

Essaies de mettre StartDrawing et StopDrawing avant la boucle Repeat Forever :

Startdrawing(ScreenOutput())

Repeat

....


Forever

StopDrawing()

Cela dit chacun pense un peu ce qu'il veut des gosub, mais si j'étais toi je commencerai directement par programmer avec des procedures, car les gosub on a tendance à en mettre un peu partout et après on sait plus où on en est :p

De plus si le programme pète, si il te parle d'une erreur dans une des procédures, l'erreur est forcément dans la procédure (ca permet de réduire un peu les recherches).

Enfin ca c'est mon avis. Quelques idées à tester sinon pour ton problème de fluidité.

Aussi préfère les png au bmp qui sont un peu moins lourd (meme si le png est aussi un format non compressé).

Publié : mar. 15/mars/2005 17:56
par eRz0r
Je viens de tester ton code, et il n'y aucun saccade, par contre je trouve la balle telement fluide qu'elle est flou, ya un moyen de contrer a ce prob ?

eRz

Publié : mar. 15/mars/2005 17:58
par Crystal Noir
la superposition avec un vrai décor rend toujours mieux.

Débutant

Publié : mar. 15/mars/2005 18:33
par Pascal Vernie
Merci pour vos réponses, à priori la méthode de Crystal Noir de sortir
Startdrawing(ScreenOutput()) de la boucle Repeat resout le problème de fluidité, mis je n'ai plus le cadre qui été dessiné par Box....
Cela m'a donné l'idée de le faire avec un sprite
C'est la qu'il est difficile pour un débutant de commencer en PureBasic
car l'aide est conséquente mais n'explique pas la place que doit avoir
certaines instructions dans le déroulement du programme.
Heureusement il y à des spécialistes trés sympas qui aident rapidement.
Pour les procédures je vais essayer de comprendre l'avantage de les utiliser.
Encore merci
Pascal

Publié : mar. 15/mars/2005 19:07
par cha0s
et encore tu dit sa pasque ta pas esayé le c++ avec une api :p menfin bon c'est a sa que sert cette section du forum

PS : le logiciel est quand meme fournie avec pas mal d'exemples