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 5 sur 12 Précédent  1, 2, 3, 4, 5, 6 ... 10, 11, 12  Suivant

Aller en bas

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

Message par Urbinou Mer 2 Oct 2019 - 19:48

Cosmos IV sera en VR !

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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mer 2 Oct 2019 - 19:56

Shaoth a écrit:A la souris !!!! Et pourquoi pas au trakball aussi !!!
Tu deviens fou Doc...
Je ne te reconnais plus...


je peux revenir en arrière.... je pensais que c'etait sympa pour gerer l'inventaire, l'alimentation, les achats ventes, le bricolage dans le vaisseau....

je sais tres bien gerer tout ca avec 4 directions et 1 seule touche d'action.

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Shaoth Mer 2 Oct 2019 - 20:14

Je te taquine Doc  !

Ton jeu, tes règles !

C'est ton produit à toi, pas une commande faite par E.A. it's in the game
Tu avais une interface très épurée dans le 1, un peu trop, heureusement que tu as accepté de rajouter la touche Esc.
Il faut que tu passes à autre chose avec le 2 et pas que tu nous refasse encore et encore le même jeu !

J'aime bien l'exemple de @Atlantis qui fait la suite de son jeu sur une machine de génération différente à chaque épisode. C'est super classe !

La gestion à la souris et la présence d'un équipage c'est super bien, j'adore.
Tu augmente la résolution, c'est super aussi, mais il faut aussi que tu fasses évoluer la qualité des graphismes, c'est un jeu 16bit maintenant.
Ne fait pas comme un de nos amis qui produit des jeux 8bit sur des machines 16bit MDR
"Ami de nous, si tu nous lis, sache que ce n'est pas un reproche, mais un clin d'oeil" Wink

Tes idées sont bonnes, mènes les à terme et ne te prends pas la tête sur la technique.
Je préfère un jeu qui me fait rêver avec quelques imperfections plutôt qu'un jeu chiant mais impeccable.

Bon je retourne à ma Switch moi...
Shaoth
Shaoth
Guéri miraculeux

Masculin Nombre de messages : 2234
Age : 54
Localisation : 92
Date d'inscription : 05/04/2018

Revenir en haut Aller en bas

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

Message par drfloyd Mer 2 Oct 2019 - 20:20

Ouais je vais me faire plaisir, ca sera mon tout dernier jeu, avant la retraite. Ca sera le chef d'oeuvre de ma vie  Mr. Green

Infinity en tremble

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Shaoth Mer 2 Oct 2019 - 20:21

Et au fait, tu as raison, ce n'est pas la peine de donner au joueur un univers complet, c'est trop grand MDR
Un petit bout de galaxie suffit amplement, quelques système solaires et hop ! 
Penses à Sundog Wink
Shaoth
Shaoth
Guéri miraculeux

Masculin Nombre de messages : 2234
Age : 54
Localisation : 92
Date d'inscription : 05/04/2018

Revenir en haut Aller en bas

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

Message par drfloyd Mer 2 Oct 2019 - 20:45

c'est encore ma grande interrogation :

je part sur l'univers complet (250 milliards de galaxies) ou une seule galaxie dense.... 

Le gros soucis de Cosmos 1 est qu'il fallait un miracle pour découvrir une civilisation...

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Mer 2 Oct 2019 - 21:11

ça semble tres sympath :)
tu nous refais un "no man's Sky" en 2d ? Very Happy

bravo a toi, et bon courage en tout cas  sunny
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mer 2 Oct 2019 - 21:46

je deteste No Man Sky, c'est un anti No Man Sky  Mr. Green

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Shaoth Jeu 3 Oct 2019 - 10:17

Ya pas d'interrogation... va au plus simple !!
Si c'est pour avoir des milliards de planètes avec des civilisations sans rien à faire ou des quêtes lambda c'est pas fun
Il vaut mieux une dizaine de planètes bien pensées et différentes !!
Shaoth
Shaoth
Guéri miraculeux

Masculin Nombre de messages : 2234
Age : 54
Localisation : 92
Date d'inscription : 05/04/2018

