GAMOPAT
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

PURE BASIC - Le Topic officiel

+8
grostonton
Urbinou
ShiningBZH
Tryphon
goux.m
jmg49
Capitaine
Shaoth
12 participants

Page 6 sur 12 Précédent  1, 2, 3 ... 5, 6, 7 ... 10, 11, 12  Suivant

Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Urbinou Mar 8 Oct 2019 - 16:00

Tu n'avais pas (dé)coché des trucs dans les paramètres concernant le rescale ?

Urbinou
Docteur agrégé **
Docteur agrégé **

Nombre de messages : 12633
Date d'inscription : 12/02/2013

http://cambouisdelatari.wordpress.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Tryphon Mar 8 Oct 2019 - 16:01

drfloyd a écrit:en dernier recours oui, mais comme c'est juste pour afficher du texte banal, sans effet....

Tu t'en fous des effets. Tu sais, dans les jeux console, c'est comme ça qu'on fait, quel que soit le texte. Sur MD t'as même pas de police préchargée...
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Urbinou Mar 8 Oct 2019 - 16:13

Bah oui, mais là c'est sur pc, et c'est un truc de base qui devrait fonctionner, je peux comprendre qu'il veuille savoir pourquoi : )
Urbinou
Urbinou
Docteur agrégé **
Docteur agrégé **

Masculin Nombre de messages : 12633
Age : 56
Localisation : Liège, Belgique
Date d'inscription : 12/02/2013

http://cambouisdelatari.wordpress.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mar 8 Oct 2019 - 16:41

Après il suffit de pas zoomer mon ecran à 125%... mais bon sachant que ca bug si je le fais, ça me perturbe grave, ça compromet l'équilibre dans l'univers

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Urbinou Mar 8 Oct 2019 - 16:48

