Problème de débutant

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Pascal Vernie
Messages : 127
Inscription : mar. 15/mars/2005 16:37

Problème de débutant

Message 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
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message 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é).
eRz0r
Messages : 30
Inscription : ven. 14/janv./2005 17:42

Message 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
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

la superposition avec un vrai décor rend toujours mieux.
Pascal Vernie
Messages : 127
Inscription : mar. 15/mars/2005 16:37

Débutant

Message 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
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message 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
Répondre