Page 7 sur 9

Re: Pour YOGI

Publié : lun. 24/oct./2016 15:57
par Ar-S

Re: Pour YOGI

Publié : lun. 24/oct./2016 16:04
par 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

Re: Pour YOGI

Publié : mer. 26/oct./2016 17:23
par 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

Re: Pour YOGI

Publié : mer. 26/oct./2016 17:37
par Ar-S
Le timer est vraiment pas compliqué

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



Re: Pour YOGI

Publié : mer. 26/oct./2016 18:35
par yogi
coucou toi

ok je vais étudier cela :)
grand merci à toi

becos

Re: Pour YOGI

Publié : ven. 28/oct./2016 8:19
par Marc56
Exemple de timer avec une pendule

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
Même chose mais en méthode Bind...

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
Notes:
1. On peut mélanger les deux techniques
2. La méthode Bind... permet aussi de désactiver un évènement (avec UnBind... )

:wink:

Re: Pour YOGI

Publié : ven. 28/oct./2016 9:22
par Zorro
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

Publié : ven. 28/oct./2016 9:29
par 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

Re: Pour YOGI

Publié : ven. 28/oct./2016 9:39
par Zorro
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
oui c'est pareille !!

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
cela signifie que si un evenement de timer se presente , ce qui arrive chaque seconde , dans le code d'exemple )
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()))
fin de l'histoire :)

Re: Pour YOGI

Publié : ven. 28/oct./2016 9:47
par Zorro
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)

Code : Tout sélectionner

 gachette.b
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 :

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

Publié : ven. 28/oct./2016 10:51
par Marc56
Zorro a écrit : perso, j'aime bien la version API windows
elle est plus clair a lire , je trouve
Aie, aie aie, directement les API 8O
Tu veux nous le dégouter de PB à vie, notre Yogi ? :D
Déjà qu'il remet à demain voir à 2 mois chaque démarrage :P

Ç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
PB le fait directement avec ça:

Code : Tout sélectionner

OpenScreen(800, 600, 32, "")

Code : Tout sélectionner

CloseScreen()
Donc avec les fonctions internes à PB :wink:

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()
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 :|

:wink:

Re: Pour YOGI

Publié : ven. 28/oct./2016 12:32
par Zorro
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
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 :|

:wink:
[reedit] Text modifié !


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() :oops: :oops:

Re: Pour YOGI

Publié : ven. 28/oct./2016 12:44
par 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

Re: Pour YOGI

Publié : ven. 28/oct./2016 13:23
par Zorro
bon, verification faite

Marc56 tu as raison !

openScreen change la resolution de l'ordi !!!

ben je viens de le decouvrir !! :roll:

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 ! :roll:

Re: Pour YOGI

Publié : ven. 28/oct./2016 15:28
par Micoute
Ne vas pas trop loin, tu pourrais te perdre en route !