Ce n'est pas toi le problème, mais le public potentiel qui ne va pas changer le zoom de son bureau pour jouer à ton jeu.
Même si perso sur mon portable (17" full hd), j'ai troqué mon 115% contre une paire de lunettes de lecture Mr. Green
Urbinou
Urbinou
Docteur agrégé **
Docteur agrégé **

Masculin Nombre de messages : 12633
Age : 56
Localisation : Liège, Belgique
Date d'inscription : 12/02/2013

http://cambouisdelatari.wordpress.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Mar 8 Oct 2019 - 17:11

bon en mode fenetre (non screen pour le moment)

ceci fonctionne (code donné sur le Forum Purebasic )
je viens de tester en  100% et 125% le rendu est le meme
ne pas oublier de cocher dans les options du compilateur la case DPI....
Code:


Enumeration
  #Ma_fen
  #TXT
EndEnumeration


ExamineDesktops()
EcranX=DesktopWidth(0)
Ecrany =DesktopHeight(0)

Global KDPIX.d = 100/DesktopScaledX(100):Global KDPIY.d = 100/DesktopScaledY(100)
Global Ldef.d =  1920 * KDPIX.d  :Global Hdef.d = 1080 * KDPIY.d
Global definecrht.d =  EcranY * KDPIY
Global definecrlarg.d = Ecranx * KDPIX

Procedure X(lg.d)
  ProcedureReturn lg *(definecrlarg.d/Ldef.d)
EndProcedure

Procedure y(h.d)
  ProcedureReturn h *(definecrht.d /Hdef.d)
EndProcedure

FontID1 = LoadFont(30,"Tahoma",X(12))
OpenWindow( #Ma_fen,X(600),Y(200),X(400),Y(300),"Ma Fenêtre",#PB_Window_MinimizeGadget)
TextGadget(#TXT,X(2),Y(100),X(396),Y(25),"Enfin la résolution. C'est une révolution",#PB_Text_Center)
SetGadgetFont(#TXT,FontID1)
SetGadgetColor(#TXT,#PB_Gadget_BackColor,$1E69D2)
Repeat
  Event = WaitWindowEvent()
    
  
Until Event  = #PB_Event_CloseWindow
End


je vais tester en mode graphique ....
laisse moi un peut de temps, je risque d'etre interompu ....


Dernière édition par Dobro le Mar 8 Oct 2019 - 19:50, édité 1 fois
avatar
Dobro
Patient contaminé

Masculin Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Mar 8 Oct 2019 - 18:04

voila , je pense que ton probleme n'as rien a voir avec les DPI
mais c'est simplement lié au Facteur Zoom du Windowed Screen  ...

voici un petit code de test ,

tu vas redimenssionner la fenetre , et me dire si le probleme que tu rencontres concerne
comme pour cette exemple , le fait que la fonte suit la taille de la fenetre ??
et que toi tu voudrai que la fonte reste toujours a la meme taille quelque soit la taille de ta fenetre ! ??
si c'est ça, c'est simple a resoudre :)

Code:


Enumeration
 #font
 #win
 #bouton
 #sprite1
EndEnumeration



If InitSprite() = 0
 MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0)
 End
EndIf
If LoadFont(#font,"Comic sans Ms",14,#BOLD_FONTTYPE)
Else
 MessageRequester("erreur" ,"fonte pas chargée")
EndIf


If OpenWindow(#win, 0, 0, 220, 160, "Un écran dans une fenêtre...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered| #PB_Window_SizeGadget )
 ButtonGadget(#bouton, 170, 135, 45, 20, "Quitter")
 redimenssionnement_auto=#True
 If OpenWindowedScreen(WindowID(#win), 0, 0, 160, 160,redimenssionnement_auto,1,1,1)
 CreateSprite(#sprite1, 20, 20)
 If StartDrawing(SpriteOutput(#sprite1))
 Box(0, 0, 20, 20, RGB(255, 0, 155))
 Box(5, 5, 10, 10, RGB(155, 0, 255))
 StopDrawing() ;>
 EndIf;|
 
 Else
 MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
 End ;|
 EndIf
 Endif
 
 direction = 2
 Repeat
 ; Il est très important de traiter tous les évènements restants dans la file d'attente à chaque tour
 ;
 Repeat
 Event = WindowEvent()
 
 Select Event
 Case #PB_Event_SizeWindow ; en cas de redimenssionnement de la fenetre
; debug "ok"
 ; on colle le gadget bouton en bas a gauche
 rez_x=WindowWidth(#win)-5 ; on recup la resolution de la fenetre
 rez_y=WindowHeight(#win)-5 ; -5 pour laisser une petit espace entre le bouton et le bord fenetre
 larg_x=GadgetWidth(#bouton) ; recup la taille du bouton largeur et hauteur
 haut_y=GadgetHeight(#bouton)
 ; on deplace le bouton pour qu'il soit en bonne position
 ResizeGadget(#bouton, rez_x-larg_x, rez_y-haut_y, #pb_ignore, #Pb_ignore)
 Case #PB_Event_Gadget
 If EventGadget() = #bouton
 End
 EndIf
 
 Case #PB_Event_CloseWindow
 End
 EndSelect
 Until Event = 0
 
 FlipBuffers()
 ClearScreen(RGB(0, 0, 0))
 StartDrawing(ScreenOutput())
 DrawingFont(Fontid(#font))
 DrawText( 10,10,"Purebasic Power",RGB(255,255,0))
 StopDrawing()
 
 DisplaySprite(#Sprite1, x, x) ; le x,x c'est fait expres ;o)
 x + direction
 If x > 140 : direction = -2 : EndIf
 If x < 0   : direction =  2 : EndIf
 Delay(1)
 ForEver
 
 ; Epb
 
avatar
Dobro
Patient contaminé

Masculin Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mar 8 Oct 2019 - 20:15

Merci Professeur Dobro, je vais tester ça ce soir si je peux. C'est cool de vous avoir ici  Mr. Green (en complément du Professeur Tryphon, notre spécialiste MO6)

Je vous intégre d'office dans les crédits de COSMOS II, ainsi qu'en personnage dans le jeu, pour l'aide apportée, c'est un minimum.

Pour les royalties, on verra en fonction du succès mondial ou pas  Mr. Green

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mar 8 Oct 2019 - 20:56

Dobro, ton programme exemple a le meme probleme que mon jeu

En mode windows 125% le texte n'est plus proportionnel, j'ai fait une capture ecran :

PURE BASIC - Le Topic officiel - Page 6 Captu240
La fonte suit la taille de la fenetre, pas de soucis (et heureusement) , mais tu vois que POWER BASIC POWER deborde et ne tient plus dans la fenetre.

Idem pour le 1er code test, la police est surmentionnée quand je passe en 125%

Voilà mon probleme depuis le début

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Urbinou Mar 8 Oct 2019 - 21:06

Sinon pour info fais gaffe, il y a une loi qui interdit l’usage de la comics sans ms PURE BASIC - Le Topic officiel - Page 6 435303
Urbinou
Urbinou
Docteur agrégé **
Docteur agrégé **

Masculin Nombre de messages : 12633
Age : 56
Localisation : Liège, Belgique
Date d'inscription : 12/02/2013

http://cambouisdelatari.wordpress.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Mer 9 Oct 2019 - 9:59

bon apres reflexion

je me rends compte qu'il me manque des infos

le system d'exploitation de l'ordi qui deconne (qui a un affichage qui deconne)
la carte Graphique ?
la resolution employé (celle du bureau )
(j'attends ces reponses Merci )


pour ce qui concerne le premier code
ça ne devrai pas deconner , j'ai testé chez moi avec Nvidia a jour et Windows10 a jours
en 100% et 125% , pas de soucis (je suis aussi en permanence a 125% )

des membres du forum Purebasci on aussi testé le premier code, sans avoir de soucis
je pencherai donc pour un probleme lié a
1-- une version de windows ancienne (win 98 ,win 7 ?? )
2-- a un probleme de mise a jour de driver de ta carte Graphique , de DirectX ??
quelle version de DirectX ?? 

enfin , il y aura toujours une solution ... un peut plus lourde
mais ce qui semble évident c'est que l'ordinateur en question EST une exception
alors, je pose la question , est-ce que ça vaut le coup de se tordre l'esprit
pour UN ordinateur ???... jusqu'a preuve du contraire, j'ai pas vu d'autres personnes se plaindre ....

donc je met clairement en cause TON ordinateur
que ce soit un probleme de mise a jour, ne me surprendrai pas plus que ça
apres, il faut vraiment essayer de comprendre, ou se trouve le probleme
je doute fortement qu'il vienne de Purebasic
considerant que non seulement le Forum Français a testé la chose depuis longtemps
mais aussi le Forum Anglais (qui lui contient bien plus de membres (US,GB,Deuch,Russe) , membres qui bossent sur Purebasic, et ce probleme n'as jamais été rapporté .....  ou alors provenait d'un probleme que je soulève (mise a jour systeme , obsolescence etc...)


mais avant de dire que c'est mort,et que Purebasic c'est de la M** LOL,  verifie s'il te plait ton systeme completement

mise a jour Windows  <--- quel version ?

mise a jour Driver Carte Graph <--- quelle carte , quel numero de Driver ?


pour info ,j'ai
2 MSI "Gamer" FullHD mais avec un seven et un Win10
1 Asus sur seven Pro

pas de problemes !
avatar
Dobro
Patient contaminé

Masculin Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Mer 9 Oct 2019 - 11:42

bon , voici une solution 

le principe consiste a ecrire non pas le text directement sur la surface DirectX (le screen)
mais a ecrire notre text sur une image (cela aurai pu etre aussi un Sprite )


en principe tout les ordinateurs sous windows devraient pouvoir afficher une image au coordonées x,y , au meme endroit , mais je ne suis pas a l’abri de surprises éventuelles

donc ici j'ai crée 2 procedures, que je vais me servir comme de nouvelles fonctions...


CreateLineText(win,num,txt.s,coul)
qui sert a creer notre image avec le nouveau text ...
win=numero de la fenetre
num= numero du sprite qui va recevoir le text , considere le comme le numero de la ligne
txts.s = le text qu'n veux afficher
coul = la couleur du text

----------------------------------------------------
enfin la procedure qui permet l'affichage a l'ecran
WriteLineText(num,x,y,larg,haut)
num= numero de la ligne ( numero de l'image )
x,y = la coordonée ou afficher la ligne (permet une animation eventuelle )

comme je me sert de la taille de la fenetre pour creer l'image , en principe
ça devrai rentrer entierement

note qu'en Purebasic, on a l'habitude de bidouiller pour avoir des résultats
c'est pas exceptionnel de devoir se reecrire des fonctions pour obtenir un resultat
le langage est fait pour ça !! 

c'est pour ça que bien souvent on fait directement appel aux APIs du systeme...

voici le code a tester (on peut redimensionner la fenetre et voir le résultat )

Code:

Enumeration
      #font
      #win
      #bouton
      #sprite1
      #numero_ligne
EndEnumeration
Declare CreateLineText(win,num,txt.s,coul)
Declare  WriteLineText(num,x,y)

If InitSprite() = 0
      MessageRequester("Erreur", "Impossible d'ouvrir l'écran & l'environnement nécessaire aux sprites !", 0)
      End
EndIf
If LoadFont(#font,"Comic sans Ms",30,#BOLD_FONTTYPE)
Else
      MessageRequester("erreur" ,"fonte pas chargée")
EndIf

If OpenWindow(#win, 0, 0, 320, 200, "Un écran dans une fenêtre...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered| #PB_Window_SizeGadget )
      rez_x=WindowWidth(#win)-5 ; on recup la resolution de la fenetre
      rez_y=WindowHeight(#win)-5
      redimenssionnement_auto=#True
      If OpenWindowedScreen(WindowID(#win), 0, 0, rez_x, rez_y,redimenssionnement_auto,1,1,1)
            ; ******************* creation d'un ligne de text ********************
            CreateLineText(#win,#numero_ligne,"Purebasic Power",rgb(255,255,0))   
            ; ***************************************************************
            ; ************* Le sprite carré qui bouge ****************************
            CreateSprite(#sprite1, 20, 20)
            If StartDrawing(SpriteOutput(#sprite1))
                  Box(0, 0, 20, 20, RGB(255, 0, 155))
                  Box(5, 5, 10, 10, RGB(155, 0, 255))
                  StopDrawing() ;>
            EndIf;|
            Else
                  MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
            End ;|
            EndIf
      Endif
      ; ***********************************************************************
      directionx = 2 :directiony=2
      Repeat ; boucle Event
            Event = WaitWindowEvent(2)
            Select Event
                  Case #PB_Event_SizeWindow ; en cas de redimenssionnement de la fenetre      
                  
                  Case #PB_Event_CloseWindow
                        End
            EndSelect
            ; ******************* Affiche la ligne de text ************************
            StartDrawing(ScreenOutput())
                  WriteLineText(#numero_ligne,5,50) ; affiche la ligne de text
            StopDrawing()
            ; *****************************************************************
         
            x + directionx
            y + directiony
            
            If x >= (screenWidth()-20) : directionx = -2 : EndIf
            IF y>= (screenHeight() -20) :Directiony = -2 :Endif
            If x <= 0  : directionx = -directionx : EndIf
            If y <= 0:directiony = -directiony :Endif
               DisplaySprite(#Sprite1, x, y) ;affiche le sprite carré
            FlipBuffers()
            ClearScreen(rgb(255,255,255))
      ForEver
      
      ; ********************* Zone des Procedures *************************
      Procedure CreateLineText(win,num,txt.s,coul)         
            ;By Dobro            
            if Isimage(num)
                  FreeImage(num)
            Endif
            ; on dessine dans l'ecran la phrase a ecrire
            ; le but est de recuperer sa taille en pixel
            StartDrawing(ScreenOutput())
                  DrawingFont(Fontid(#font))
                  larg_text=TextWidth(txt.s)
                  haut_text=TextHeight(txt.s)
            StopDrawing()
            ; on a la taille en pixel , on creer l'image pour correspondre a la phrase
            CreateImage(num,larg_text,haut_text)
            
            ; maintenant on peut ecrire le text dans l'image qui viens d'etre adapté en taille
            StartDrawing(imageOutput(num))            
            DrawingFont(Fontid(#font))
                  DrawText( 1,1,txt.s,coul)
            StopDrawing()         
      EndProcedure
      Procedure WriteLineText(num,x,y)      
            ;By Dobro
            DrawImage(imageID(num),x,y)            ; on dessine simplement notre image, qui contient notre text
      EndProcedure
      
      
; Epb

 


j'ajoute que bien souvent, on se creer des bibliotheques de fonctions (de procedures)
qu'on peut appeler a la volée de plusieurs façons

soit on se creer un fichier "*.pbi" qui contient la collections de procedures, ce qui forme notre bibliotheque de fonctions

puis dans notre code on importe le fichier pour invoquer l'une des procedures qui nous intéresse

ou bien on peut aussi se faire une collections de "Modules" , qui sont une forme d'écriture de bibliothèque de fonctions
ça reviens quasi au meme que le systeme a base de PBI (avec import )

ou bien , on peut aussi se creer une "librairie"
il faut un utilitaire spécial pour ça , qui va creer un fichier Lib qu'on pose dans le dossier "UserLibrary" de purebasic
ainsi nos fonctions seront directement utilisables comme les autres fonctions du Purebasic !!
cela nous permet d'étendre le langage avec nos propres noms de fonctions , sans avoir a faire d'import ...

mais ce dernier point demande quand meme de connaitre Purebasic ..(pas reservé aux débutants )  ...

l’inconvénient c'est qu'une librairie ainsi faite, ne peux pas etre modifié !!
si Purebasic change de version , il faut recompiler la lib a la nouvelle version (pas toujours mais souvent .. )
ce qui peut occasionner des problemes de compatibilité par la suite ....

l'avantage on est proprietaire de notre librairie ... il n'y a a que celui qui a les sources, qui peut la modifier...

note quand meme , que le probleme que tu rencontres, est exceptionnel , et semble ne toucher QUE ton ordi ....


Dernière édition par Dobro le Ven 11 Oct 2019 - 17:13, édité 5 fois
avatar
Dobro
Patient contaminé

Masculin Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mer 9 Oct 2019 - 18:31

bon effectivement

J'ai essayé le 125% sur 2 autres PC et c'est bon

Vu que ca ne concerne que mon PC portable (meme si surement d'autres PC mal configurés aussi) et surtout que ca n'arrive qu'en mode 125%.... je considère que l'incident est clos !

le PC portable en question c'est un ASUS proc 4200 fanless de 2008 ecran 14' Full HD sous windows 10 à jour.

Merci beaucoup pour tous tes posts et recherches

Le texte sur un sprite ca peut me servir  thumleft

le dév peut continuer, les ceintures d'asteroides viennent d'apparaitre dans les systemes solaires cyclops

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mer 9 Oct 2019 - 19:33

Prof Dobro je ne vous lache pas

quel est l'equivalent de RANDOMIZE TIMER en Pure ?

C'est à dire réinitialiser le générateur de manière totalement imprévisible (grace au timer du pc)

Pour l'instant je ne trouve pas dans la doc en ligne

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Mer 9 Oct 2019 - 20:06

Pardon, je n'etais pas la cette aprem

Code:

For i= 1 to 10
 seed=RandomSeed(random(1000)) ; on utilise un Seed aleatoire
 debug random(100,1) ; on tire une chiffre aleatoire tiré de la liste Seed aleatoire aussi
NExt i


sinon pour recupe la valeur depuis le lancement du Pc
c'est  "ElapsedMilliseconds()" qui renvoi le nombre de millisecondes depuis le demarrage de la machine
on se sert de ça pour chronometrer aussi les routines

exemple :


Code:
;
 ; exemple d'utilisation comme chronomètre
 ;
 TempsDepart.q = ElapsedMilliseconds() ; Récupère la valeur actuelle
 Delay(1000) ; Attend 1000 millisecondes
 TempsEcoule.q = ElapsedMilliseconds()-TempsDepart ; La valeur 'TempsEcoule' devrait être d'environ 1000 millisecondes

 Debug "Temps écoulé : "+Str(TempsEcoule)+" millisecondes"
avatar
Dobro
Patient contaminé

Masculin Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mer 9 Oct 2019 - 20:19

ta premiere technique n'initialise pas vraiment le générateur, il poursuit une série en cours, ca ne fonctionne pas pour ma problematique.

En fait j'ai trouvé (grace à toi) : 

randomseed(elapsedmilliseconds()))

Parfait !

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Mer 9 Oct 2019 - 20:47

drfloyd a écrit:ta premiere technique n'initialise pas vraiment le générateur, il poursuit une série en cours, ca ne fonctionne pas pour ma problematique.

En fait j'ai trouvé (grace à toi) : 

randomseed(elapsedmilliseconds()))

Parfait !

en fait la premiere technique fonctionne bien aussi :)

car RandomSeed(Seed)
permet d'utiliser une liste de chiffes aleatoire

ont tire dans cette liste bien precise une serie de chiffre avec Random(100) par exemple

c'est vrais que si on fait
RandomSeed(1)

et debug Random(10) 
le chiffre tiré sera toujours le meme , puisqu'il est tiré de la meme liste !

mais RandomSeed(Random(1000)
initialise une liste Parmis  1000 !!!  au hasard 

et donc si tu fait Random (10) , tu n'aura pas toujours le meme chiffre tiré (la meme sequence)

exemple  :  quelque soit le nombre de fois que tu relances ce code
la liste généré sera toujours la meme

Code:


seed=RandomSeed(1) ; on utilise un Seed precis
For i= 1 to 3
 debug random(100,1) ; on tire une chiffre aleatoire tiré de la liste Seed 1
Next i
; sortira toujours les chiffres  73,19,61
; quelque soit l'ordnateur
; ça peut etre utilise en cryptologie par exemple



alors que  ceci :
te garantie que la liste généré ne sera jamais la même
puisqu'on puise aléatoirement dans une liste (seed) tiré aléatoirement aussi ! (une parmi 1000 )

Code:


seed=RandomSeed(random(1000)) ; on utilise un Seed aleatoire
For i= 1 to 3
 debug random(100,1) ; on tire une chiffre aleatoire tiré de la liste Seed aleatoire aussi
Next i

;a chaque relance du code, les chiffres seront different puisque la liste "Seed" sera differente .....


il faut comprendre que un Seed c'est une liste de chiffres aléatoires
cette liste sera toujours la même

exemple (trivial) 
la liste SEED 1 pourrai etre   "1,5,9,10,12,...."
si tu utilises cette liste Seed (la 1)  tu aura toujours a prendre un chiffre dans cette liste précise

mais des listes Seed on en a autant qu'on veux et toutes différentes !!! 

donc losqu'on fait :  Randomseed(Random(1000))  on prends une liste SEED au hasard parmi  1000 !!!

et ensuite le Random(100,1) permet de choisir dans cette liste Seed un nombre entre 1 et 100 .....

en Purebasic ça fonctionne comme ça :) 

mais l'utilisation de elapsedmilliseconds() marche aussi , puisqu'au lieu de choisir une liste seed parmis 1000 , tu choisis de laisser le timer prendre une liste tout seul ...   c'est bien pour ça que je t'ai mis cette fonction ... c'est seulement une autre façon de faire Very Happy
avatar
Dobro
Patient contaminé

Masculin Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mer 9 Oct 2019 - 22:22

en fait bien avant dans le programme j'utilise des randomseed fixés sur un nombre, par intérêt.... et donc le randomseed(random (1000)) donnera toujours toujours les memes résultats, je ne repasse pas en aéatoire.

C'est pour ca que pour relancer la vraie machine aléatoire (meme si rien n'est aléatoire en informatique)  je passe par le timer (qui dans Pure se nomme elapsedmilliseconds, la commande que je cherchais... dans la lettre T dans l'index MDR )

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Mer 9 Oct 2019 - 22:44

non, tu confonds 2 fonctions !!

RandomSeed(Seed) qui choisi une liste (un Seed)

et la fonction Random(x)  qui choisi un chiffre (ou nombre) aleatoire dans le Seed en cours !! 


dans l'absolu  si tu fait simplement 

Debug Random(10)

ça va te sortir un chiffre entre 0 et 10  ....
au hasard , et jamais la sequence ne sera previsible !! 



par contre si tu fait auparavant  RandomSeed(5)
alors  Debug Random(10) te sortira toujours la meme liste de chiffre aleatoire ...
qui sera pris dans la sequence 5 ....


RandomSeed(x) permet de choisir un generateur (une liste/une sequence)  de nombre aleatoire

mais la fonction Random(x)  elle permet de choisir un nombre aleatoire
qui sera pris dans cette liste(sequence).... 


si tu ne specifie pas de randomSeed(x)  alors la fonction Random(x)
te renvera un chiffre pris dans une sequence qui ne sera jamais la meme


c'est pourquoi le fait de faire  RandomSeed(Random(x))
permet d'utiliser une sequence qui sera Aleatoire

lorsque tu utilises ElapsedMillseconde  dans la fonction RandomSeed()
tu fais la meme chose , sauf que tu utilise le timer pour choisir la sequence

alors qu'avec Random(1000) ou random(10000) c'ets un nombre aleatoire
qui choisira la sequence ..

suis-je clair ??  LOL
plus haut, je t'ai mis 2 codes de teste, essaye les ... Wink
avatar
Dobro
Patient contaminé

Masculin Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mer 9 Oct 2019 - 23:54

oui tres clair, et je savais tout ca, c'est la base et je maitrise. Mais je crois que je n'arrive pas à m'expliquer  Mr. Green (gros probleme chez moi LOL) J'avais juste besoin de connaitre la syntaxe de timer en Pure...

Car dans mon cas précis de jeu procédural, le RandomSeed(Random(x)) ca ne va pas... c'est lié à la structure particuliere du programme et je dois vraiment reinitialiser via le timer...


je sais je ne suis pas clair

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Jeu 10 Oct 2019 - 6:25

bon bon, ok ok ...

pour info a propos des Fonctions Lié au DPI de Purebasic
Fred , bosse encore dessus .... il est possible qu'il y ai des futurs patch a ce sujet....

en realité c'est pas une chose simple , car il semble deja que cela ne touche que
Windows  (Linux et Mac Os serai epargné par le soucis de DPI  )

cela proviendrai du fait que Microsoft utilise un melange de Vectoriel et de bitmap
concernant les fontes ... et qu'en realité c'est un vrais foutoir ...

les DPI ne semblent pas etre constant suivant les resolutions employés...
bref , pour le moment c'est un vrais casse tete ...

les fonctions  lié au DPI dans Purebasic , marchent a peut pret pour ce qui concerne les applications avec interface type Gadgets...

pour les "Canvas" et autres Screen , c'est une autre paire de manche ...

je pense au final que d'utiliser un sprite ou une image, dans ce cas, n'est pas forcement la plus mauvaise idée  Very Happy
avatar
Dobro
Patient contaminé

Masculin Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Urbinou Jeu 10 Oct 2019 - 9:13

Utilisés au travers de Delphi, les dpi windows des canvas me semblent consistents, que ce soit le canvas d'une image ou d'une printer, j'obtiens le même aspect, polices vectorielles ou bitmap. Et heureusement non ? Je pense que ça se saurait si windows avait un souci à ce niveau Wink
Urbinou
Urbinou
Docteur agrégé **
Docteur agrégé **

Masculin Nombre de messages : 12633
Age : 56
Localisation : Liège, Belgique
Date d'inscription : 12/02/2013

http://cambouisdelatari.wordpress.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Jeu 10 Oct 2019 - 12:22

Urbinou a écrit:Utilisés au travers de Delphi, les dpi windows des canvas me semblent consistents, que ce soit le canvas d'une image ou d'une printer, j'obtiens le même aspect, polices vectorielles ou bitmap. Et heureusement non ? Je pense que ça se saurait si windows avait un souci à ce niveau Wink


mais... ça se sait !!  Wink 

tiens par Microsoft en personne !

https://support.microsoft.com/fr-fr/help/3025083/windows-scaling-issues-for-high-dpi-devices


extrait :


Les problèmes de mise à l’échelle sont particulièrement complexes. Il n’existe pas de recette miracle ou de solution universelle pour résoudre tous les problèmes de mise à l’échelle DPI. La mise à l’échelle DPI bénéficie d’améliorations continues dans le système d’exploitation, dans les modèles de développement d’applications et dans les applications développées par Microsoft et par des tiers.




je pourrai te donner des liens vers des topics ecrit par des "pro" du Purebasic (qui bien souvent sont des pro dans d'autres langage )
et qui en parlent depuis un bon moment en fait ....


le gros defaut de Windows c'est de concilier le vectoriel et les bitmaps... pour ce qui concerne les fontes ...
le fait de trainer du Bitmap a ce sujet est un boulet !!

mais en meme temps souvent une solution a notre niveau
puisqu'une image, on arrive encore a bidouiller avec ...

note que ce probleme ne semble pas exister dans le monde Linux ... (ni mac Os apparemment )
le format des fontes , doit etre differents (tout vectoriel ?? )


ps: je ne connais pas Delphi , mais je pense que c'est plus haut level que Purebasic Wink

ce qui semble ce confirmer lorsque je lis ceci :
L'environnement de développement auto-génère du code pour faciliter le travail du programmeur. Il maintient une correspondance automatique entre la vue de conception (la fenêtre que le programmeur bâtit en déposant des composants graphiques) et l'éditeur de code (la vue affichant le code source qui créera ces composants à l'exécution).


donc probablement qu'il doit y avoir une aide au context (des bornes ? ) 
bref , ce problemes doit probablement aussi etre connu des codeur C++ , C  , Ass , bref des langages plus pres du systeme ....
avatar
Dobro
Patient contaminé

Masculin Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Jeu 10 Oct 2019 - 20:25

tu as des langages comme NAALAA qui utilisent leur propres routines graphiques, rien à foutre de Windows... et le resultat est top, sans lissage, sans flou, et rapide. Et puis le resultat est 100% identique sur toutes les machines.


As NaaLaa is aimed to games creation, it deserves to be mentioned the unusual feature that neither DirectX or OpenGL is used for graphics rendering. It's author has preferred to build its own graphical routines. According to the author, the main advantages are: the number of images you can use only depends on the available RAM memory, images may be modified on the fly without having to wait for them to be uploaded to texture memory, no different color formats, nor bad artifacts are displayed thanks to a better optimization of the backbuffer, same graphical output on every machine, to achieve maximum speed only 7 bits, instead of 8, are used for the alpha component of images.

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Tryphon Jeu 10 Oct 2019 - 20:35

drfloyd a écrit:tu as des langages comme NAALAA qui utilisent leur propres routines graphiques, rien à foutre de Windows... et le resultat est top, sans lissage, sans flou, et rapide. Et puis le resultat est 100% identique sur toutes les machines.


As NaaLaa is aimed to games creation, it deserves to be mentioned the unusual feature that neither DirectX or OpenGL is used for graphics rendering. It's author has preferred to build its own graphical routines. According to the author, the main advantages are: the number of images you can use only depends on the available RAM memory, images may be modified on the fly without having to wait for them to be uploaded to texture memory, no different color formats, nor bad artifacts are displayed thanks to a better optimization of the backbuffer, same graphical output on every machine, to achieve maximum speed only 7 bits, instead of 8, are used for the alpha component of images.

J'ai énormément de mal à voir comment il peut se passer du pilote de la carte graphique, lequel dépend de l'architecture. À mon avis il utilise la SDL ou Allegro.
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Jeu 10 Oct 2019 - 20:52

Je crois pas en fait !

Je vais faire un comparatif de test de rapidité entre PURE (le langage proche de l'assembleur), BLIZ (le langage assisté) et ce NAALAA (langage qui dit avoir inventé ses propres routines graphiques ultra rapides)

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Tryphon Jeu 10 Oct 2019 - 20:53

J'ai vérifié : Naalaa ne publie pas son source. Mais je suis quasi sûr que c'est de la D5SL ou de l'Allegro. Tu peux faire de la 3D avec ?
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Jeu 10 Oct 2019 - 20:58

oui, possible
et un mode 7 "Snes"  Mr. Green

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Tryphon Jeu 10 Oct 2019 - 21:03

De la vraie 3D ou juste un mode 7 ?
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Jeu 10 Oct 2019 - 22:13

je n'ai vraiment regardé, il y a une mini librairie 3D pour faire des Doom et Quake simples

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 6 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184783
Age : 55
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

PURE BASIC - Le Topic officiel - Page 6 Empty Re: PURE BASIC - Le Topic officiel

Message par Tryphon Jeu 10 Oct 2019 - 23:01

C'est pas de la 3D (c'est du raycasting). Donc oui, je pense que c'est basé sur une lib 2D classique genre SDL...
Tryphon
Tryphon
Docteur *
Docteur *

Masculin Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016

Revenir en haut Aller en bas

Page 6 sur 12 Précédent  1, 2, 3 ... 5, 6, 7 ... 10, 11, 12  Suivant

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum