Page 1 sur 1
Effacer l'ecran
Publié : mar. 21/août/2007 13:33
par drfloyd
Bonjour, debutant a 100% sur PURE BASIC (j'ai un gro proget dessus !) j'ai commencé ce week end, je vais avoir quelques questions "cons" :
j'ai commencé a ouvrir un fenetre windows ou je dessine differents trucs... mais comment l'effacer entierement ?
J'utilise a chaque fois CreateImage(0, 800, 600) pour l'effacer, il doit y avoir un autre moyen LOL (y a pas CLS ?)
Merci
Dr Floyd
Publié : mar. 21/août/2007 13:36
par ATHOW
C'est une fenêtre (Window) ou un écran (Screen ou WindowedScreen) ?
Si c'est un écran, ClearScreen(RGB(0,0,0)) est ce que tu recherches.
Je te conseille de lire les tutos (dans cette section du forum) + la doc (et les exemples livrés avec PureBasic), tu auras tout de suite beaucoup moins de questions !
Edit : si tu utilises CreateImage, tu dois être dans une Window. Donc, tu peux n'utiliser qu'une seule image et la repeindre tout simplement (je te montre un code ce soir si tu as besoin, j'ai pas Pure sous la main, là).
Publié : mar. 21/août/2007 16:35
par drfloyd
c'est une fenetre, je vais la repeindre en noir avec un rectangle dans ce cas !
En mode plein ecran on peut garder les gadgets styles boutons a cliquer ??????
Publié : mar. 21/août/2007 17:29
par Backup
drfloyd a écrit :c'est une fenetre, je vais la repeindre en noir avec un rectangle dans ce cas !
En mode plein ecran on peut garder les gadgets styles boutons a cliquer ??????
il y a un mode pour ça !!
le mode OpenWindowedScreen()
un petit exemple
; Codé par Dobro
; en purebasic 4.02
;- Window Constants
;
Declare Open_Window_0()
Enumeration
#Window_0 ; numero de la fenetre
#sprite ; numero du sprite
#Button_0 ; numero du bouton
EndEnumeration
Structure sprite
num.l ; numero du sprite
x.l ; la coordonée x du sprites
Y.l ; la coordonée y du sprites
sensx.l ; le sens du deplacement x du sprite
sensy.l ; le sens du deplacement y du sprite
coul.l ; la couleur du sprite
EndStructure
nombre_de_Sprite=8
Dim sprite.sprite(nombre_de_Sprite)
For i=1 To nombre_de_Sprite
CallDebugger
sprite(i)\x= Random (200) +32 ; on donne une coordonée de depart au sprite
sprite(i)\Y= Random (200)+32
de= Random (1)
If de=1
sprite(i)\sensx=4 ; on donne un sens de deplacement par defaut au sprite
sprite(i)\sensy=4 ; ce chiffre correspond a la vitesse de deplacement du sprite
Else
sprite(i)\sensx=-4 ; on donne un sens de deplacement par defaut au sprite
sprite(i)\sensy=4 ; ce chiffre correspond a la vitesse de deplacement du sprite
EndIf
sprite(i)\coul = RGB ( Random (200)+50, Random (200)+50, Random (200)+50) ; attribut une couleur
Next i
;
InitSprite ()
Open_Window_0() ; appel de la procedure qui ouvre la fenetre
; ****** creation des sprites *********
For i=1 To nombre_de_Sprite
CreateSprite (i,16,16) ; creation d'une cellule vide (un sprite)
StartDrawing ( SpriteOutput (i)) ; on va dessiner dans notre sprite un carre coloré
Box (1,1,16,16,sprite(i)\coul) ; voila le dessin du carre vert dans notre sprite
StopDrawing ()
Next i
;**************************************
Repeat ; boucle principale , qui gere les affichages dans l'ecran graphique et les evenement de la fenetre
Event = WindowEvent () ; attends de recevoir un evenements de la fenetre
Delay (1)
WindowID = EventWindow () ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget () ; Is it a gadget event?
EventType = EventType () ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
If GadgetID = #Button_0
Debug "appuis sur le bouton ok"
End
EndIf
EndIf
For i=1 To nombre_de_Sprite
sprite(i)\x= sprite(i)\x+sprite(i)\sensx ; on lance le sprite
sprite(i)\Y=sprite(i)\Y+sprite(i)\sensy
; on va tester les sortie de l'ecran pour creer des rebonds
; les verticales
If sprite(i)\Y<0 ; sort par le haut !!
sprite(i)\sensy=-sprite(i)\sensy ; on inverse le deplacement vertical
EndIf
If sprite(i)\Y>350-16 ; sort par le bas !!
sprite(i)\sensy=-sprite(i)\sensy ; on inverse le deplacement vertical
EndIf
; les horizontales
If sprite(i)\x<0 ; sort par la gauche
sprite(i)\sensx=-sprite(1)\sensx ;on inverse le deplacement horizontal
EndIf
If sprite(i)\x>400-16 ; sort par la droite
sprite(i)\sensx=-sprite(i)\sensx ;on inverse le deplacement horizontal
EndIf
; ********** fin des test de sorti d'ecran *****************
; **************Affichage du sprite ***********
DisplaySprite (i,sprite(i)\x,sprite(i)\Y)
Next i
FlipBuffers ()
ClearScreen ( RGB (0,0,0)) ; on nettoie l'ecran pour le prochain affichage
; *****************************************
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
;
Procedure Open_Window_0()
If OpenWindow ( #Window_0 , 363, 117, 472, 423, "test" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) ; on ouvre une fenetre
OpenWindowedScreen ( WindowID ( #Window_0 ), 50, 10, 400, 350, 0, 1, 1) ; on creer un ecran graphique dedans
If CreateGadgetList ( WindowID ( #Window_0 )) ; la liste gadget pour la gestion des gadgets (ici un bouton)
ButtonGadget ( #Button_0 , 30, 370, 70, 30, "ok" ) ; voila le bouton
EndIf
EndIf
EndProcedure
Publié : mar. 21/août/2007 19:47
par drfloyd
Ok, genial
Et si je veux mettre des instruction DRAWTEXT, BOX ou CIRCLE????
C'est a dire mettre du texte ou tracer des lignes...
Comment initialiser ? en creant un "startdrawing" ???
Publié : mar. 21/août/2007 19:48
par Ollivier
@dobro
Je viens d'essayer ton code. T'y as mis "CallDebugger". J'ai regardé l'aide. J'ai cliqué sur Continue. J'ai cherché si mon prog était dans la barre des tâches mais rien de tout ça ne me fait avancer! (je te rassure, je l'ai enlevé pour voir les petites balles carrées!)
Comment tu t'en sert?
Publié : mar. 21/août/2007 20:20
par drfloyd
sinon j'ai reussi mettre du texte et des dessins avec
StartDrawing(ScreenOutput())
Merci pour votre grande aide !!!
Publié : mar. 21/août/2007 22:09
par Backup
Ollivier a écrit :@dobro
Je viens d'essayer ton code. T'y as mis "CallDebugger". J'ai regardé l'aide. J'ai cliqué sur Continue. J'ai cherché si mon prog était dans la barre des tâches mais rien de tout ça ne me fait avancer! (je te rassure, je l'ai enlevé pour voir les petites balles carrées!)
Comment tu t'en sert?
Calldebugger sert a arreter le prg a un endroit precis et appel le debugger
j'ai oublie de le retirer ...
j'utilise JAPBE l'autre editeur pour PureBasic (mieux foutu, et plus performant pour plein de raisons)
avec la touche F5 on peut lancer le prg sans qu'il tienne compte des commandes de debugage
c'est ce qui explique pourquoi tu peux encore trouver des calldebugger dans les listings
car avec F5 on passe par dessus sans s'en rendre compte....
F6 permet de lancer avec le debugger actif par contre...
je ne me suis pas servi de l'editeur officiel depuis tres longtemps
je ne sait plus si il y a une correspondance ..

Publié : mar. 21/août/2007 23:01
par Ollivier
C'est juste la flemme qui me porte pour télécharger l'autre éditeur... Un jour il va m'arriver une thuile fatale. Je serai mort et enterré.
Je vais rencontrer un vieux à longue barbe là-haut pour être jugé. Il aura son portable Macintosh à 25 patates écran 28 pouces au beau milieu des nuages et il va me dire : "C'est déjà le bordel dans votre système, mais alors si j'avais pas jaPBe pour le déboguer et y mettre un peu d'ordre, je serai dans la merde totale! En Enfer! ça t'apprendra, bon à rien!"
Publié : mer. 22/août/2007 10:43
par drfloyd
sinon je voulais savoir si PUREBASIC etait un projet serieux et bien suivi ?
Car je me susi fait avoir avec DARK BASIC... Ils ont soudainement abandonné, et aujourd'hui il ne tourne plus sur XP...
Publié : mer. 22/août/2007 10:51
par ATHOW
Les mises à jour sont assez fréquentes, l'auteur est sérieux est impliqué (plus dans le forum anglais que dans celui-là, ceci dit).
Le langage a beaucoup évolué depuis que je l'ai découvert (avec la 3.81 il me semble).
Le seul point noir (qui devrait disparaître dans peu de temps si j'en crois les nouveautés au sujet de DirectX 9 et des mises à jour d'Ogre) était le retard des fonctionalités 3D sur certains autres outils. Encore que, étant un gros nul en 3D, j'ai pas pu vérifier ce dit retard.
Publié : mer. 22/août/2007 11:11
par Backup
ATHOW a écrit :et des mises à jour d'Ogre) était le retard des fonctionalités 3D sur certains autres outils. Encore que, étant un gros nul en 3D, j'ai pas pu vérifier ce dit retard.
cela dit en attendant, en 3D on dispose d'un moteur convenable "Dreamotion3D" (voir topic en rubrique 3D de ce forum )
aussi facile a programmer que le Dark !

Publié : mer. 22/août/2007 17:14
par Ollivier
@DrFloyd
Même chemin que toi à quelques semaines près.
Résultat : il n'y a pas photo. Je dirais même que si le projet PB s'arrêtait net, tu serais encore dans le bon pendant quelques années. Vu qu'on peut créer nos propres fonctions, ça évoluerait quand même...