Revenir en haut Aller en bas

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

Message par drfloyd Jeu 3 Oct 2019 - 13:28

je pense plutot a une galaxie complete, 200 milliards de systemes solaires, avec une dizaine de civilisations qui se la partagent... avec son lot de conflits....

La c'est plutot facile à gérer, et dans la tete du joueur ca sera clair.

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Jeu 3 Oct 2019 - 14:17

drfloyd a écrit:je pense plutot a une galaxie complete, 200 milliards de systemes solaires,
*

affraid     200 milliards ???  tu vas eclater  ---> (lire a partir de 1:56)

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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Jeu 3 Oct 2019 - 23:24

Dans Cosmos I il y a 200 milliards de galaxies x environ 100 à 400 milliards d'etoiles par galaxie...j'ai voulu simuler l'univers dans son ensemble.... 

et encore plus de planetes  Mr. Green

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Shaoth Ven 4 Oct 2019 - 8:07

drfloyd a écrit:Dans Cosmos I il y a 200 milliards de galaxies x environ 100 à 400 milliards d'etoiles par galaxie...j'ai voulu simuler l'univers dans son ensemble.... 

et encore plus de planetes  Mr. Green
C'est techniquement très impressionnant, je ne saurais même pas comment commencer un truc pareil.
Mais franchement pour le gameplay... Si tu avais une armée de stagiaire pour ajouter du contenu dans Cosmos (et un moteur de jeu qui le permet) ce serai incroyablement riche, mais là on ressent quand même le vide,ce qui est plutôt normal pour l'espace intersidéral.
Elite est propose un gameplay basé sur le commerce, le combat et l'exploration, du procédural fait le boulot, mais toi tu veux raconter une histoire. alors il faut un background riche et cohérent.
Shaoth
Shaoth
Guéri miraculeux

Masculin Nombre de messages : 2234
Age : 54
Localisation : 92
Date d'inscription : 05/04/2018

Revenir en haut Aller en bas

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

Message par drfloyd Ven 4 Oct 2019 - 8:25

Face à un tel espace il ne faut pas une armée de stagiaire pour remplir (ca serait peine perdue), mais surtout un moteur de jeu qui soit capable de remplir lui meme cet univers.... de manière cohérente.

Après on peut raconter une histoire cohérente dans un petit bout de cet univers. J'ai essayé de faire ça dans Cosmos I, mais du coup la vraie exploration et son intérêt n'ont pas été bossée (aucun interet réel de changer de galaxie par exemple, ni meme d'aller tres loin dans la galaxie de départ). 

Le but c'est de réussir à mener les 2 de front.

j'ai commencé tout doucement Cosmos II et pour chaque ligne de code je vais me servir de l'expérience acquise dans le I,  pour me dire que chaque aspect du jeu doit etre amélioré.

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Ven 4 Oct 2019 - 10:01

je voudrai revenir au Purebasic, juste pour montrer une chose, qu'il faut eviter le plus possible


non pas qu'on ne puisse pas dans certains cas faire cette petite erreur
mais, qu'il faut dans la mesure du possible eviter de faire .... je m'explique

lorsqu'on dessine un point , une ligne, bref n'importe quoi a l'ecran



on ouvre le contexte graphique avec par exemple un
 StartDrawing(ImageOutput(0))



puis on dessine notre point (ici dans une image)  avec un

 Plot(X, Y, RGB(Random(255), Random(255), Random(255)))


et on ferme le context Graphique pour passer a autre chose

StopDrawing()



.....


et lorsqu'on a plein de points a dessiner

on a souvent tendance a faire ceci :

For x = 0 To 199
        For y = 0 To 199
                StartDrawing(ImageOutput(0))
                        Plot(X, Y, RGB(Random(255), Random(255), Random(255)))
                StopDrawing()
        Next y

Next x




et cela marche tres bien ....  sauf que ....
le fait d'invoquer le context Graphique, et de le quitter a chaque boucle ,
ça prends beaucoup de temps .... (trop de temps Wink )

je cite cette exemple, car il est souvent la cause de problemes de lenteur
chez les "débutants" en Purebasic ....

la solution conciste a faire ceci :




StartDrawing(ImageOutput(0))
                        For x = 0 To 199
                                For y = 0 To 199
                                        Plot(X, Y, RGB(Random(255), Random(255), Random(255)))
                                Next y
                        Next x
StopDrawing()



de cette façon, on ouvre le contexte et le ferme, qu'une seule fois
le resultat est carrement plus rapide !!

un exemple viable qui montre que meme en Full HD c'est quasi instantané....

ExamineDesktops()  ; on examine la resolution en cours
ecranx=DesktopWidth(0)  ; recup la resolution X
ecrany=DesktopHeight(0) ; recup la resolution Y

If OpenWindow(0, 0, 0, ecranx, ecrany, "Plot", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ; ouvre une fenetre avec la possibilité de reduire ou quitter celle-ci
        If CreateImage(0, ecranx, ecrany)   ; on creer une image vide de la taille de notre ecran
                StartDrawing(ImageOutput(0))  ; on entre dans le context graphique (ici l'image cree precedemment)
                        ; on execute notre dessin , ici des points de couleurs aléatoire
                        For x = 0 To ecranX-1
                                For y = 0 To ecranY-1
                                        Plot(X, Y, RGB(Random(255), Random(255), Random(255)))
                                Next y
                        Next x
                StopDrawing()  ; sort du contexte grahique
                ImageGadget(0, 0, 0, 200, 200, ImageID(0)) ; pose l'image qu"on viens de remplir de mulpiple points aleatoire , dans la fenetre
        EndIf
       
        Repeat ; boucle
                Event = WaitWindowEvent()  ; recupere les Evenements eventuelle ... (clique sur la croix de fermeture par exemple , ou la reduction d la fenetre ) 
        Until Event = #PB_Event_CloseWindow ; si l'evenement correspond a la fermeture de la fenetre avec la petite croix blanche sur fond rouge , on sort de la boucle
EndIf


Dernière édition par Dobro le Ven 4 Oct 2019 - 10:40, édité 3 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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Sam 5 Oct 2019 - 8:05

Oui, ca me j'en doutais qu'il fallait éviter de multipler les start et stop pour dessiner et de tout balancer d'un coup

Pourquoi cette necessité pour PURE d'avoir cette fonctionnalité un peu lourde ? Et pourquoi ne pas avoir intégré les sprites dedans ?

L'erreur qu'on commet non stop au debut c'est d'oublier que les sprites (qui sont en fait des dessins comme des autres) ne sont pas concernés

Merci pour tes petits trucs et astuces en tout cas Dobro ! Je suis fan.

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Sam 5 Oct 2019 - 9:08

je n'ai pas encore compris l'interet de la fonction imagegadget ?

Je fais sans actuellement.

Ca permet de créer un cadre dans une image, pour par exemple que tout ce qui depasserait du cadre ne puisse pas s'afficher en débordement ?

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Sam 5 Oct 2019 - 12:27

le context "StartDrawing(destination)" permet de dessiner

sur l'ecran directement avec :
StartDrawing(ScreenOutput(num_ecran²))


ou bien sur une image avec
StartDrawing(imageOutput(num_image))


ou bien sur un sprite avec
StartDrawing(spriteOutput(numero_de_sprite))


ou bien sur l'imprimante avec
StartDrawing(PrinterOutput())



ou bien sur le Canvas Gadget avec
StartDrawing(CanvasOutput())

ou bien sur une texture (pour l'utilisation du moteur OGRE (3D)
StartDrawing(TextureOutput())


cela peut paraitre "lourd" parceque tu es habitué a etre deja dans un contexte
en realité sous windows TOUT les programmes font ainsi !!

simplement dans un langage "haut niveau" lambda , le contexte est en fait ouvert
en arrière plan au moment de la "compilation" ou de l’interprétation ...

avec Purebasic , qui je le rappel est un enfant de l'assembleur
tu accèdes directement au APIs windows ... alors que dans d'autres langage sous windows, la plupart du temps tu codes deja dans un context Pré-configuré pour toi ..

mais cela occasionne bien souvent des exécutables bien plus gros, et aussi une ribambelle de librairies que tu es obligé de fournir avec ton programme ....

c'est un choix décidé des le depart de la création du langage Purebasic :)

pour imageGadget() :

Purebasic permet de creer des applications Graphique type DirectX ... jeux (sprite, screen ...)

mais il permet aussi de programmer des Utilitaires windows
bref ,tout programme utilisant des "Gadgets"  , les gadgets sont souvent appelés "WidGet" dans d'autres langages

cela regroupe les boutons a cliquer , les fenêtres , les champs pour entrer une données
la souris... , les menus , bref tout ce qu'on vois en général dans un programme basé sur les "Gadgets" (widget)

et imageGadget() est un Gadget qui permet d'afficher une image dans le cadre
d'une application de bureau ..sans avoir a invoquer Directx ou openGL ...

ça peut servir a afficher une image dans le cas de la programmation d'un Viewer d'image type "IrfanView" par exemple

ou bien a simplement afficher un logo dans l'interface de ton programme ...

en exemple , je viens de te faire un mini_viewer d'image
crée justement a base de ce fameux ImageGadget  :)

je l'ai super documenté, pour que tu (ceux qui lisent) comprenne(nt)s bien tout ce qui se passe :)

Code:
;{- Enumerations / DataSections
;{ Windows


; ici on va utilise les librairie interne de Purebasic
; pour pouvoir decoder les images de different format

UseGIFImageDecoder()
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseTGAImageDecoder()
UseTIFFImageDecoder()


; ici on prepare nos constantes
;le fait de les mettre entre enumeration et endenumeration, permet de leur attribuer
; automatiquement une valeur ... par defaut ça va de 0 a ..... nombre de constantes entrée ...
; le fait d'utiliser des constantes, rend le code bien plus lisible !

Enumeration
 #Win ; <--- ceci par exemple sera la constante designant la fenetre principale
EndEnumeration
;}
;{ Gadgets
Enumeration
 #Text_0    ; vaudra 0
 #Button_load
 #Image_gadget
 #Button_arriere ; vaudra 3
 #Button_avant
 #Text_taille
 #Text_label ; vaudra 6
 
EndEnumeration
;}
;{ Fonts
Enumeration
 #Font_Text_0
EndEnumeration
;}
;{ Images
Enumeration
#image
EndEnumeration
;}
Define.l Event ; ceci n'est pas obligatoire, on declare simplement le fait que la variable "event" sera de type Long  d'ou le ".L" apres define
;}

Declare OpenWindow_Win() ; on declare la procedure qui va creer la fenetre, parceque j'aime bien mettre les procedures a la fin du listing ....
; donc dans ce cas, la declaration est obligatoire !


NewList image_list.s() ; on creer une liste qui va recevoir le nom des fichiers images contenu dans le repertoire choisi !
 

OpenWindow_Win() ; ceci est appel a le procedure qui va creer et ouvrir la fenetre principale

;{- Event loop   ;<---  a partir de là on entre dans la boucle principale du programme
; c'est la dedans (entre le repeat et son "Forever") qu'on va gerer les evenement lié au programme , un clique souris, ou un clique sur un gadget par exemple ....
Repeat
 Event = WaitWindowEvent(12) ; on attent un evenement .... le (12) permet de laisser du temps au systeme... on rends la main en quelques sorte
 Select Event
 ; ///////////////////
 Case #PB_Event_Gadget  ; tiens un evenement de gadget apparait !!
 Select EventGadget() ; on regarde ce que c'est comme evenement
 Case #Text_0  ; ce serai un evenement lié au gadget "Text_0
 Case #Button_load  ; c'est un evenement lié a un clique sur le bouton "#button_load" ... on va donc effectuer un traitement lié a ce bouton ... ce qui suit :
 fichier_image.s = OpenFileRequester("Load_image","c:\" ,"*.jpg;*.bmp;*.png;*.gif;*.tga;*.tiff",1 ) ; on fait afficher une boite qui permet de choisir un fichier
 chemin_image.s= GetPathPart(fichier_image.s) ; on recupere le non du fichier + son chemin dans son entier .....
 nom_fichier_image.s=GetFilePart(fichier_image.s) ; ici on met en variable seulement le chemin , ça va nous servir pour plus tard
 
 ; on en profite pour faire la liste des images se trouvant dans le repertoire en cours
 If ExamineDirectory(0, chemin_image.s, "*.*")   ; pour chaque fichier se trouvant dans le repertoire en cours d'examen ..
 While NextDirectoryEntry(0) ; et tant qu'il y a un fichier a regarder
 If DirectoryEntryType(0) = #PB_DirectoryEntry_File ; on regarde ce que c'est , si c'est un fchier ou peut etre un dossier... ici on ne s'interresse qu'aux fichiers !
 Type$ = " [Fichier] "  
 Taille$ = " (Taille : " + DirectoryEntrySize(0) + ")" ; on recupere dans une variable la taille du fichier examiné
 extention.s= GetExtensionPart( DirectoryEntryName(0))  ; on recupere l'extension du fichier si c'est bien un "*.jpg" et pas un "*.txt" par exemple
 if  extention.s ="jpg" or extention.s="bmp" or extention.s="png" or extention.s="gif" or extention.s="tga" or extention.s="tiff" ; ici on chois de ne recuperer que les extensions images
 AddElement(image_list()) ; comme c'est bien une extension d'image, on pose le nom du fichier dans la liste ....
 if Taille$ <>"" and DirectoryEntryName(0)<>"" ; on verifie bien toutefois que le fichier a une taille pas de fichier fantomes .. on veu du vrais LOL
 image_list()=DirectoryEntryName(0)+","+Taille$ ; on pose donc le nom de l'image plus une virgule
 Debug Type$ + DirectoryEntryName(0) + Taille$ ; et on pose la taille de l'image , la virgule nous servira de séparateur par la suite ....
 Endif
 Endif
 EndIf
 Wend
 FinishDirectory(0) ; on a fini d'explorer le repertoire en cours
 EndIf
 
 ResetList(image_list.s())  ; on se met juste avant le premier element de notre liste, liste qui contient donc les noms d'images+ une virgule + la taille de l'image  , et ceci pour toutes les images (c'est une liste)
 foreach image_list.s() ; pour chaque element de la liste
 if stringfield(image_list.s(),1,",")=nom_fichier_image.s   ; on regarde si avant la virgule (donc le nom de l'image) est egale a la premiere image qu'on a choisi de voir
 SetGadgetText(#text_label,stringfield(image_list.s(),1,","))  ; lorsque c'est le cas , on recupere dans la liste le nom d el'image et on la colle dans le gadget text pour afficher le nom
 SetGadgetText (#Text_taille,StringField(image_list.s(),2,",")) ; on fait pareil avec le gadget text qui doit afficher la taille de l'image
 Endif  ; un fois trouvé j'aurai pu utilise un BReak pour ne pas continuer a regarder les autres elements de la liste, mais pour faire simple, je n'ai rien mis.. on attends dons la fin de l'exploration
 Next ; voila ici on a fini
 
 if LoadImage(#image,fichier_image.s) <>0 ; on peut donc charger notre image choisi , et si le chargement se passe bien (valeur <>0)
 ResizeImage(#image,685, 370) ; on redimensione l'image a la taille du GADGET IMAGE  :o)
 SetGadgetState(#image_gadget,ImageId(#image)) ; on pose notre image redimensionné dans le gadget image (c'est cool on va pouvoir , voir notre image )
 Else
 MessageRequester("erreur", "l'image n'as pas ete chargé") ; houla le chargement c'est mal passé  ... ici dans absolu, je me contente de signaler le probleme , il faudrai enventuellment proposer une soluce
 Endif
 Case #Image_gadget ; ici c'est si nous voulions recuperer des evenement lié au gadget image, ici pas la peine, on ne fait que l'utiliser comme esclave pour afficher
 Case #Button_arriere ; on a cliqué sur le bouton "<---"
 if ListSize(image_list())>0   ; si la liste est rempli avec quelque chose, et seulement dans ce cas
 state=PreviousElement(image_list()) ; on passe a l'element de la liste precedent celui qu'on regarde
 if State=0 ; haa dommage il semble que l'element precedant n'existe pas , on est probablement deja sur le premier element
 LastElement(image_list()) ; pas grave on va sauter au dernier element ;o)
 Endif
 
 name.s=stringfield(image_list.s(),1,",")  ; on met en variable temporaire le nom de l'image de la liste en cours de lecture
 taille.s=StringField(image_list.s(),2,",") ; on fait pareil avec la taille
 
 SetGadgetText(#text_label,name.s) ; on en profite pour faire afficher le nom au gadget text, histoire qu'on vois bien le nom dans notre interface
 SetGadgetText (#Text_taille,taille.s) ; pareil pour la taille
 
 if LoadImage(#image,chemin_image.s+name.s) <>0 ; si le chargment de notre image se passe bien
 ResizeImage(#image,685, 370) ; on redimensionne l'image pour qu'elle puisse entrer dans le gadget image
 SetGadgetState(#image_gadget,ImageId(#image)) ; on pose l'image redimensionné dans le gadget image (cool, on peut la voir maintenant :o)  )
 Else
 MessageRequester("erreur", "l'image n'as pas ete chargé") ; houla, il y a du avoir un soucis pour charger l'image
 Endif
 Endif
 Case #Button_avant ;  le bouton avant fait la meme chose que le bouton arriere , sauf bien sur le sens de lecture dans notre list sera inversé
 if ListSize(image_list())>0
 state=NextElement(image_list()) ; si on arrive au dernierelement de la list, on saute au premier
 if state=0
 FirstElement(image_list())
 Endif
 name.s=stringfield(image_list.s(),1,",")
 taille.s=StringField(image_list.s(),2,",")
 SetGadgetText(#text_label,name.s)
 SetGadgetText (#Text_taille,taille.s)
 
 if LoadImage(#image,chemin_image.s+name.s) <>0 ; et on peut voir notre nouvelle image
 ResizeImage(#image,685, 370) ; en l'ayant bien sur redimensionné aussi
 SetGadgetState(#image_gadget,ImageId(#image))
 Else
 MessageRequester("erreur", "l'image n'as pas ete chargé")
 Endif
 Endif
 EndSelect
 ; ////////////////////////
 Case #PB_Event_CloseWindow  ; ici c'est si on a cliqué sur la croix blanche/fond rouge de la fenetre windows pour quitter cela a declenché l'evenement #PB_Event_CloseWindow
 Select EventWindow() ; et cette evenement correspond bien notre fenetre
 Case #Win ; qui s'appelerio #win
 CloseWindow(#Win)  ; donc on la ferme reelement :)
 Break ; on peut quitter la boucle principale et partir dans les limbes insondable du champ des bits du systeme, retour a la matrice :)
 EndSelect
 EndSelect
 Forever
 end
 
 
 ;}
 
 ; ************** zone des Procedures *************************
 
 ; donc on ouvre une fenetre
Procedure OpenWindow_Win()
 If OpenWindow(#Win, 526, 137, 735, 592, "mini viewer pour Dr FLoyd (By Dobro)", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
 
 TextGadget(#Text_0, 195, 30, 365, 40, "Mini viewer pour Dr Floyd") ; on cree un gadget text pour ecrire un titre par exemple
 ButtonGadget(#Button_load, 30, 90, 100, 50, "Load image")  ; ici on cree un bouton gadget , qui servira pour charger une premiere image
 ImageGadget(#Image_gadget, 25, 155, 685, 370, 0, #PB_Image_Border)  ; le famaux image Gadget qui recevra l'image chargée..
 ButtonGadget(#Button_arriere, 30, 535, 155, 45, "<----")  ; un bouton gadget pour pouvoir allez en arriere dans le repertoire choisi et afficher les images se trouvant avant
 ButtonGadget(#Button_avant, 545, 535, 155, 45, "--->") ; un bouton gadget pour pouvoir allez en avant dans le repertoire et ainsi afficher les images se trouvant apres celle en cours
 TextGadget(#Text_taille, 510, 135, 170, 20, "")  ; un gadget text qui recevra et affichera la taille de l'image en cours de visualisation
 TextGadget(#Text_label, 360, 135, 125, 20, "nom de l'image") ; un gagdet text qui affichera  le nom de l'image en cours de visualisation
 
 ; Gadget Fonts
 SetGadgetFont(#Text_0, LoadFont(#Font_Text_0, "Microsoft Sans Serif", 14, #PB_Font_HighQuality)) ; parcequ'il faut bien choisir une fonte pour afficher le titre en gros (corp 14)
 EndIf
 
EndProcedure

 


autre chose, le fait d'avoir une image dans un gadget te garantie qu'elle ne s'effacera pas , si tu met la fenetre a moitée hors des limite de ton ecran ....Wink


le code ci-dessus donne ceci PURE BASIC - Le Topic officiel - Page 5 418468 

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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Sam 5 Oct 2019 - 21:40

j'étudierai tout ca plus tard, car en ce WE d'anniversaire j'ai décidé de ne pas coder Wink

"Purebasic , qui je le rappel est un enfant de l'assembleur"



Là j'ai l'impression de passer un cap en programmant en Pure basic du coup  Mr. Green

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Sam 5 Oct 2019 - 22:08

oui hein ?  MDR

pour illustrer ce que je dis

voici un code simple en Purebasic
le fameux code basic de test ancien utilisé pour "voir" un basic tourner
sur les vieux 8 bits vieux
Code:

For i=32 to 255
 a.s=a.s+ chr(i)
Next i
debug a.s

et bien voici le meme code en assembleur Fasm
je precise que c'est le resultat renvoyé par le compilateur Purebasic
moi je n'ecris rien... c'est Purebasic qui me fait le code , (il retranscrit le code Basic en sa version assembleur ) ce qui prouve que Purebasic est une Surcouche de FASM Wink

pour faire court, je n'ai pas mis les appels aux librairies et la Data Section ....

Code:
PureBasicStart:
;
  PUSH   dword I_BSSEnd-I_BSSStart
  PUSH   dword 0
  PUSH   dword I_BSSStart
  CALL  _memset
  ADD    esp,12
  PUSH   dword 0
  CALL  _GetModuleHandleW@4
  MOV    [_PB_Instance],eax
  PUSH   dword 0
  PUSH   dword 4096
  PUSH   dword 0
  CALL  _HeapCreate@12
  MOV    [PB_MemoryBase],eax
  CALL  _SYS_InitString@0
  CALL  _PB_InitMemory@0
;
;
; For i=32 to 255
  MOV    dword [v_i],32
  JMP   _ForSkipDebug1
_For1:
_ForSkipDebug1:
  MOV    eax,255
  CMP    eax,dword [v_i]
  JL    _Next2
; a.s=a.s+ chr(i)
  MOV    edx,dword [v_a]
  PUSH   dword [_PB_StringBasePosition]
  PUSH   edx
  CALL  _SYS_CopyString@4
  MOV    edx,[_PB_StringBasePosition]
  PUSH   edx
  PUSH   edx
  PUSH   dword [v_i]
  CALL  _PB_Chr@8
  POP    eax
  PUSH   dword v_a
  CALL  _SYS_AllocateString4@8
; Next i
_NextContinue2:
  INC    dword [v_i]
  JNO   _For1
_Next2:
; debug a.s
;
;
;
;
;
_PB_EOP_NoValue:
  PUSH   dword 0
_PB_EOP:
  CALL  _PB_EndFunctions
  CALL  _SYS_FreeStrings@0
  PUSH   dword [PB_MemoryBase]
  CALL  _HeapDestroy@4
  CALL  _ExitProcess@4
_PB_EndFunctions:
  CALL  _PB_FreeMemorys@0
  RET
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Sam 5 Oct 2019 - 22:27

ENORME

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Dim 6 Oct 2019 - 18:57

voici un petit tuto sur l'utilisation du debugger avec Purebasic

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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Lun 7 Oct 2019 - 18:07

je vais regarder ca des que possible 

en attendant je pense que

DesktopScaledX(100)
DesktopScaledY(100)

a résolu mon problème de fontes à taille différentes selon les pc

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Shaoth Lun 7 Oct 2019 - 18:54

On peut avoir une version de ton proto TD4 qui fonctionne ?
Shaoth
Shaoth
Guéri miraculeux

Masculin Nombre de messages : 2234
Age : 54
Localisation : 92
Date d'inscription : 05/04/2018

Revenir en haut Aller en bas

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

Message par drfloyd Lun 7 Oct 2019 - 20:37

faut que je le passe 320x240 virtuel (fenetre windows fullscreen), je pense qu'il plante sur certains PC a cause du fullscreen 320x240 pas supporté par toutes les cartes graphiques.

Mais bon y avait rien d'extra à voir, juste un double scrolling test  Mr. Green

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mar 8 Oct 2019 - 14:03

drfloyd a écrit:je vais regarder ca des que possible 

en attendant je pense que

DesktopScaledX(100)
DesktopScaledY(100)

a résolu mon problème de fontes à taille différentes selon les pc


eh bien non... je rechange de pc et paf ma police double de taille sur le nouveau pc....

Je m'en sort pas pour ecrire du texte, c'est de la folie, le truc le plus simple en programmation  MDR

Ca doit super connu ce "probleme" en Pure basic, je comprend pas que personne n'ait d'explication simple à donner.

Prof Dobro, au secours, donnez moi le code magique  Mr. Green

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Dobro Mar 8 Oct 2019 - 15:02

non en fait TU semble avoir un probleme avec ça Mr. Green

perso je n'ai jamais été confronté a ça

tu pourrai pas poster un exemple court qui demontre ce probleme ?

parceque ça sert a rien que je te file un code, si je ne sais pas d'ou viens le probleme


pourquoi t'embetes tu avec du 320x240 ??
c'est vraiment important ??

non parceque le rapport entre une resolution correcte de 1024x768 et 320x240 c'est 3.2

n'y aurai t'il pas la possibilité dans ce cas de bosser en 1024x768 avec des sprites 3.2 fois plus gros ??
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mar 8 Oct 2019 - 15:46

non COSMOS est en 640x400 (et si c'est genant je peux le passer en 640x480 si tu penses que c'est plus standard)

(320x240 c'etait pour un test bidon sur un scrolling, oublie)

Donc en fait c'est simple :

Sur un PC donc l'ecran est zoomé a 125% dans les paramétres du bureau (bah oui j'ai la vue qui baisse), et bien la taille des polices dans le jeu est zoomée de bien plus de 25%.... et uniquement la taille des polices, ca fait que le texte devient gros par rapport aux dessins et sprites)

c'est ca que je n'arrive pas à gérer...

Il te fait un bout de code quand même ou tu vois ?


Dernière édition par drfloyd le Mar 8 Oct 2019 - 15:55, édité 1 fois

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par Tryphon Mar 8 Oct 2019 - 15:49

Encore une fois, pourquoi tu fais pas ta police en "sprites" ? Si tu utilises des polices TrueType, tu es dépendant des polices installées sur la machine de l'utilisateur, et des pilotes de gestion du truetype...
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 5 Empty Re: PURE BASIC - Le Topic officiel

Message par drfloyd Mar 8 Oct 2019 - 15:58

en dernier recours oui, mais comme c'est juste pour afficher du texte banal, sans effet....

ma vrai interrogation c'est pourquoi sur un ecran windows zoomé de 25%, le jeu est bien sur zoomé de 25% en mode fenetre (normal!) mais les polices genre de 40%.... Ca m'empêche de dormir quasiment  Mr. Green Ca ne devrait pas exister.

_______________________________________________________
PURE BASIC - Le Topic officiel - Page 5 Americ10




drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 184733
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 5 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
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

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

Revenir en haut

- Sujets similaires

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