Demande d'avis sur l'utilisation de PureBasic
Demande d'avis sur l'utilisation de PureBasic
Bonjour à tous,
En premier lieu je ne suis pas persuadé d’être dans la bonne rubrique mais les autres me semblaient trop spécialisées pour poser mon « problème » donc par avance désolé si le post n’est pas au bon endroit.
J’ouvre ce post pour solliciter votre expertise afin de définir si l’utilisation de PureBasic est la meilleure solution pour répondre à mon « problème ».
Je veux réaliser une application qui sera utilisée lors de la création de scénarios pour jeux de rôles. L’application doit également permettre de présenter les éléments réalisés lors de l’écriture des scénarios.
Création d’un scénario :
Lors de l’écriture d’un scénario il est souvent fait appel à des aides de jeu sous forme de plan ou d’images. L’application à développer devra permettre de réaliser ces plans.
Représentation des aides de jeu :
Le principe de l’application nécessite d’utiliser un moniteur secondaire qui servira de « plateau de jeu » se moniteur pourra être positionné « à plat » sur la table (écran vers le haut) cependant, faire attention à d’éventuels problèmes de surchauffe.
Sur ce moniteur, le plateau de jeu sera représenté par une matrice de 20 cases par 12 cases. Chaque case représentera un emplacement sur lesquels pourront être positionnées des figurines représentant les joueurs.
Par exemple : une matrice de 1520 pixels par 912 pixels sur un moniteur de 20 pouces affichant une résolution de 1600 pixels par 1000 pixels donne un résultat ayant une échelle acceptable.
Question :
PureBasic est il à même de gérer plusieurs affichages ? (un affichage principal avec la fenêtre de gestion pour le maitre de jeu et un affichage secondaire en plein écran pour présenter aux joueurs le plateau de jeu)
Réalisation des plans :
Chaque plan est constitué de plusieurs couches d’objets empilés afin de constituer l’image présentée aux joueurs.
Chaque couche est construite à partir d’éléments graphiques piochés dans des bibliothèques de formes de bases, représentation de sols, morceaux de murs, portes, accessoires, meubles, etc. (chaque objet graphique a une taille multiple de 76 pixels).
Pour chaque couche, certaines zones peuvent être transparente et de ce fait laisser apparaitre sur ces zones les éléments de la couche inférieure.
Voici une idée des couches à gérer :
50 - Zone visible
45 - Ambiance (nuit, brouillard, clair)
40 - PnJ / Mobs
35 - Objets sur meubles
30 – Meubles / Objets sur le sol
25 - Portes / Fenêtres
20 - Murs
15 - Accessoires de sol (tapis, paillassons, etc.)
10 - Revêtement de sol (parquet, etc.)
05 - Sol
00 - Sous-sol
L’application doit permettre de réaliser ces plans par assemblages des objets graphiques sélectionnés dans des bibliothèques.
Il doit être également possible de définir une ambiance sonore pour le plan courant et également des sons ponctuels déclenchés par le maitre de jeu.
Questions :
PureBasic est il adapté pour la création d’images ayant plusieurs couches chacune d’elles élaborées à partir d’éléments graphiques disponibles sous formes de fichiers png avec des zones transparentes ?
La mise en œuvre de sons et de musiques sont ils possibles (musiques à faire « tourner en boucle » et sons à déclencher ponctuellement « par-dessus » la musique) ?
La sauvegarde des plans utilisera surement une description au sein d’un fichier xml, la création et la lecture de ce format est il aisé avec PureBasic ?
Suivi du scénario :
La fenêtre principale de l’application doit pouvoir proposer plusieurs types de contrôles afin d’apporter au maître de jeu des outils d’aides (prise de notes, boutons de déclenchement d’événements [sons ponctuels, activation désactivation de musiques, déclenchement de modifications graphiques], listes de choix du ou des plans à afficher, etc)
Question :
PureBasic offre t’il les outils de création des IHM windows ?
Par avance merci pour vos commentaires.
En premier lieu je ne suis pas persuadé d’être dans la bonne rubrique mais les autres me semblaient trop spécialisées pour poser mon « problème » donc par avance désolé si le post n’est pas au bon endroit.
J’ouvre ce post pour solliciter votre expertise afin de définir si l’utilisation de PureBasic est la meilleure solution pour répondre à mon « problème ».
Je veux réaliser une application qui sera utilisée lors de la création de scénarios pour jeux de rôles. L’application doit également permettre de présenter les éléments réalisés lors de l’écriture des scénarios.
Création d’un scénario :
Lors de l’écriture d’un scénario il est souvent fait appel à des aides de jeu sous forme de plan ou d’images. L’application à développer devra permettre de réaliser ces plans.
Représentation des aides de jeu :
Le principe de l’application nécessite d’utiliser un moniteur secondaire qui servira de « plateau de jeu » se moniteur pourra être positionné « à plat » sur la table (écran vers le haut) cependant, faire attention à d’éventuels problèmes de surchauffe.
Sur ce moniteur, le plateau de jeu sera représenté par une matrice de 20 cases par 12 cases. Chaque case représentera un emplacement sur lesquels pourront être positionnées des figurines représentant les joueurs.
Par exemple : une matrice de 1520 pixels par 912 pixels sur un moniteur de 20 pouces affichant une résolution de 1600 pixels par 1000 pixels donne un résultat ayant une échelle acceptable.
Question :
PureBasic est il à même de gérer plusieurs affichages ? (un affichage principal avec la fenêtre de gestion pour le maitre de jeu et un affichage secondaire en plein écran pour présenter aux joueurs le plateau de jeu)
Réalisation des plans :
Chaque plan est constitué de plusieurs couches d’objets empilés afin de constituer l’image présentée aux joueurs.
Chaque couche est construite à partir d’éléments graphiques piochés dans des bibliothèques de formes de bases, représentation de sols, morceaux de murs, portes, accessoires, meubles, etc. (chaque objet graphique a une taille multiple de 76 pixels).
Pour chaque couche, certaines zones peuvent être transparente et de ce fait laisser apparaitre sur ces zones les éléments de la couche inférieure.
Voici une idée des couches à gérer :
50 - Zone visible
45 - Ambiance (nuit, brouillard, clair)
40 - PnJ / Mobs
35 - Objets sur meubles
30 – Meubles / Objets sur le sol
25 - Portes / Fenêtres
20 - Murs
15 - Accessoires de sol (tapis, paillassons, etc.)
10 - Revêtement de sol (parquet, etc.)
05 - Sol
00 - Sous-sol
L’application doit permettre de réaliser ces plans par assemblages des objets graphiques sélectionnés dans des bibliothèques.
Il doit être également possible de définir une ambiance sonore pour le plan courant et également des sons ponctuels déclenchés par le maitre de jeu.
Questions :
PureBasic est il adapté pour la création d’images ayant plusieurs couches chacune d’elles élaborées à partir d’éléments graphiques disponibles sous formes de fichiers png avec des zones transparentes ?
La mise en œuvre de sons et de musiques sont ils possibles (musiques à faire « tourner en boucle » et sons à déclencher ponctuellement « par-dessus » la musique) ?
La sauvegarde des plans utilisera surement une description au sein d’un fichier xml, la création et la lecture de ce format est il aisé avec PureBasic ?
Suivi du scénario :
La fenêtre principale de l’application doit pouvoir proposer plusieurs types de contrôles afin d’apporter au maître de jeu des outils d’aides (prise de notes, boutons de déclenchement d’événements [sons ponctuels, activation désactivation de musiques, déclenchement de modifications graphiques], listes de choix du ou des plans à afficher, etc)
Question :
PureBasic offre t’il les outils de création des IHM windows ?
Par avance merci pour vos commentaires.
Re: Demande d'avis sur l'utilisation de PureBasic
Tout ceci me parait réalisable avec PB.
- il gère le son en multi canaux si besoin
- il detecte les différents ecrans donc une fenêtre par écran ne me parait pas sorcier à gérer
- il gère les images ayant une couche alpha pour la transparence. (on peut créer du sprite à gogo), il gère aussi les collisions.
- il gère le XML (jamais testé par contre)
- il gère le son en multi canaux si besoin
- il detecte les différents ecrans donc une fenêtre par écran ne me parait pas sorcier à gérer
- il gère les images ayant une couche alpha pour la transparence. (on peut créer du sprite à gogo), il gère aussi les collisions.
- il gère le XML (jamais testé par contre)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Re: Demande d'avis sur l'utilisation de PureBasic
J'ai utilisé le XML, ça se fait très bien. Et tout le reste me semble tout à fait réalisable aussi
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Re: Demande d'avis sur l'utilisation de PureBasic
Bonjour,
Merci pour ces réponses.
Suite à la lecture de vos confirmations je me suis penché plus avant sur la documentation de PB afin d’identifier les fonctions clés dont j’aurai besoin pour faire fonctionner l’application.
La premier fonction est de pouvoir gérer les 2 écrans afin d’afficher sur chacun d’eux les données, soit destinées au maitre de jeu (écran 0) soit aux joueurs (écran 1).
Je n’ai pas de problème pour identifier le « contexte » de chaque écran avec la bibliothèque « desktop » par contre, je ne vois pas comment sélectionner un écran ou l’autre en fonction de ce que je dois afficher.
Idéalement je souhaite être en mode fenêtre sur l’écran 0 et en mode plein écran sur l’affichage 1 ou y afficher une fenêtre plein écran sans bordure ni contrôle.
Pour ce qui est de la manipulation des images je n’ai pas approfondi mais il semble qu’il y ai une multitude de fonctions autour des sprits.
Les sons semblent eux aussi bien servis et pour le XML je vous fais confiance…
Si vous avez une piste pour la méthode de sélection de l’écran d’affichage, je suis preneur.
Nota : L’écran N°1 ne fait que de la représentation d’objets qui sont « pilotés » depuis la fenêtre de contrôle située sur l’écran 0.
D'avance merci pour vos réponses.
Merci pour ces réponses.
Suite à la lecture de vos confirmations je me suis penché plus avant sur la documentation de PB afin d’identifier les fonctions clés dont j’aurai besoin pour faire fonctionner l’application.
La premier fonction est de pouvoir gérer les 2 écrans afin d’afficher sur chacun d’eux les données, soit destinées au maitre de jeu (écran 0) soit aux joueurs (écran 1).
Je n’ai pas de problème pour identifier le « contexte » de chaque écran avec la bibliothèque « desktop » par contre, je ne vois pas comment sélectionner un écran ou l’autre en fonction de ce que je dois afficher.
Idéalement je souhaite être en mode fenêtre sur l’écran 0 et en mode plein écran sur l’affichage 1 ou y afficher une fenêtre plein écran sans bordure ni contrôle.
Pour ce qui est de la manipulation des images je n’ai pas approfondi mais il semble qu’il y ai une multitude de fonctions autour des sprits.
Les sons semblent eux aussi bien servis et pour le XML je vous fais confiance…
Si vous avez une piste pour la méthode de sélection de l’écran d’affichage, je suis preneur.
Nota : L’écran N°1 ne fait que de la représentation d’objets qui sont « pilotés » depuis la fenêtre de contrôle située sur l’écran 0.
D'avance merci pour vos réponses.
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Demande d'avis sur l'utilisation de PureBasic
Bonjour Aliass. En mode fenêtré ou plein écran, tu auras dans ton programme au moins deux fenêtres ouvertes.
Pour sélectionner une fenêtre, utilise la fonction SetActiveWindow()
Bienvenu sur ce forum
Pour sélectionner une fenêtre, utilise la fonction SetActiveWindow()
Bienvenu sur ce forum
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Demande d'avis sur l'utilisation de PureBasic
Un peu de code pour te montrer qu'on peut assigner des valeurs dans une fenêtre ou une autre sans forcement demander à changer de fenêtre.
Code : Tout sélectionner
Enumeration
#Mainform1
#Field1
#mainform2
#Field2
EndEnumeration
Define.l Event, WEvent, MEvent, GEvent, TEvent
Global WindowStyle1.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered
Global WindowStyle2.i=#PB_Window_SystemMenu|#PB_Window_Maximize
Procedure Open_MainForm()
ExamineDesktops()
;Ouverture de la fenetre sur le premier écran (fenetrée et Centrée)
OpenWindow(#Mainform1, 0, 0, 500, 400, "New Form 1", WindowStyle1)
StringGadget(#Field1, 10, 20, 150, 22, "")
;Ouverture de la fenetre sur le 2eme ecran (Plein écran)
OpenWindow(#Mainform2, DesktopWidth(1), 0, 500, 400, "New Form 2", WindowStyle2)
StringGadget(#Field2, 10, 20, 150, 22, "")
;Mettre une valeur dans Field1
SetGadgetText(#Field1, "Valeur 1")
;Mettre une valeur dans Field2
SetGadgetText(#Field2, "Valeur 2")
;Je reviens sur la fenetre 1 (pas grand interet dans ce cas)
SetActiveWindow(#Mainform1)
EndProcedure
Procedure Start()
;Initialisation application, police, etc ..
Open_MainForm()
EndProcedure
start()
Repeat
Event = WaitWindowEvent(10)
WEvent = EventWindow()
MEvent = EventMenu()
GEvent = EventGadget()
TEvent = EventType()
Select Event
Case #PB_Event_Gadget
Select GEvent
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Demande d'avis sur l'utilisation de PureBasic
Super !!
C'est exactement ce que je chercher.
Je vais faire des essais de gestion de la fenêtre secondaire.
Merci.
C'est exactement ce que je chercher.
Je vais faire des essais de gestion de la fenêtre secondaire.
Merci.
Re: Demande d'avis sur l'utilisation de PureBasic
Tiens un code que j'utilisais pour une fenêtre en plein écran, et avec la détection de l'autre écran.
Par contre je ne sais pas si le deuxième écran se positionne toujours aux coordonnées (W0, 0)
W0 étant la largeur du premier écran.
Il me semble que sur ma carte graphique on peut définir la position du deuxième écran par rapport au premier.
Dans ce cas les commandes natives de PB me semble insuffisante pour trouver le décalage entre les écrans...
Par contre je ne sais pas si le deuxième écran se positionne toujours aux coordonnées (W0, 0)
W0 étant la largeur du premier écran.
Il me semble que sur ma carte graphique on peut définir la position du deuxième écran par rapport au premier.
Dans ce cas les commandes natives de PB me semble insuffisante pour trouver le décalage entre les écrans...
Code : Tout sélectionner
Enumeration
#ww_Principale
#ww_plein_ecran
EndEnumeration
If OpenWindow(#ww_Principale, 0, 0, 200, 200, "Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget)
ButtonGadget(0, 50, 50, 60, 60, "Carré")
EndIf
nb_desktop = ExamineDesktops()
Plein_ecran.b = #False
If nb_desktop > 1
w0 = DesktopWidth(0)
h0 = DesktopHeight(0)
w = DesktopWidth(1)
h = DesktopHeight(1)
If InitSprite() = 0
MessageRequester("Erreur", "Message d'erreur")
EndIf
If OpenWindow(#ww_plein_ecran, w0, 0, w , h, "Test - Plein écran", #PB_Window_BorderLess, WindowID(#ww_Principale))
If OpenWindowedScreen(WindowID(#ww_plein_ecran), 0, 0, w, h, 0, 0, 0)
Plein_ecran.b = #True
Else
MessageRequester("Erreur", "Message d'erreur")
EndIf
EndIf
; Pour l'afficher audessus de toutes les autres fenêtres
StickyWindow(#ww_plein_ecran, #True)
EndIf
;{ variable
Carre.b = #False
delay = 100
t = ElapsedMilliseconds()
x = Random(w - 50)
y = Random(h - 50)
r.d = Random(255) / 255
g.d = Random(255) / 255
b.d = Random(255) / 255
vx = Random(20) - 10
vy = Random(20) - 10
;}
Repeat
event = WaitWindowEvent(100)
If event = #PB_Event_Gadget
Select EventGadget()
Case 0
If Carre
SetGadgetText(0, "Rond")
carre = #False
Else
SetGadgetText(0, "Rond")
carre = #True
EndIf
EndSelect
EndIf
;{ Truc graphique inutile pour afficher qq chose
If Plein_ecran And ElapsedMilliseconds() - t > delay
t = ElapsedMilliseconds()
r = r + 0.1
g = g + 0.15
b = b + 0.13
x + vx
y + vy
If x > w - 50 Or x < 0 : vx = - Sign(vx) * Random(20) : EndIf
If y > h - 50 Or y < 0 : vy = - Sign(vy) * Random(20) : EndIf
ClearScreen(#Green)
If StartDrawing(ScreenOutput())
If carre
Box(x, y, 50, 50, RGB(255 * Sin(r), 255 * Sin(g), 255 * Sin(b)))
Else
Circle(x + 25, y + 25, 25, RGB(255 * Sin(r), 255 * Sin(g), 255 * Sin(b)))
EndIf
StopDrawing()
EndIf
FlipBuffers()
EndIf
;}
Until event = #PB_Event_CloseWindow
End
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel )
Mon site : CeriseCode (Attention Chantier perpétuel )