Page 8 sur 9

Re: Pour YOGI

Publié : ven. 28/oct./2016 16:16
par Marc56
openScreen change la resolution de l'ordi !!!
ben je viens de le decouvrir !! :roll:
C'est pour ça que je conseille (pas à toi, mais aux nouveaux) de regarder d'abord la doc (Dixit, je sais plus qui: « La solution est au bout du doigt: la touche F1 ») avant de googeuliser (google donnant par défaut les réponses les plus lues avant les plus récentes et comme PB a 16 ans, un tas de trucs remontent alors qu'ils sont maintenant implémentés directement)

Combien de fonctions actuellement dan PB ? plus de 2000 je crois 8O
(mais je voudrais bien un "Bip" natif, une fonction pour créer un raccourci, et que NextDirectoryEntry sache suivre les sous-répertoires, 'steplé, Fred :wink: )
il me semble pourtant qu'a une epoque ce n’était pas le cas ... mon monitor a tube cathodique ne faisait pas CLic-clic
lorsque j'utilisais OpenScreen()
Ah, le doux "clong" de l'écran multisynchrone (et les autres bruits quand il arrivait pas à changer). Mais c'était déjà bien mieux que le génération précédente qui se coinçait et qu'il fallait parfois éteindre, lui donner des "baffes" au dessus et sur les côtés puis rallumer :mrgreen:

Nous sommes des dinausaures :|

Re: Pour YOGI

Publié : ven. 28/oct./2016 16:26
par majikeyric
Yogi, il serait peut être temps que tu définisses tes priorités et t'y mettes vraiment ou alors laisser tomber car t'excuser tous les 3 posts ça va un moment.... :mrgreen:

Re: Pour YOGI

Publié : ven. 28/oct./2016 16:29
par Zorro
Marc56 a écrit :Ah, le doux "clong" de l'écran multisynchrone (et les autres bruits quand il arrivait pas à changer). Mais c'était déjà bien mieux que le génération précédente qui se coinçait et qu'il fallait parfois éteindre, lui donner des "baffes" au dessus et sur les côtés puis rallumer :mrgreen:

Nous sommes des dinausaures :|
ou caremment qui fumait!! le depassement de la resolution etait mortel pour les monitor de cette epoque :lol:

Re: Pour YOGI

Publié : ven. 28/oct./2016 17:42
par yogi
bonsoir oui désolé plantage de deepin linux je suis en train d'installer opensuse leap 42.2 rc1
bref une demi heure et je m'y mets

désolé encore

Re: Pour YOGI

Publié : ven. 28/oct./2016 18:38
par SPH
yogi a écrit :bref une demi heure et je m'y mets
Ca fait 10 fois que tu dois t'y mettre :mrgreen:

Re: Pour YOGI

Publié : ven. 28/oct./2016 19:00
par yogi
hop suis dessus ^^
j'ai piqué un starfield et vais essayer de mettre dans un timer de 3s
zou c'est parti

Re: Pour YOGI

Publié : ven. 28/oct./2016 19:23
par Ar-S
le timer n'est pas vraiment nécessaire pour faire un starfield. C'est plutôt le temps que va durée ton starfield qui pourrait être géré avec le timer.
Ton starfield va être en mouvement via une constante vitesse et le loop des étoiles traitée grace aux coords X ou Y selon la direction de tes etoiles.

Code : Tout sélectionner

Etoile_x = 0 ; etoile a gauche de l'ecran
Etoile_vitesse = 2 ; que tu peux augmenter pour accélérer la vitesse
Dans ta boucle d'affichage repeat ... until
Etoile_x + Etoile_Vitesse
;Sur ton ecran de 800 px : 
si etoile_x = 801 alors etoile_x = -1 par exemple.

Re: Pour YOGI

Publié : ven. 28/oct./2016 19:25
par yogi
hop je m'y remets demain mais voilà mon bouzin

Code : Tout sélectionner

;--- Initilisation :
EnableExplicit


If InitSprite()=0 Or InitKeyboard()=0
  MessageRequester("Erreur", "Impossible d'initialiser le jeux  ")
  End
EndIf
;--- Les Constantes :
Enumeration Windows
  #Main_Window
  #TIM
  #Etoile0
  #Etoile1
EndEnumeration


Global Duree = 1000 ; durrée en millisec donc là on part sur un timer de 1 sec
  
LoadSprite(0, #PB_Compiler_Home + "test4.png")

;--- Déclaration des procedures:
;--- Procedure pour le dessin des 2 étoiles
Declare CreationEtoiles()
;---;--- Initialisation des paramètres de départ des étoiles
Declare Initialisation()
;--- Deplacement des étoiles
Declare Deplacement()



;--Structure pour les infos des étoiles
Structure NewSprite
  Sprite.i
  PosX.i
  PosY.i
  Vitesse.i
  Id.b
EndStructure


;--- Gestion des étoiles
;---Nombre d'étoiles
#MaxEtoiles= 4990
;---Création d'un tableau pour les étoiles du scrolling
Global Dim etoiles.NewSprite(#MaxEtoiles)

;--- Variables globales diverses
ExamineDesktops()
Global gEvent,gWidth  = DesktopWidth(0),gHeight = DesktopHeight(0),gI

;---Création de la surface du jeu
OpenWindow(#Main_Window,0,0,gWidth,gHeight,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Main_Window),0,0,gWidth,gHeight)



;---Affichage des procedures :
CreationEtoiles()
Initialisation()
;---Boucle principale du jeux
Repeat
  Event = WaitWindowEvent()
  If Event = #PB_Event_Timer And EventTimer() = #TIM
        Toutes les sec il va se passer ça !
        Value = (Value + 5) % 100
        DisplaySprite (0, value, 500)      
      EndIf    
  Repeat
    gEvent=WindowEvent()
    Select gEvent
      Case #PB_Event_CloseWindow
        End
    EndSelect
  Until gEvent=0
  ;--- Partie 2D
  ClearScreen(RGB(0, 0, 0))
  ;--- Deplacement des étoiles pour le scrolling
  Deplacement()
 
  ExamineKeyboard()
 
       
       
   
     
     
     
     
     
     

 
  FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)



;--- les procédures :
;---Dessins des 2 étoiles
Procedure CreationEtoiles()
  CreateSprite(#Etoile0,2,2)
  CreateSprite(#Etoile1,2,2)
  ;---Dessin de l'étoile blanche
  StartDrawing(SpriteOutput(#Etoile0))
  Box(0, 0, 2, 2, $FFFFFF)
  StopDrawing()
  ;--Dessin de l'étoile grise
  StartDrawing(SpriteOutput(#Etoile1))
  Box(0, 0, 2, 2, $A9A9A9)
  StopDrawing()
EndProcedure
;--- Initialisation des paramètres de départ des étoiles
Procedure Initialisation()
  For gI = 0 To #MaxEtoiles
    With etoiles(gI)
      \PosY = Random(gHeight)
      \PosX = Random(gWidth,0)
      \Id = Random(1)
      \Vitesse = Random(18,2)
    EndWith
  Next
EndProcedure
;--- Deplacement des étoiles
Procedure Deplacement()
  For gI = 0 To #MaxEtoiles
    With etoiles(gI)
      DisplaySprite(\Id,\PosX,\PosY)
      \PosY + \Vitesse
      If \PosY >= gWidth
        \PosY - gWidth
      EndIf
    EndWith
  Next
EndProcedure
l'idée est de faire bouger une sprite dans le starfield mais je tatouille et je débute. bref Event n'est pas trouvé semble t il

je vais encore tatouiller un peu après avoir COMPLÈTEMENT BIEN installé purebasic

toutes mes excuses je débute

stéphane

Re: Pour YOGI

Publié : ven. 28/oct./2016 19:59
par yogi
bon pas de 3d dans ma config linux mais je sais que cela vient des chemins de 3drequester.pb etc

je vais m'y remettre plus tard, essayer de comprendre par vos précédents script ce qui ne va pas.
tapez pas trop fort je suis débutant :)

très bon week end à tous

stéphane

Re: Pour YOGI

Publié : ven. 28/oct./2016 20:53
par Zorro
ton code juste corrigé

pas chercher a optimiser ;)

Code : Tout sélectionner

;--- Initilisation :
;EnableExplicit


If InitSprite()=0 Or InitKeyboard()=0
		MessageRequester("Erreur", "Impossible d'initialiser le jeux  ")
		End
EndIf
;--- Les Constantes :
Enumeration Windows
		#Main_Window
		#TIM
		
EndEnumeration
Enumeration
		#Etoile0
		#Etoile1
EndEnumeration


Global Duree = 1000 ; durrée en millisec donc là on part sur un timer de 1 sec

;--- Déclaration des procedures:
;--- Procedure pour le dessin des 2 étoiles
Declare CreationEtoiles()
;---;--- Initialisation des paramètres de départ des étoiles
Declare Initialisation()
;--- Deplacement des étoiles
Declare Deplacement()



;--Structure pour les infos des étoiles
Structure NewSprite
		Sprite.i
		PosX.i
		PosY.i
		Vitesse.i
		Id.b
EndStructure


;--- Gestion des étoiles
;---Nombre d'étoiles
#MaxEtoiles= 4990
;---Création d'un tableau pour les étoiles du scrolling
Global Dim etoiles.NewSprite(#MaxEtoiles)

;--- Variables globales diverses
ExamineDesktops()
Global gEvent,gWidth  = DesktopWidth(0),gHeight = DesktopHeight(0),gI

;---Création de la surface du jeu
OpenWindow(#Main_Window,0,0,gWidth,gHeight,"",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Main_Window),0,0,gWidth,gHeight)

LoadSprite(0, #PB_Compiler_Home + "test4.png")



;---Affichage des procedures :
CreationEtoiles()
Initialisation()
;---Boucle principale du jeux
Repeat
		Event = WaitWindowEvent(2)
		If Event = #PB_Event_Timer And EventTimer() = #TIM
				;		Toutes les sec il va se passer ça !
				Value = (Value + 5) % 100
				DisplaySprite (0, value, 500)     
		EndIf   
		Repeat
				gEvent=WindowEvent()
				Select gEvent
				Case #PB_Event_CloseWindow
						End
				EndSelect
		Until gEvent=0
		;--- Partie 2D
		ClearScreen(RGB(0, 0, 0))
		;--- Deplacement des étoiles pour le scrolling
		Deplacement()
		
		ExamineKeyboard()
		
		
		
		
		
		
		
		
		
		
		
		
		FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)



;--- les procédures :
;---Dessins des 2 étoiles
Procedure CreationEtoiles()
		CreateSprite(#Etoile0,2,2)
		CreateSprite(#Etoile1,2,2)
		;---Dessin de l'étoile blanche
		StartDrawing(SpriteOutput(#Etoile0))
				Box(0, 0, 2, 2, $FFFFFF)
		StopDrawing()
		;--Dessin de l'étoile grise
		StartDrawing(SpriteOutput(#Etoile1))
				Box(0, 0, 2, 2, $A9A9A9)
		StopDrawing()
EndProcedure
;--- Initialisation des paramètres de départ des étoiles
Procedure Initialisation()
		For gI = 0 To #MaxEtoiles
				With etoiles(gI)
						\PosY = Random(gHeight)
						\PosX = Random(gWidth,0)
						\Id = Random(1)
						\Vitesse = Random(18,2)
				EndWith
		Next
EndProcedure
;--- Deplacement des étoiles
Procedure Deplacement()
		For gI = 0 To #MaxEtoiles
				With etoiles(gI)
						DisplaySprite(\Id,\PosX,\PosY)
						\PosY + \Vitesse
						If \PosY >= gWidth
								\PosY - gWidth
						EndIf
				EndWith
		Next
EndProcedure


Re: Pour YOGI

Publié : ven. 28/oct./2016 21:15
par yogi
oua merci monsieur zorro !

le fait est que j'ai à comprendre la chose maintenant

ya plus qu'a ! tiens je m'y mets :)

très bonne soirée ! et merci

Re: Pour YOGI

Publié : sam. 29/oct./2016 14:45
par yogi
bonjour zorro bonjour a tous

bon le chemin vers mon sprite va être changé je pense, il n'apparaît pas à l'écran mais je vais tatouiller tout ceci :)
bref ya plus qu'a après quelques heures de jardinage dans la maison familiale

a taleur donc pour que je te dise que j'ai capté la chose, c'est pas gagné :)

stéphane qui vous remercie tous

hop tiens une trappe

Re: Pour YOGI

Publié : sam. 29/oct./2016 20:29
par Zorro
ton sprite ne s'affiche pas pour 3 raisons

la premiere : tu cherches a l'afficher dans un evenement de timer
cependant, tu n'a pas creer de timer !!!

Code : Tout sélectionner

AddWindowTimer(#Main_Window, #TIM, 1000) 
apres la creation de fenetre (voir code plus loin )


la deuxieme, tu charges un sprite (donc une image ) mais tu n'utilise aucun decodeur d'image
mettre

Code : Tout sélectionner

UsePNGImageDecoder()
en debut de code si tu charges un Png par exemple

la troisieme , dans ton evenement timer , qui est sensé se produire chaque seconde , tu n'affiches pas ton sprite
dans le cas d'un evenement de timer, il est desynchro avec l'affichage de ton ecran
tu affiches bien les etoiles avec FlipBuffer()
mais que se passe t'il lorsqu'il y a un event de timer ?
ben ton sprite est posé a la coordonée que tu veux , puis .....il se passe du temps
et a la fin tu affiche les etoiles avec le flipbuffer ....

mais ton sprite lui , ben il n'a pas eu l'affichage a cause de la desynchro du timer
il faudrai donc ajouter un autre flipbuffer() dans la partie de l'evenement du timer ...
cependant tu aurai un sprite clignotant, puisque affiché Seulement SI event Timer detecté ..... pas terrible :)


de plus, 2 flipbuffer() dans un meme code, ben vaut mieux eviter, sinon bonjour les clignotements !


je te joint ton code un peu mieux modifié , mais sans utiliser de timer , (pourquoi t’embêter avec un timer ?? alors que tu ne semble pas maîtriser les bases ??? )

j'ai aussi supprimé une boucle Eventwindow() qui ne sert a rien ... :)


voici donc ton code sans utiliser le timer, (mais celui ci est present quand meme , car je n'ai pas voulu l'effacer , puisque je ne sais pas ce que tu veux en faire )

ps: ce code recupere un sprite sur l'internet ,comme ça tout le monde peut le tester sans avoir ton sprite

tu pourra indiquer le chemin vers ton sprite en desactivant
ma procedure LoadSprite_net() et en remettant la tienne (mise en commentaire )


voici le code :

Code : Tout sélectionner


;--- Initilisation :
;EnableExplicit
UsePNGImageDecoder()


If InitSprite()=0 Or InitKeyboard()=0
		MessageRequester("Erreur", "Impossible d'initialiser le jeux  ")
		End
EndIf





;--- Les Constantes :
Enumeration Windows
		#Main_Window
		#TIM
		#Sprite
EndEnumeration
Enumeration
		#Etoile0
		#Etoile1
EndEnumeration

Global Duree = 1000 ; durrée en millisec donc là on part sur un timer de 1 sec
;--- Déclaration des procedures:
;--- Procedure pour le dessin des 2 étoiles
Declare CreationEtoiles()
;---;--- Initialisation des paramètres de départ des étoiles
Declare Initialisation()
;--- Deplacement des étoiles
Declare Deplacement()
Declare.l LoadSprite_net(Adr$,nom_fichier$)

;--Structure pour les infos des étoiles
Structure NewSprite
		Sprite.i
		PosX.i
		PosY.i
		Vitesse.i
		Id.b
EndStructure




;--- Gestion des étoiles
;---Nombre d'étoiles
#MaxEtoiles= 4990
;---Création d'un tableau pour les étoiles du scrolling
Global Dim etoiles.NewSprite(#MaxEtoiles)
;--- Variables globales diverses
ExamineDesktops()
Global gEvent
Global gWidth  = DesktopWidth(0)
Global gHeight = DesktopHeight(0)-70 ; tenir compte de la barre de titre de la fenetre et de la barre des taches
Global gI
;---Création de la surface du jeu
OpenWindow(#Main_Window,0,0,gWidth,gHeight,"",#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(#Main_Window),0,0,gWidth,gHeight)
AddWindowTimer(#Main_Window, #TIM, 1000) ; <<<<<<<<< T'AS OUBLIé DE METTRE UN TIMER !!!! puisque tu veux un timer, il faut le mettre
; if LoadSprite(#Sprite, "test4.png")
;Else
;		MessageRequester("erreur","pas pu charger le sprite")
;Endif
Global Sprite_net=LoadSprite_net("http://individual.icons-land.com/IconsPreview/3D-Food/PNG/128x128/FastFood_Hamburger.png","burger.png")
if Sprite_net=0
		MessageRequester("erreur","pas pu charger le sprite, recommence")
		End
Endif
;---Affichage des procedures :
CreationEtoiles()
Initialisation()
;---Boucle principale du jeux
Repeat
		
		Select WaitWindowEvent(2)
		Case  #PB_Event_Timer 
				
				; If  EventTimer() = #TIM
				; 						;      Toutes les sec il va se passer ça !
				; 						;Value = (Value + 5) % 100
				; 					
				; 						TransparentSpriteColor(Sprite_net, rgb(255,255,255))
				; 						DisplayTransparentSprite (Sprite_net, Value,gHeight/2)     ; en relatif c'est mieux
				; 						FlipBuffers() ; <<< si tu veux qu'on vois le sprite, il faut demander l'affichage
				; 				EndIf   
				
				
		Case #PB_Event_CloseWindow
				End
		EndSelect
		;--- Partie 2D
		ClearScreen(RGB(0, 0, 0))
		;--- Deplacement des étoiles pour le scrolling
		Deplacement()
		ExamineKeyboard()
		
		; pas besoin de timer pour aficher un sprite
		angle.f=angle.f+1
		;Value = (Value + 5) % 100
							
								Value=(gWidth/2)+(gWidth/2)* Sin(angle*#PI/180)
								if angle=360:angle=1:endif
								TransparentSpriteColor(Sprite_net, rgb(255,255,255))
								DisplayTransparentSprite (Sprite_net, Value,gHeight/2)     ; en relatif c'est mieux
		
		
		
		
		
		FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)

;--- les procédures :
;---Dessins des 2 étoiles
Procedure CreationEtoiles()
		CreateSprite(#Etoile0,2,2)
		CreateSprite(#Etoile1,2,2)
		;---Dessin de l'étoile blanche
		StartDrawing(SpriteOutput(#Etoile0))
				Box(0, 0, 2, 2, $FFFFFF)
		StopDrawing()
		;--Dessin de l'étoile grise
		StartDrawing(SpriteOutput(#Etoile1))
				Box(0, 0, 2, 2, $A9A9A9)
		StopDrawing()
EndProcedure
;--- Initialisation des paramètres de départ des étoiles
Procedure Initialisation()
		For gI = 0 To #MaxEtoiles
				With etoiles(gI)
						\PosY = Random(gHeight)
						\PosX = Random(gWidth,0)
						\Id = Random(1)
						\Vitesse = Random(18,2)
				EndWith
		Next
EndProcedure
;--- Deplacement des étoiles
Procedure Deplacement()
		For gI = 0 To #MaxEtoiles
				With etoiles(gI)
						DisplaySprite(\Id,\PosX,\PosY)
						\PosY + \Vitesse
						If \PosY >= gWidth
								\PosY - gWidth
						EndIf
				EndWith
		Next
EndProcedure
;
Procedure.l LoadSprite_net(Adr$,nom_fichier$)
		; By Dobro
		;Adr$=adresse du fichier image a charger
		;nom_image$ = nom qu'on donne a cette image
		; la procedure renvoi l'Id de l'image recupéré ou False en cas d'erreur
		InitNetwork()
		If ReceiveHTTPFile(Adr$, GetTemporaryDirectory()+nom_fichier$)
				Sprite=LoadSprite(#pb_any, GetTemporaryDirectory()+nom_fichier$)
				DeleteFile(GetTemporaryDirectory()+nom_fichier$)
				ProcedureReturn Sprite
		Else
				ProcedureReturn #false
		EndIf
EndProcedure


; Epb

Re: Pour YOGI

Publié : dim. 30/oct./2016 9:04
par yogi
bonjour zorro

oui en effet je ne sais pas encore les bases, c'était juste une question lancée par rapport a lua par hollywood mal que peut être tu connais ? bref je vais m'y remettre lundi, aujourd'hui c'est route pour la toussaint bref oui je suis tout a fait d'accord avec toi.

merci beaucoup pour ton aide précieuse je m'y remets demain et essaye tout cela et essaye de le comprendre sans poster de nouveau message car j'avance lentement :)

très bonne journée à toi :)


edit: je tiens à vous présenter mes excuses, j'avance lentement, j'ai tout mon temps libre pour purebasic maintenant mais je ne vais plus vous saouler avec tous ces messages. je reviendrai vers vous quand j'aurai compris les boucles et l'affichage de png par exemple avec definition du format png comme présenté plus haut. toutes mes excuses donc pour mon tempérament enthousiaste et mon mauvais niveau de code :( très bon dimanche martin à tous et je reviendrai avec des questions plus ... certaines car je dois déjà absorber tout ces codes. à bientôt donc mais plus tard, je dois faire déjà plein d'éssais.

stéphane

Re: Pour YOGI

Publié : ven. 02/déc./2016 17:12
par yogi
bonsoir à tous

juste pour vous dire que je n'abandonne pas mais j'étais a donf de formation TSSI et donc maintenant que c'est presque sur je vais pouvoir me plonger dans ce que je veux faire comme code. toutes mes excuses pour avoir monopolisé du temps et votre attention mais je ne lâche pas l'affaire.

très bonne soirée à tous

stéphane :arrow: :arrow: :arrow: :arrow: :arrow: :arrow: