Pour YOGI
Re: Pour YOGI
Voilà Yogi, tu peux mater ça : http://www.purebasic.fr/french/viewtopi ... =8&t=16343
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Pour YOGI
superbe ! haha les infinit bobs j'adore ! bref superbe starfield aussi ! je sens que je vais me prendre deux mois pour bien tout étudier 
grand merci à toi j'ai aussi un vidéo clip à faire mais je compte le commencer en janvier donc ca va aller j'espère (mon temps libre sur purebasic
^^^)
TRÈS bonne soirée à toi copaing ^^
edit: et la gestion du timer que je ne connaissais pas ! je vais étudier tout cela
grand merci

grand merci à toi j'ai aussi un vidéo clip à faire mais je compte le commencer en janvier donc ca va aller j'espère (mon temps libre sur purebasic

TRÈS bonne soirée à toi copaing ^^
edit: et la gestion du timer que je ne connaissais pas ! je vais étudier tout cela

hop ici grosse tour a moué: pentium G3258 à 3.20ghz + 16go de ram + 650gtx
sinon laptop bout de plastique 2 x centrino 1.8 ghz + 4 go de ram
Le tout sous Deepin OS 64b le bonheur
et plein de virtualbox 
sinon laptop bout de plastique 2 x centrino 1.8 ghz + 4 go de ram
Le tout sous Deepin OS 64b le bonheur


Re: Pour YOGI
bon j'ai enfin compris ton code sauf le timer
va falloir que je comprenne car ça m'intéresse au plus haut point.
merci pour tous les effets, si tu es ok je vais en prendre certains. sinon le truc d'afficher l'image en dernier pour qu'elle soit dessus, c'est logique mais je ne savais pas bref je vais m'y mettre demain matin
je vais essayer de trouver de la doc pour le timer, capter comment cela marche
à très bientôt

merci pour tous les effets, si tu es ok je vais en prendre certains. sinon le truc d'afficher l'image en dernier pour qu'elle soit dessus, c'est logique mais je ne savais pas bref je vais m'y mettre demain matin
je vais essayer de trouver de la doc pour le timer, capter comment cela marche
à très bientôt
hop ici grosse tour a moué: pentium G3258 à 3.20ghz + 16go de ram + 650gtx
sinon laptop bout de plastique 2 x centrino 1.8 ghz + 4 go de ram
Le tout sous Deepin OS 64b le bonheur
et plein de virtualbox 
sinon laptop bout de plastique 2 x centrino 1.8 ghz + 4 go de ram
Le tout sous Deepin OS 64b le bonheur


Re: Pour YOGI
Le timer est vraiment pas compliqué
J'ai repris le code de la doc avec enumerations et quelques commentaires en plus.
J'ai repris le code de la doc avec enumerations et quelques commentaires en plus.
Code : Tout sélectionner
Enumeration
#FEN ; ta fenetre
#TIM; ton timer
#BAR; ta barre
EndEnumeration
Global Duree = 1000 ; durrée en millisec donc là on part sur un timer de 1 sec
If OpenWindow(#fen, 0, 0, 400, 100, "Exemple Minuteur", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ProgressBarGadget(#BAR, 10, 10, 380, 20, 0, 100)
; Ajout du minuteur #TIM dans la fenêtre #FEN qui se déclenchera toutes les 1sec
AddWindowTimer(#FEN, #TIM, Duree)
Value = 0
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Timer And EventTimer() = #TIM
; Toutes les sec il va se passer ça !
Value = (Value + 5) % 100
SetGadgetState(#BAR, Value)
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Pour YOGI
coucou toi
ok je vais étudier cela
grand merci à toi
becos
ok je vais étudier cela

grand merci à toi
becos
hop ici grosse tour a moué: pentium G3258 à 3.20ghz + 16go de ram + 650gtx
sinon laptop bout de plastique 2 x centrino 1.8 ghz + 4 go de ram
Le tout sous Deepin OS 64b le bonheur
et plein de virtualbox 
sinon laptop bout de plastique 2 x centrino 1.8 ghz + 4 go de ram
Le tout sous Deepin OS 64b le bonheur


Re: Pour YOGI
Exemple de timer avec une pendule
Même chose mais en méthode Bind...
Notes:
1. On peut mélanger les deux techniques
2. La méthode Bind... permet aussi de désactiver un évènement (avec UnBind... )

Code : Tout sélectionner
; S'obliger à déclarer les variables
; (évite les les erreurs par bêtes fautes de frppae ;-)
EnableExplicit
; Laisser PB affecter des numéros aux objets
; On est ainsi sûr de ne pas utiliser le même numéro par erreur
Enumeration
#Win
#Txt
#Timer
EndEnumeration
; Dans un programme plus grand on utilise les énumération nommées
; Ouvrir une fenêtre (centrée et avec le menu système et la case de fermeture)
; (Note: Pour la lisibilité, en PB on peut couper les lignes après , + - * / )
; (L'indentation automatique va aligner correctement le tout)
; (Note2: Avant "livraison" il est conseillé de faire CTRL+A puis CTRL+I)
; (Ce qui va tout réindenter correctement)
OpenWindow(#Win, 0, 0, 300, 100, "Horloge",
#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
; Créer une zone de texte (le texte sera centré horizontalement)
TextGadget(#Txt, 100, 40, 90, 20, "Hello World!", #PB_Text_Center)
; Ajouter un timer (délai en milliseconde)
; Un timer est toujours lié à une fenêtre!
AddWindowTimer(#Win, #Timer, 1000)
; Boucle principale (méthode classique)
; On utilise maintenant souvent la méthode Bind...
; Qui permet le déclenchement immédiat. (à suivre...)
Repeat
; Scruter la file d'évènement
; = s'arrêter dès qu'il se passe quelque-chose
; + Voir si un des évènements correspond à un cas listé
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
; L'utilisateur a cliqué sur la case de fermeture de la fenêtre
; Quitter la boucle principale
Break
; On aurait pu aussi mettre directement End
; Mais on peut parfois avoir des choses à faire
; avant de quitter complètement un programme (sauvegarde)
Case #PB_Event_Timer
; Un évènement de type timer s'est déclenché
If EventTimer() = #Timer
; Si ce timer est le timer 1
; On écrit la nouvelle heure
; (FormatDate() utilise le même système que printf en C)
SetGadgetText(#Txt, FormatDate("%hh:%ii:%ss", Date()))
EndIf
EndSelect
ForEver
End
Code : Tout sélectionner
; S'obliger à déclarer les variables
; (évite les les erreurs par bêtes fautes de frppae ;-)
EnableExplicit
; Laisser PB affecter des numéros aux objets
; On est ainsi sûr de ne pas utiliser le même numéro par erreur
Enumeration
#Win
#Txt
#Timer
EndEnumeration
; Dans un programme plus grand on utilise les énumération nommées
; Ouvrir une fenêtre (centrée et avec le menu système et la case de fermeture)
; (Note: Pour la lisibilité, en PB on peut couper les lignes après , + - * / )
; (L'indentation automatique va aligner correctement le tout)
; (Note2: Avant "livraison" il est conseillé de faire CTRL+A puis CTRL+I)
; (Ce qui va tout réindenter correctement)
OpenWindow(#Win, 0, 0, 300, 100, "Horloge",
#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
; Créer une zone de texte (le texte sera centré horizontalement)
TextGadget(#Txt, 100, 40, 90, 20, "Hello World!", #PB_Text_Center)
; Ajouter un timer (délai en milliseconde)
; Un timer est toujours lié à une fenêtre!
AddWindowTimer(#Win, #Timer, 1000)
; --- Procédures appelées par les déclencheurs
Procedure Quit()
End
EndProcedure
Procedure Update_Clock()
SetGadgetText(#Txt, FormatDate("%hh:%ii:%ss", Date()))
EndProcedure
; --- Déclencheurs
BindEvent(#PB_Event_CloseWindow, @Quit())
BindEvent(#PB_Event_Timer, @Update_Clock())
; Avantages:
; - Les appels se font à tout moment
; - Plus rapide (effet visible sur le redimensionnement de fenêtres avec gadgets)
; - Un gadget système peut être appelé avec uniquement la fenêtre concernée
; (utile pour la Case de fermeture, si on utilise plusieurs fenêtres)
; voir aussi:
; - BindGadgetEvent()
; - BindMenuEvent()
; --- Boucle principale (c'est tout :-)
Repeat
WaitWindowEvent()
ForEver
1. On peut mélanger les deux techniques
2. La méthode Bind... permet aussi de désactiver un évènement (avec UnBind... )

Re: Pour YOGI
et par l'utilisation de l'Api windows 

Code : Tout sélectionner
; S'obliger à déclarer les variables
; (évite les les erreurs par bêtes fautes de frppae ;-)
EnableExplicit
; Laisser PB affecter des numéros aux objets
; On est ainsi sûr de ne pas utiliser le même numéro par erreur
Enumeration
#Win
#Txt
#Timer_1
EndEnumeration
Declare timerproc(hwnd.l, umsg.l, idevent.l, dwtime.l)
OpenWindow(#Win, 0, 0, 300, 100, "Horloge", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
; Créer une zone de texte (le texte sera centré horizontalement)
TextGadget(#Txt, 100, 40, 90, 20, "Hello World!", #PB_Text_Center)
; Ajouter un timer (délai en milliseconde)
SetTimer_(WindowID(#Win), #timer_1, 1000, @TimerProc()) ; defnition du timer , toutes les 1 secondes, on appel la procedure TimerProc()
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
; L'utilisateur a cliqué sur la case de fermeture de la fenêtre
; Quitter la boucle principale
Break
; On aurait pu aussi mettre directement End
; Mais on peut parfois avoir des choses à faire
; avant de quitter complètement un programme (sauvegarde)
EndSelect
ForEver
;Zone procedure
; cette procedure contient les actions a effectuer par le timer
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Select uMsg
Case #WM_TIMER
Select idEvent
Case #timer_1 ; se qui se passe lors de l'appel du timer
SetGadgetText(#Txt, FormatDate("%hh:%ii:%ss", Date())) ; on affiche l'heure
EndSelect
EndSelect
EndProcedure
End
Re: Pour YOGI
bonjour messieurs 
déjà grand merci pour le code ! alors mission d'aujourd'hui, comprendre tout cela
je vais y aller à taton, essayer de gérer un effet déjà donné et y mettre un timer mais peut être que je vois trop grand
en lua je définie l'effet et l'appelle dans le timer, j'ai l'impression que c'est la même chose ?
à moi de comprendre tout cela
merci
stéphane

déjà grand merci pour le code ! alors mission d'aujourd'hui, comprendre tout cela

je vais y aller à taton, essayer de gérer un effet déjà donné et y mettre un timer mais peut être que je vois trop grand
en lua je définie l'effet et l'appelle dans le timer, j'ai l'impression que c'est la même chose ?
à moi de comprendre tout cela
merci
stéphane
hop ici grosse tour a moué: pentium G3258 à 3.20ghz + 16go de ram + 650gtx
sinon laptop bout de plastique 2 x centrino 1.8 ghz + 4 go de ram
Le tout sous Deepin OS 64b le bonheur
et plein de virtualbox 
sinon laptop bout de plastique 2 x centrino 1.8 ghz + 4 go de ram
Le tout sous Deepin OS 64b le bonheur


Re: Pour YOGI
oui c'est pareille !!yogi a écrit : en lua je définie l'effet et l'appelle dans le timer, j'ai l'impression que c'est la même chose ?
stéphane
en Visual Basic , par exemple , tu as l'objet timer, et dedans tu pose le code a effectuer
ben la c'est pareil !
tu definie un timer (
Code : Tout sélectionner
AddWindowTimer(#Win, #Timer, 1000)
(reviens a poser l'objet timer dans ta fenetre )
cette fonction donne un numero au timer (#timer ) , et une valeur de temp (1000 = 1 seconde )
ensuite dans la boucle d'event (la boucle principale qui tourne en permanence )
tu as :
Code : Tout sélectionner
Case #PB_Event_Timer
; Un évènement de type timer s'est déclenché
If EventTimer() = #Timer
on verifie de quel timer il s'agit , ici le timer numero #timer , (car on peut avoir plusieurs timer dans une fenetre)
si c'est le cas , on execute
Code : Tout sélectionner
SetGadgetText(#Txt, FormatDate("%hh:%ii:%ss", Date()))

Re: Pour YOGI
exemple d'utilisation du timer , comme gachette
dans le cadre d'un jeux video
ici on ne s'occupe que d'une balle qui part de bas de l'ecran, vers le haut
chaque seconde , un balle partira du bas de l'ecran , ce depart est conditionné par
l'emploi d'un timer !!
c'est l'emploi d'une variable "Drapeaux" (Flag) qui determine si on doit faire partir la balle
et cette variable sert de "gachette" , elle est mise a 1 par le timer , une fois le tir effectué, on la remet a 0
je te laisse regarder le code :
perso, j'aime bien la version API windows
elle est plus clair a lire , je trouve
ici un dernier exemple , qui prends en compte 3 timer ensemble
dans le cadre d'un jeux video
ici on ne s'occupe que d'une balle qui part de bas de l'ecran, vers le haut
chaque seconde , un balle partira du bas de l'ecran , ce depart est conditionné par
l'emploi d'un timer !!
c'est l'emploi d'une variable "Drapeaux" (Flag)
Code : Tout sélectionner
gachette.b
et cette variable sert de "gachette" , elle est mise a 1 par le timer , une fois le tir effectué, on la remet a 0
je te laisse regarder le code :
Code : Tout sélectionner
Enumeration
#Window
#timer
#ball
EndEnumeration
Structure ball
x.l
y.l
sensy.l
EndStructure
Declare SetResolution(RezX, RezY, NbCoul, Frequence, Memoriser) ; si SetResolution=2 la résolution est identique à l'actuelle, si 1 erreur lors de la recherche des infos, sinon regarder #DISP_CHANG_...
ExamineDesktops()
global x_ecran1=DesktopWidth(0) ; on note la resolution actuelle
global y_ecran1=DesktopHeight(0) ; on note la resolution actuelle
SetResolution(800,600,32,60,1) ; on force la resolution en 800x600
ExamineDesktops()
global x_ecran=DesktopWidth(0) ; recupe la resolution changé pour le jeux
global y_ecran=DesktopHeight(0); recupe la resolution changé pour le jeux
Dim ball.ball(1)
ball(1)\x =x_ecran/2
ball(1)\y=y_ecran
ball(1)\sensy.l=-32 ; sens de deplacement de la balle ( monte )
Global gachette.b,compteur_de_tir
InitSprite():InitKeyboard()
If OpenWindow(#Window, 0, 0, x_ecran, y_ecran,"", #PB_Window_BorderLess )
OpenWindowedScreen(WindowID(#Window),0,0,x_ecran, y_ecran,1,0,0)
StickyWindow(#window,1)
; ********** creation du sprite ********************
CreateSprite(#ball,32,32)
StartDrawing(SpriteOutput(#ball))
Circle(16,16,16,RGB(255,255,0))
StopDrawing()
; **********************************************
AddWindowTimer(#Window, #timer, 1000)
SetFrameRate(60)
; *********** boucle principale ******************************************
Repeat
ExamineKeyboard()
If compteur_de_tir>50
beep_(440,100)
gachette.b=0 ; on a arreté le tir parceque le compteur est superieur a 10
; mais le timer tourne toujours ..... ;o)
EndIf
If gachette.b=1 ; le timer a declenché la gachette
ball(1)\y=ball(1)\y+ball(1)\sensy.l
If ball(1)\y<0
ball(1)\y=y_ecran
gachette.b=0 ; la balle est arrivé en haut on la remet a sa place, et la gachette reviens a sa place
EndIf
Else
ball(1)\y=y_ecran
gachette.b=0 ; on remet la gachette a zero pour le prochain timer
EndIf
; ******************* les events *****************************************
select waitWindowEvent(2) ; le 20 permet de rendre la main au system , sinon il faut creer un evenement pour faire bouger la balle ( en bougeant la souris par ex )
case #PB_Event_Timer ; un evenement timer a lieu
if EventTimer() = #timer; il s'agit de notre timer (on peut bien sur en avoir plusieurs )
;Debug "--------------------1 seconde"
; Ici, le code à executer toutes les secondes
compteur_de_tir=compteur_de_tir+1 ; on incrmente le nombre de tir , pour pouvoir l'arreter
gachette.b=1
endif
EndSelect
; CallDebugger
DisplaySprite(#ball,ball(1)\x,ball(1)\y)
FlipBuffers()
ClearScreen(RGB(0,0,0))
Until KeyboardPushed(#PB_Key_Escape) Or Event=#PB_Event_CloseWindow
; **********************************************************************
EndIf
SetResolution(x_ecran1,y_ecran1,32,60,1) ; on remet la resolution du debut !!
Procedure SetResolution(RezX, RezY, NbCoul, Frequence, Memoriser)
; si SetResolution=2 la résolution est identique à l'actuelle, si 1 erreur lors de la recherche des infos, sinon regarder #DISP_CHANG_...
dm.DEVMODE
If EnumDisplaySettings_ (0, -1, @dm)
If RezX = dm\dmPelsWidth And RezY = dm\dmPelsHeight And NbCoul = dm\dmBitsPerPel And Frequence=dm\dmDisplayFrequency : ProcedureReturn 2 : EndIf
dmEcran.DEVMODE
dmEcran\dmSize = SizeOf (dmEcran)
dmEcran\dmFields = #DM_PELSWIDTH|#DM_PELSHEIGHT|#DM_BITSPERPEL|#DM_DISPLAYFREQUENCY
dmEcran\dmPelsWidth = RezX
dmEcran\dmPelsHeight = RezY
dmEcran\dmBitsPerPel = NbCoul
dmEcran\dmDisplayFrequency = Frequence
If Memoriser=1 : Memoriser= #CDS_UPDATEREGISTRY | #CDS_NORESET : Else : Memoriser= #CDS_FULLSCREEN : EndIf
dmx = ChangeDisplaySettings_ (@dmEcran,Memoriser)
ProcedureReturn dmx
Else
ProcedureReturn 1
EndIf
EndProcedure
; EPB
perso, j'aime bien la version API windows
elle est plus clair a lire , je trouve
ici un dernier exemple , qui prends en compte 3 timer ensemble
Code : Tout sélectionner
Declare TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Enumeration
#timer_1
#timer_2
#timer_3
EndEnumeration
If OpenWindow(0, 100, 100, 100, 100,"", #PB_Window_SystemMenu|#PB_Window_SizeGadget)
Handle = WindowID(0)
SetTimer_(Handle, #timer_1, 1000, @TimerProc()) ; envoie un evenement toutes les 1000 millisecondes ; en fait on prepare un timer qui enverra cette evenement
SetTimer_(Handle, #timer_2, 100, @TimerProc()) ; envoie un evenement toutes les 200 millisecondes ; en fait on prepare un timer qui enverra cette evenement
SetTimer_(Handle, #timer_3, 3000, @TimerProc()) ; envoie un evenement toutes les 3000 millisecondes ; en fait on prepare un timer qui enverra cette evenement
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
; cette procedure contient les actions a effectuer des 3 timers
Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Select uMsg
Case #WM_TIMER
Select idEvent
Case #timer_1
Debug "le timer---------------1 seconde"
; Ici, le code à executer toutes les secondes
beep_(440,100)
Case #timer_2
Debug "le timer 0.1 secondes"
; Ici, le code à executer toutes les 200 millisecondes
Case #timer_3
Debug "le timer ------------------------------------3 secondes"
beep_(880,100)
; Ici, le code à executer toutes les 3 secondes
EndSelect
EndSelect
EndProcedure
; EPB
Re: Pour YOGI
Aie, aie aie, directement les APIZorro a écrit : perso, j'aime bien la version API windows
elle est plus clair a lire , je trouve

Tu veux nous le dégouter de PB à vie, notre Yogi ?

Déjà qu'il remet à demain voir à 2 mois chaque démarrage

Ça:
Code : Tout sélectionner
Procedure SetResolution(RezX, RezY, NbCoul, Frequence, Memoriser)
; si SetResolution=2 la résolution est identique à l'actuelle, si 1 erreur lors de la recherche des infos, sinon regarder #DISP_CHANG_...
dm.DEVMODE
If EnumDisplaySettings_ (0, -1, @dm)
If RezX = dm\dmPelsWidth And RezY = dm\dmPelsHeight And NbCoul = dm\dmBitsPerPel And Frequence=dm\dmDisplayFrequency : ProcedureReturn 2 : EndIf
dmEcran.DEVMODE
dmEcran\dmSize = SizeOf (dmEcran)
dmEcran\dmFields = #DM_PELSWIDTH|#DM_PELSHEIGHT|#DM_BITSPERPEL|#DM_DISPLAYFREQUENCY
dmEcran\dmPelsWidth = RezX
dmEcran\dmPelsHeight = RezY
dmEcran\dmBitsPerPel = NbCoul
dmEcran\dmDisplayFrequency = Frequence
If Memoriser=1 : Memoriser= #CDS_UPDATEREGISTRY | #CDS_NORESET : Else : Memoriser= #CDS_FULLSCREEN : EndIf
dmx = ChangeDisplaySettings_ (@dmEcran,Memoriser)
ProcedureReturn dmx
Else
ProcedureReturn 1
EndIf
EndProcedure
Code : Tout sélectionner
OpenScreen(800, 600, 32, "")
Code : Tout sélectionner
CloseScreen()

Code : Tout sélectionner
Enumeration
#Window
#timer
#ball
EndEnumeration
Structure ball
x.l
y.l
sensy.l
EndStructure
;
;Declare SetResolution(RezX, RezY, NbCoul, Frequence, Memoriser) ; si SetResolution=2 la résolution est identique à l'actuelle, si 1 erreur lors de la recherche des infos, sinon regarder #DISP_CHANG_...
ExamineDesktops()
Global x_ecran1=DesktopWidth(0) ; on note la resolution actuelle
Global y_ecran1=DesktopHeight(0) ; on note la resolution actuelle
;SetResolution(800,600,32,60,1) ; on force la resolution en 800x600
; remplacé par OpenScreen(800, 600, 32, "") après InitSprite
ExamineDesktops()
Global x_ecran=DesktopWidth(0) ; recupe la resolution changé pour le jeux
Global y_ecran=DesktopHeight(0); recupe la resolution changé pour le jeux
Dim ball.ball(1)
ball(1)\x =x_ecran/2
ball(1)\y=y_ecran
ball(1)\sensy.l=-32 ; sens de deplacement de la balle ( monte )
Global gachette.b,compteur_de_tir
InitSprite():InitKeyboard()
; hop
OpenScreen(800, 600, 32, "")
If OpenWindow(#Window, 0, 0, x_ecran, y_ecran,"", #PB_Window_BorderLess )
OpenWindowedScreen(WindowID(#Window),0,0,x_ecran, y_ecran,1,0,0)
StickyWindow(#window,1)
; ********** creation du sprite ********************
CreateSprite(#ball,32,32)
StartDrawing(SpriteOutput(#ball))
Circle(16,16,16,RGB(255,255,0))
StopDrawing()
; **********************************************
AddWindowTimer(#Window, #timer, 1000)
SetFrameRate(60)
; *********** boucle principale ******************************************
Repeat
ExamineKeyboard()
If compteur_de_tir>50
Beep_(440,100)
gachette.b=0 ; on a arreté le tir parceque le compteur est superieur a 10
; mais le timer tourne toujours ..... ;o)
EndIf
If gachette.b=1 ; le timer a declenché la gachette
ball(1)\y=ball(1)\y+ball(1)\sensy.l
If ball(1)\y<0
ball(1)\y=y_ecran
gachette.b=0 ; la balle est arrivé en haut on la remet a sa place, et la gachette reviens a sa place
EndIf
Else
ball(1)\y=y_ecran
gachette.b=0 ; on remet la gachette a zero pour le prochain timer
EndIf
; ******************* les events *****************************************
Select WaitWindowEvent(2) ; le 20 permet de rendre la main au system , sinon il faut creer un evenement pour faire bouger la balle ( en bougeant la souris par ex )
Case #PB_Event_Timer ; un evenement timer a lieu
If EventTimer() = #timer; il s'agit de notre timer (on peut bien sur en avoir plusieurs )
;Debug "--------------------1 seconde"
; Ici, le code à executer toutes les secondes
compteur_de_tir=compteur_de_tir+1 ; on incrmente le nombre de tir , pour pouvoir l'arreter
gachette.b=1
EndIf
EndSelect
; CallDebugger
DisplaySprite(#ball,ball(1)\x,ball(1)\y)
FlipBuffers()
ClearScreen(RGB(0,0,0))
Until KeyboardPushed(#PB_Key_Escape) Or Event=#PB_Event_CloseWindow
; **********************************************************************
EndIf
;
;SetResolution(x_ecran1,y_ecran1,32,60,1) ; on remet la resolution du debut !!
CloseScreen()
Reste encore Beep_ pour lequel PB n'a toujours pas de fonction interne


Re: Pour YOGI
il est sous Linux, de toutes façons, il n'utilisera pas la version API
mais c'est quand meme bien de la donner cette methode, pour ceux qui viendront plus tard sur ce topic
et qui sont sous Windows
la procedure que je donne, n'existe pas en PB !
elle permet de changer la resolution de ton ecran !!
de changer Physiquement la resolution de l'ecran , comme lorsque tu change la resolution en passant par le menu
Windows ou de ta carte graphique !!
pour toute forme de programme (graphique ou pas ! )
dans l'exemple , je passe l'ordi en 800x600 pour la demo de la balle
puis je remet la resolution de depart de ton ordi ,
cette procedure est indispensable pour faire executer un jeux dans une résolution inferieur
a la résolution de travail de ton bureau .... mais c'est vrais que openScreen() fait la meme chose pour un ecran
mais pas pour une application a base de gadget() (canvas, openwindowedScreen ect..)
je tiens a m'excusé d'avoir dit une betise tout a l'heure a propos de openScreen()

mais c'est quand meme bien de la donner cette methode, pour ceux qui viendront plus tard sur ce topic
et qui sont sous Windows
[reedit] Text modifié !Marc56 a écrit : Il y a tout ce qu'il faut dans la lib interne Screen pour gérer les modes écran (et surtout c'est valable quelque soit l'OS)
Reste encore Beep_ pour lequel PB n'a toujours pas de fonction interne![]()
la procedure que je donne, n'existe pas en PB !
elle permet de changer la resolution de ton ecran !!
de changer Physiquement la resolution de l'ecran , comme lorsque tu change la resolution en passant par le menu
Windows ou de ta carte graphique !!
pour toute forme de programme (graphique ou pas ! )
dans l'exemple , je passe l'ordi en 800x600 pour la demo de la balle
puis je remet la resolution de depart de ton ordi ,
cette procedure est indispensable pour faire executer un jeux dans une résolution inferieur
a la résolution de travail de ton bureau .... mais c'est vrais que openScreen() fait la meme chose pour un ecran
mais pas pour une application a base de gadget() (canvas, openwindowedScreen ect..)
je tiens a m'excusé d'avoir dit une betise tout a l'heure a propos de openScreen()


Dernière modification par Zorro le ven. 28/oct./2016 13:29, modifié 2 fois.
Re: Pour YOGI
bonjour messieurs !
et bien chouette tout cela ! j'attends des news d'un groupe de zik pour un vidéo clip à leur faire en janvier 2017, j'attends des nouvelles d'une amie pour la mise en son d'un court métrage de mon cru et stap zou je vois vos codes
bref l'après midi pour cela. grand merci donc à tous les deux ! sinon donc faire du fullscreen en 800x600 je vais étudier cela aussi car ça m'intéresse pour mon code mais plus tard, à la finalité
très bon après midi à tous, j'ai à faire pendans deux mois alors ^^
stéphane
et bien chouette tout cela ! j'attends des news d'un groupe de zik pour un vidéo clip à leur faire en janvier 2017, j'attends des nouvelles d'une amie pour la mise en son d'un court métrage de mon cru et stap zou je vois vos codes

très bon après midi à tous, j'ai à faire pendans deux mois alors ^^
stéphane
hop ici grosse tour a moué: pentium G3258 à 3.20ghz + 16go de ram + 650gtx
sinon laptop bout de plastique 2 x centrino 1.8 ghz + 4 go de ram
Le tout sous Deepin OS 64b le bonheur
et plein de virtualbox 
sinon laptop bout de plastique 2 x centrino 1.8 ghz + 4 go de ram
Le tout sous Deepin OS 64b le bonheur


Re: Pour YOGI
bon, verification faite
Marc56 tu as raison !
openScreen change la resolution de l'ordi !!!
ben je viens de le decouvrir !!
il me semble pourtant qu'a une epoque ce n'etait pas le cas ... mon monitor a tube cathodique ne faisait pas CLic-clic
lorsque j'utilisais OpenScreen()
bon , il n'en reste pas moins, que cette fonction (SetResolution() ) permet de changer la résolution de l'ordi
et ça c'est cool
me cherchez pas , je suis parti , loin, tres loin ------------> . <---------- la bas !
Marc56 tu as raison !
openScreen change la resolution de l'ordi !!!
ben je viens de le decouvrir !!

il me semble pourtant qu'a une epoque ce n'etait pas le cas ... mon monitor a tube cathodique ne faisait pas CLic-clic
lorsque j'utilisais OpenScreen()
bon , il n'en reste pas moins, que cette fonction (SetResolution() ) permet de changer la résolution de l'ordi
et ça c'est cool

me cherchez pas , je suis parti , loin, tres loin ------------> . <---------- la bas !

Re: Pour YOGI
Ne vas pas trop loin, tu pourrais te perdre en route !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !