Comment créer un programme avec des modules (Plugins)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Comment créer un programme avec des modules (Plugins)

Message par Shadow »

Bonjour,

Savez vous comment réalise t'on un programme avec des modules ?
Le but serais d'augmenter les possibilités du programme grâce à eux.

PS: Hum, je dois ajouter plus d'informations...

Je parle de fichiers qu'on ajoute pour augmenter les capacités du programme.
On ajoute ce fichier au programme et celui-ci le charge automatiquement et ce met à jour avec ça.

Alors je parle bien d'un programme qui est compilé hein !
Donc de ce point de vue, pas de recompilation possible à ce niveaux, c'est en dehors de l'ID de PureBasic !

Donc je me pose la question, comment faire ce genre de chose là ?
J'en est aucune idée.

Si j'utilise l'éditeur de PB quand je lance mon programme, là oui je pense savoir comment faire ça
mais ici je ne parle pas de ça puisque mon programme sera compiler en Exe, donc comment on peu bien faire ça ?
Dernière modification par Shadow le jeu. 05/déc./2024 21:20, modifié 1 fois.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Re: Comment créer un programme avec des modules

Message par case »

le code ici est a titre d'exemple et ne fonctionne probablement pas sans le modifier on ajouter des choses il n'est pas issu de chatgpt cependant.


tout dépend de ce que tu veux faire, tu peux aussi intégrer un système de script dans ton programme.
mais il te faudra avoir a l’intérieur de ton programme compilé un interpréteur qui lira le script et effectuera les instructions de celui ci.

c'est souvent de cette manière que les jeux avec des mods fonctionnent.

souvent le jeu a un langage de script intégré pour effectuer des taches et les mods utilisent ce langage pour etendre les fonctionalites du jeu.

par exemple tu veux charger une image pour ton jeu si tu utilise la fonction purebasic directement dans ton code.
tu vas entrer dans le code

loadimage(#image1,"monimage.jpg")
ou
monimage=loadimage(#pb_any,"monimage.jpg")

si tu crée un interpréteur qui ira lire un fichier ou tu chargera tes images pour chacun des niveaux .

par exemple dans le fichier de ton niveau tu pourrais avoir un truc comme

loadimage monimage.jpg,monimage
loadimage monimage2.jpg,monimage2

etc... etc...

tu lis chaque ligne du script et tu interprete chacune d'entre elle dans ton programme on peux imaginer
on vas imaginer que ton script est ouvert avec le handle RD avec openfile()

Code : Tout sélectionner

Structure img
  name.s
  id.i
EndStructure
Global NewList images.img()
...
...

ligne_script.s=readstring(rd)


command.s=StringField(ligne_script,1," ")
argument.s=Mid(ligne_script,Len(command)+2,Len(ligne_script)-Len(command)-1)

If command="loadimage"
  AddElement(images())
  images()\id=LoadImage(#PB_Any,StringField(argument,1,","))
  images()\name=StringField(argument,2,",")  
EndIf
alors bien sur tu vas devoir implémenter toute les fonctions que tu voudra accessible par script.

par exemple pour afficher une image dans cet exemple tu ne connais pas le handle a l'avance donc tu vas devoir dans cet exemple utiliser le nom défini pour l'image et donc devoir rechercher dans ta liste l'image correspondant a celle que tu veux utiliser.

par exemple si dans ton programme tu veux afficher l'image 'monimage'

et que ta fonction pour afficher une image soit
affiche nom,x,y


tu vas avoir plusieur choses a faire

imaginons la ligne de script

affiche monimage,50,50

Code : Tout sélectionner

If command="affiche"
; rechercher la bonne image
foreach images()
	if images()\name=stringfield(argument,1,",")
		break
	endif
next
;afficher l'image
DrawImage(ImageID(images()),Val(StringField(argument,2,",")),Val(StringField(argument,2,",")))

a toi de voir pour optimiser tout cela tu peux imaginer "compiler" en mémoire le programme de script pour accélérer les choses.
par exemple

remplacer dans le script tout le nom des images par leur imageid() une fois chargé en mémoire. pour ne pas avoir a rechercher a chaque affichage par le script l'imageid() de l'image dans la liste images().

et sûrement d'autres choses a optimiser mais c'est un travail de titan ^^
ImageImage
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Comment créer un programme avec des modules

Message par Shadow »

Merci Case pour ton aide, ce système semble intéressant en effets.
ChatGPT m'en avais aussi parlé, jvé essayer de faire ça.
Cordialement.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre