Page 4 sur 4

Publié : ven. 27/juin/2008 17:09
par chikun
g mis ";" devant:

;ClearScreen ( RGB (0, 0,0)) ; nettoie l'ecran apres affichage et...

pour interdire l'instruction....

on se deplace dans un tableau virtuel, celui des sprites ...enfin je veux dire il y a deux ecrans le notre et celui des sprites ....piuwww je sais plus , en fait tu effaces l'ecran du "nous" ......(je deviens fou)

Publié : ven. 27/juin/2008 17:28
par Backup
chikun a écrit :g mis ";" devant:

;ClearScreen ( RGB (0, 0,0)) ; nettoie l'ecran apres affichage et...

pour interdire l'instruction....

on se deplace dans un tableau virtuel, celui des sprites ...enfin je veux dire il y a deux ecrans le notre et celui des sprites ....piuwww je sais plus , en fait tu effaces l'ecran du "nous" ......(je deviens fou)
c'est un peu pour ça qu'au depart, je voulais entreprendre un Tuto

parce que tu vois tout n'est pas limpide toujours :D

en faite Purebasic utilise le Double Bufering, mais "automatique", le programmeur , en principe n'as pas a s'en occupé !!

le ClearScreen ( RGB (0, 0,0)) sert a effacer tous ce qui se trouve sur l'ecran

imagine au ralenti :

une grande salle (c'est l'ecran)

apparait soudainement un Cube dans cette salle (c'est un Sprite)

si la femme (hum ou l'homme) de menage ne viens pas retirer ce cube

a la prochaine boucle (toutes les Heures : ) )
un autre Cube (ayant la meme apparence !!) va tomber et va remplacer le premier cube, mais aussi peut ajouter un Cube ailleurs (si le sprite se deplace dans la salle :) )

donc si le technicien de surface, ne fait rien (;ClearScreen ( RGB (0, 0,0)))

les cubes vont remplir petit a petit la salle a chaque boucle (toutes les heures) !!

maintenant si on dit au technicien de surface de nettoyer la salle , en retirant tout ce qui s'y trouve
ClearScreen ( RGB (0, 0,0))

5 minutes avant que chaque heure ne sonne (juste avant la fin de la boucle : ) )

et bien au moment de l'heure , il n'y aura toujours qu'un seul Cube dans la salle !! :)


en bref et pour resumer :lol:

si tu désactive ClearScreen ( RGB (0, 0,0))
les sprites et tout ce qui s'affiche a l'ecran vont laisser une trace
a chaque déplacement , ce peut etre un effet voulu pour simuler uncrayon qui dessine par exemple :)

si ClearScreen ( RGB (0, 0,0)) est actif, l'ecran sera nettoyé nickel, pour le dessin suivant :D

;********************************

en fait effectivement
la structure (une forme de tableau)
retiens en temps reel les coordonées de chaque Sprite !!!

et au moment de l'affichage on pioche les coordonées memorisé dans la structure

rapelle toi on fait




Code : Tout sélectionner

If KeyboardPushed(#PB_Key_Up ) ; fleche  haut
        balle(#nous)\y =balle(#nous)\y-2
    EndIf
    If KeyboardPushed(#PB_Key_Down ) ; fleche  bas
        balle(#nous)\y =balle(#nous)\y+2
    EndIf
    If KeyboardPushed(#PB_Key_Left ) ; fleche  gauche
        balle(#nous)\x =balle(#nous)\x-2
    EndIf
    If KeyboardPushed(#PB_Key_Right ) ; fleche  droite
        balle(#nous)\x =balle(#nous)\x+2
    EndIf 
donc a chaque appuis sur une touche fléchè on ajoute ou retire 2 (8 chez toi) a la structure (considere la comme une variable rien de plus :) )

comme ça en permanence
balle(#nous)\x
et
balle(#nous)\y
retiennent la dernière coordonnée du sprite #nous :)


au moment de l'affichage
DisplayTransparentSprite(#nous, balle(0)\x, balle(0)\y) ; on affiche notre sprite
on relis les contenu de nos variables (structure)
balle(0)\x
balle(0)\x

ps 0= c'est #Nous :)

Publié : ven. 27/juin/2008 18:17
par chikun
comment inserer une instruction dans ton prog pour une interruption de prog (comme sous console, a$=inkey(): if a$........)
car g mis delay(500) apres

ClearScreen ( RGB (0, 0,0)) ; nettoie l'ecran apres affichage
delay(500)

et c pas tout l'ecran qui s'efface (comme tu l'as dit), pas ceux des sprites ...(?)

g pas trop peur d'etre nul avec toi :? :lol:

Publié : ven. 27/juin/2008 18:33
par Backup
.........

Publié : ven. 27/juin/2008 18:54
par chikun

Code : Tout sélectionner

ClearScreen ( RGB (0, 0,0)) ; nettoie l'ecran apres affichage 

je suis fatigué, je bute la dessus car tu dis plus haut, que celà efface tout ce qui se trouve a l'ecran.
En fesant une pause sous cette instruction... je n'arrive pas à me le prouver...

en tout cas merci , tu as bq de patiente vu que tu reponds un peu partout et que tu t'occupes des tutos

g un blem avec les ecrans, virtuel ou pas, a demain

Publié : ven. 27/juin/2008 19:25
par Backup
...........

Publié : ven. 27/juin/2008 20:12
par Chris
Dobro a écrit :
chikun a écrit :

Code : Tout sélectionner

ClearScreen ( RGB (0, 0,0)) ; nettoie l'ecran apres affichage 

je suis fatigué, je bute la dessus car tu dis plus haut, que celà efface tout ce qui se trouve a l'ecran.
ben met la simplement en rem ";"
et tu bouge le carré avec les touches flechées, tu verra bien que le carré laisse des traces ...

Code : Tout sélectionner

;- test du materiel
;*******************************************************************************************************
If InitSprite()=0
    msg_erreur("impossible d'initialiser les sprites"+Chr(10)+" le prg va quitter ")
    End 
EndIf

If InitMouse()=0
    msg_erreur("impossible d'initialiser la souris"+Chr(10)+" le prg va quitter ")
    End 
EndIf

If InitKeyboard()=0
    msg_erreur("impossible d'initialiser le clavier"+Chr(10)+" le prg va quitter ")
    End 
EndIf

If InitJoystick()=0
    msg_erreur("impossible d'initialiser le joystick"+Chr(10)+" on va continuer sans ")
    joystick=0
Else
    joystick=1 ; le joystick est present !!
EndIf

If InitChikun() = 0
   msg_erreur("Impossible d'initialiser le Chikun"+Chr(10)+" Le Dobro va quitter")
   End
Endif

Publié : sam. 28/juin/2008 3:52
par chikun
mais c ce que g fait , je te l'ai meme montrer plus haut , j'ai bien mis le ";" avant la ligne et g bien vu que le "nous" ne s'effaçait plus!!!!!!!!!!!!!!!

je dis que si on arretait le temps juste APRES cette ligne:
ClearScreen(RGB(0, 0,0)) ; nettoie l'ecran apres affichage

les sprites etaient toujour AFFICHER..... hors tu dis que ça efface TOUT l'ecran

en tout cas , Dobro, si tu abandonnes, je ne t'en voudrais pas
Tu t'ais donné bien du mal :roll:

en fait g l'impression de 2 calques: ceux des sprites (eux) et notre calque...et "by dobro" est sur le notre...

@chris 8O
:P

Publié : sam. 28/juin/2008 8:00
par Backup
le resultat effectif de Clearscreen() aura lieu seulement Apres le

FLIPBUFFERS() !!

puisque c'est cette instruction qui lance le balayage du pinceau sur l'ecran

(en realité elle swap l'ecran virtuel avec l'ecran physique <-- Ref : Stos Basic )

cette fonction est indispensable pour voir un résultat a l'écran

tu peux imaginer que c'est elle qui envoie concrètement le contenu de ton écran a ta carte graphique :)

Publié : sam. 28/juin/2008 9:16
par chikun
ben voilà , il t'en a fallu du temps :? , c bien , ça m'est tres instructif

heureusement que tu m'aides...je t'en remercie :D

Publié : sam. 28/juin/2008 9:18
par Backup
chikun a écrit :heureusement que tu m'aides...je t'en remercie :D
oui mais c'est fini la !


ben voilà , il t'en a fallu du temps :?
car ça c'etait en trop !

Publié : sam. 28/juin/2008 9:33
par Chris
Dobro a écrit :
ben voilà , il t'en a fallu du temps :?
car ça c'etait en trop !
Bah ouais quoi!

Tu pouvais pas te dépêcher un peu, au lieu de tourner autour du pot pendant 107 ans?

Nan mais j'vous jure.... :mrgreen:

Publié : sam. 28/juin/2008 10:51
par Backup
Chris a écrit : Bah ouais quoi!

Tu pouvais pas te dépêcher un peu, au lieu de tourner autour du pot pendant 107 ans?

Nan mais j'vous jure.... :mrgreen:

Image

:twisted:

Publié : sam. 28/juin/2008 20:32
par djes
:lol: Pov' dobro! C't'une crême c't'homme là j'vous jure!