PURE BASIC - Le Topic officiel
+8
grostonton
Urbinou
ShiningBZH
Tryphon
goux.m
jmg49
Capitaine
Shaoth
12 participants
Page 9 sur 12
Page 9 sur 12 • 1, 2, 3 ... 8, 9, 10, 11, 12
Re: PURE BASIC - Le Topic officiel
Je plaisantais hein
oui oui , t’inquiètes pas je fais la part des choses
Dobro- Patient contaminé
- Nombre de messages : 293
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Pour que tout le monde en Profite
LES STRUCTURES / et les listes chainées EN PUREBASIC
Les Structures sont parfois appelé "Type" dans certains langage
ici je ne parle que du langage Purebasic
Les Structures sont vraiment Pratiques, tout comme les Listes chainées d'ailleurs ce sont 2 concepts tres simple a appréhender
et qui pour le coup peuvent remplacer avantageusement l'utilisation de Tableau (pour les list chainées ) ...
une structure c'est juste une façon de ranger des variables , pour que ce soit plus clair ..
par exemple pour faire une fiche client ou de carnet d'adresse (ou un coffre fort de Loot) , en variable standard on va ecrire un truc du genre :
nom$="toto"
adresse$="21,rue des chantiers"
ville$="Versailles"
code_postal.i=78000
bon c'est bien , mais lorsqu'on a 5000 fiches a faire, on va devoir employer un Tableau ..
ça va donner un truc du genre:
Dim nom$(5000)
Dim Adresse$(5000)
Dim code_postal.i(5000)
ensuite l'attribution dans chaque tableau, se fera avec soit une lecture de fichiers soit du type "a la main" ou avec lecture de Data , bref, l'essentiel c'est de remplir nos variable donc par exemple :
nom$(0)="toto"
adresse$(0)="21,rue des chantiers"
ville$(0)="Versailles"
code_postal.i(0)=78000
mais... il nous a fallu créer autant de tableau que d’élément dans notre fiche !! c'est lourd !
bon.. ok , mais dans un code avec plein de tableaux , faudra juste ne pas oublier que nom$(x) correspond a la fiche client et pas a la fiche fournisseur ... (ou bien au contenu de la besace de ton perso, et pas au contenu du stock du coffre fort... )
maintenant on va utiliser un tableau toujours mais avec une structure (qui je le rappel n'est qu'une façon de ranger les variables)
on creer notre structure
Structure Fiche ;<--- on donne le nom qu'on veux
nom$
adresse$
ville$
code_postal.i ;<--- on peut mélanger les types de variables dans une structure
EndStructure
voila notre fiche est "precablé"
on dimensionne avec un
Dim Fiche.Fiche(5000) ; un seul tableau va regrouper tout nos membres!!
et on utilise avec
Fiche(0)\nom$="toto" ; pour attribuer un nom a la variable "nom$" se trouvant dans la Structure Fiche !
Fiche(0)\adresse$="21,rue des chantiers" ; pour ajouter l'adresse
etc...
Vous allez me dire, mais c'est pareille , sauf qu'on ecrit bien plus de chose ....
oui , mais l'avantage c'est que si tu créer un tableau qui porte le nom de "nom$" plus tard dans ton listing
avec un Dim nom$(5000) le code ne confondra pas
nom$(0)="toto"
avec
Fiche(0)\nom$="titi"
pour le code les 2 type de variables sont différentes
et c'est bien plus clair de lire Fiche(0)\nom$ car on sait qu'il s'agit d'une variable se trouvant dans la structure "Fiche"
voyez-vous, c'est surtout une question de lecture
pour un sprite c'est plus lisible de lire
mechant()\x =100 ; on sait qu'il s'agit de la coordonée du "mechant"
mechant()\y =200
qu'un simple x=100 :y=200 car dans un code de plusieurs milliers de lignes il y a risque de confondre les variables x ou y
pour les listes chainée c'est encore plus simple !
une list c'est comme une liste de courses
comme une pile d’assiette !
on entasse les infos les une sur les autres , puis lorsqu’on en a besoin, on regarde dans la liste l’élément qu'on veux retirer ...
on peut employer les listes Chainée sans Structure , mais l'utilisation d'une Structure la rend plus lisible ..
la list permet ainsi, ajouter autant d"éléments sans savoir a l'avance combien on va en mettre .... contrairement au tableau
qui oblige a connaitre le nombre à l'avance ...
une liste permet par exemple un TIR de missile d'un vaisseau Spacial , les balles (et leur coordonnées) vont s'entasser dans la liste
et lorsqu'on cesse d'appuyer sur la gâchette , on peut vider la liste jusqu'a ce que tout les sprites des balles soient sortie de l'ecran ou rencontré un ennemi ; on a plus a gerer le nombre de balles (ou missile) ... :)
exemple:
; on recreer une structure qui va englober nos variables
Structure Fiche
nom$
Adresse$
Ville$
code_postal.i
EndStructure
NewList Fiche.Fiche() ; on creer une liste chainée "vide" (une seule list qui va contenir tout nos éléments de notre fiche )
; pour ajouter un élément dans la liste
;ici grace a la structure on ajoute, en fait les éléments d'une fiche complète
AddElement(Fiche()) ; on dit dans quel liste on va ajouter un ou plusieurs éléments
;
Fiche()\nom$ = "toto" ; ici on ajoute l'element nom$
Fiche()\Adresse$="21 rue des chantiers" ; ici on ajoute l'element Adresse
Fiche()\Ville$="Versailles" ; l'element ville
Fiche()\code_postal.i=78000 ; et enfin ajout de l'element code postal
;si je voulais ajouter une nouvelle fiche il me suffirai de refaire
AddElement(Fiche()) ; on dit dans quel liste on va ajouter un ou plusieurs éléments
;
Fiche()\nom$ = "titi" ; ici on ajoute l'element nom$
Fiche()\Adresse$="54 chemin de la colline"
Fiche()\Ville$="Annecy le vieux"
Fiche()\code_postal.i=74940
(ce qui pourrai bien sur etre inclu dans une boucle )
ce qui dans le debbugeur nous affiche ceci
c'est vachement plus lisible qu'un simple tableau non ? :)
de la sorte toutes les variables relatives a la "Fiche" sont regroupée ensemble ..
pour retrouver une fiche précise on peut faire ainsi :
; ressortir une fiche precise :
ForEach Fiche() ; pour tout les elements se trouvant dans la list "Fiche"
If Fiche()\nom$="titi" ; on regarde si on trouve le champ "titi"
debug Fiche()\nom$ ; et on ressort tout les éléments composant cette fiche (ici via Debug a compiler avec Debugger ON bien sur )
debug Fiche()\Adresse$
debug Fiche()\Ville$
debug Fiche()\code_postal.i
Endif
Next
et voila, c'est ultra rapide meme sur des milliers de fiches !
on peut aussi faire :
SelectElement(Fiche(), 0) ; on sélectionne la fiche numero 0 (la premiere)
debug Fiche()\nom$ ; et on affiche son contenu ....
debug Fiche()\Adresse$
debug Fiche()\Ville$
debug Fiche()\code_postal.i
La difference entre les deux methodes, c'est vous l'aurez compris
que dans la methode 1 on recherche une fiche d'apres un contenu (ici le nom$)
alors que la deuxieme methode, on sait deja que ce qui nous interesse est dans la fiche 0 , donc on saute directement a cette "index" :)
autre avantage , on dispose dans le Purebasic de possibilité de Tri en fonction d'un des elements ...
on peut ainsi trier nos fiches par ordre alphabetique, ou en fonction de la valeur d'un des membres de la fiche :)
voila en esperant que vous aurez saisi l'interet des Structures , et des listes Chainées
dans le langage Purebasic :)
LES STRUCTURES / et les listes chainées EN PUREBASIC
Les Structures sont parfois appelé "Type" dans certains langage
ici je ne parle que du langage Purebasic
Les Structures sont vraiment Pratiques, tout comme les Listes chainées d'ailleurs ce sont 2 concepts tres simple a appréhender
et qui pour le coup peuvent remplacer avantageusement l'utilisation de Tableau (pour les list chainées ) ...
une structure c'est juste une façon de ranger des variables , pour que ce soit plus clair ..
par exemple pour faire une fiche client ou de carnet d'adresse (ou un coffre fort de Loot) , en variable standard on va ecrire un truc du genre :
nom$="toto"
adresse$="21,rue des chantiers"
ville$="Versailles"
code_postal.i=78000
bon c'est bien , mais lorsqu'on a 5000 fiches a faire, on va devoir employer un Tableau ..
ça va donner un truc du genre:
Dim nom$(5000)
Dim Adresse$(5000)
Dim code_postal.i(5000)
ensuite l'attribution dans chaque tableau, se fera avec soit une lecture de fichiers soit du type "a la main" ou avec lecture de Data , bref, l'essentiel c'est de remplir nos variable donc par exemple :
nom$(0)="toto"
adresse$(0)="21,rue des chantiers"
ville$(0)="Versailles"
code_postal.i(0)=78000
mais... il nous a fallu créer autant de tableau que d’élément dans notre fiche !! c'est lourd !
bon.. ok , mais dans un code avec plein de tableaux , faudra juste ne pas oublier que nom$(x) correspond a la fiche client et pas a la fiche fournisseur ... (ou bien au contenu de la besace de ton perso, et pas au contenu du stock du coffre fort... )
maintenant on va utiliser un tableau toujours mais avec une structure (qui je le rappel n'est qu'une façon de ranger les variables)
on creer notre structure
Structure Fiche ;<--- on donne le nom qu'on veux
nom$
adresse$
ville$
code_postal.i ;<--- on peut mélanger les types de variables dans une structure
EndStructure
voila notre fiche est "precablé"
on dimensionne avec un
Dim Fiche.Fiche(5000) ; un seul tableau va regrouper tout nos membres!!
et on utilise avec
Fiche(0)\nom$="toto" ; pour attribuer un nom a la variable "nom$" se trouvant dans la Structure Fiche !
Fiche(0)\adresse$="21,rue des chantiers" ; pour ajouter l'adresse
etc...
Vous allez me dire, mais c'est pareille , sauf qu'on ecrit bien plus de chose ....
oui , mais l'avantage c'est que si tu créer un tableau qui porte le nom de "nom$" plus tard dans ton listing
avec un Dim nom$(5000) le code ne confondra pas
nom$(0)="toto"
avec
Fiche(0)\nom$="titi"
pour le code les 2 type de variables sont différentes
et c'est bien plus clair de lire Fiche(0)\nom$ car on sait qu'il s'agit d'une variable se trouvant dans la structure "Fiche"
voyez-vous, c'est surtout une question de lecture
pour un sprite c'est plus lisible de lire
mechant()\x =100 ; on sait qu'il s'agit de la coordonée du "mechant"
mechant()\y =200
qu'un simple x=100 :y=200 car dans un code de plusieurs milliers de lignes il y a risque de confondre les variables x ou y
pour les listes chainée c'est encore plus simple !
une list c'est comme une liste de courses
comme une pile d’assiette !
on entasse les infos les une sur les autres , puis lorsqu’on en a besoin, on regarde dans la liste l’élément qu'on veux retirer ...
on peut employer les listes Chainée sans Structure , mais l'utilisation d'une Structure la rend plus lisible ..
la list permet ainsi, ajouter autant d"éléments sans savoir a l'avance combien on va en mettre .... contrairement au tableau
qui oblige a connaitre le nombre à l'avance ...
une liste permet par exemple un TIR de missile d'un vaisseau Spacial , les balles (et leur coordonnées) vont s'entasser dans la liste
et lorsqu'on cesse d'appuyer sur la gâchette , on peut vider la liste jusqu'a ce que tout les sprites des balles soient sortie de l'ecran ou rencontré un ennemi ; on a plus a gerer le nombre de balles (ou missile) ... :)
exemple:
; on recreer une structure qui va englober nos variables
Structure Fiche
nom$
Adresse$
Ville$
code_postal.i
EndStructure
NewList Fiche.Fiche() ; on creer une liste chainée "vide" (une seule list qui va contenir tout nos éléments de notre fiche )
; pour ajouter un élément dans la liste
;ici grace a la structure on ajoute, en fait les éléments d'une fiche complète
AddElement(Fiche()) ; on dit dans quel liste on va ajouter un ou plusieurs éléments
;
Fiche()\nom$ = "toto" ; ici on ajoute l'element nom$
Fiche()\Adresse$="21 rue des chantiers" ; ici on ajoute l'element Adresse
Fiche()\Ville$="Versailles" ; l'element ville
Fiche()\code_postal.i=78000 ; et enfin ajout de l'element code postal
;si je voulais ajouter une nouvelle fiche il me suffirai de refaire
AddElement(Fiche()) ; on dit dans quel liste on va ajouter un ou plusieurs éléments
;
Fiche()\nom$ = "titi" ; ici on ajoute l'element nom$
Fiche()\Adresse$="54 chemin de la colline"
Fiche()\Ville$="Annecy le vieux"
Fiche()\code_postal.i=74940
(ce qui pourrai bien sur etre inclu dans une boucle )
ce qui dans le debbugeur nous affiche ceci
c'est vachement plus lisible qu'un simple tableau non ? :)
de la sorte toutes les variables relatives a la "Fiche" sont regroupée ensemble ..
pour retrouver une fiche précise on peut faire ainsi :
; ressortir une fiche precise :
ForEach Fiche() ; pour tout les elements se trouvant dans la list "Fiche"
If Fiche()\nom$="titi" ; on regarde si on trouve le champ "titi"
debug Fiche()\nom$ ; et on ressort tout les éléments composant cette fiche (ici via Debug a compiler avec Debugger ON bien sur )
debug Fiche()\Adresse$
debug Fiche()\Ville$
debug Fiche()\code_postal.i
Endif
Next
et voila, c'est ultra rapide meme sur des milliers de fiches !
on peut aussi faire :
SelectElement(Fiche(), 0) ; on sélectionne la fiche numero 0 (la premiere)
debug Fiche()\nom$ ; et on affiche son contenu ....
debug Fiche()\Adresse$
debug Fiche()\Ville$
debug Fiche()\code_postal.i
La difference entre les deux methodes, c'est vous l'aurez compris
que dans la methode 1 on recherche une fiche d'apres un contenu (ici le nom$)
alors que la deuxieme methode, on sait deja que ce qui nous interesse est dans la fiche 0 , donc on saute directement a cette "index" :)
autre avantage , on dispose dans le Purebasic de possibilité de Tri en fonction d'un des elements ...
on peut ainsi trier nos fiches par ordre alphabetique, ou en fonction de la valeur d'un des membres de la fiche :)
voila en esperant que vous aurez saisi l'interet des Structures , et des listes Chainées
dans le langage Purebasic :)
Dernière édition par Dobro le Sam 19 Oct 2019, 19:34, édité 3 fois
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Oui c'est vrai, fais en profiter tout le monde (demande en MP à la base)
Les structures, c'est plein d'avantages, mais il faut les accepter
Les structures, c'est plein d'avantages, mais il faut les accepter
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
tiens PUREBASIC ne supporte pas le MP3
On va passer à la musique .MOD alors
On va passer à la musique .MOD alors
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
drfloyd a écrit:tiens PUREBASIC ne supporte pas le MP3
On va passer à la musique .MOD alors
je reste calme.... je reste calme ....
c'est vrais que le purebasic et le Mp3 c'est pas par defaut la panacée
je pourrait te dire Que Purebasic gere tres bien le Format OGG qui est l'equivalent sans Licence du MP3
et qu'il existe des convertisseurs d'un format dans l'autre Gratuit ....
mais par esprit de contradiction , je vais quand meme te dire, que de façon legerement détoourné on peut lire du Mp3
avec PureBasic
avec les fonctions de la librairie "Movie"
tu as
LoadMovie(#Mp3, MP3File) ; pour charger un mp3 (ou une video)
et
PlayMovie(#Mp3, WindowID(#MainForm)) (doit etre rataché a la fenetre ici "#mainForm" ) pour jouer le mp3 (ou une video)
et ça c'etait du Natif (donc en principe marche pour les 3 plateformes )
bon c'est pas spécifié dans la doc , mais tout les codeurs Purebasic savent ça
j'ajoute que si t'avais moins d'oursins dans les poches (tu m'a cherché ) tu pourrai aussi utiliser facilement les Api Windows
avec la version complete de Purebasic
et utiliser les fonctions MCI suivante .... ET TOC !
- Code:
Procedure MP3_Load(Nb,file.s)
;i=mciSendString_("open Sequencer!"+Chr(34)+file+Chr(34)+" alias mid"+Str(Nb),0,0,0)
i=mciSendString_("OPEN "+Chr(34)+file+Chr(34)+" Type MPEGVIDEO ALIAS MP3_"+Str(Nb),0,0,0)
If i=0
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
Procedure MP3_Play(Nb)
i=mciSendString_("play MP3_"+Str(Nb),0,0,0)
ProcedureReturn i
EndProcedure
Procedure MP3_PlayStart(Nb)
i=mciSendString_("play MP3_"+Str(Nb)+" from "+Str(0),0,0,0)
ProcedureReturn i
EndProcedure
Procedure MP3_PlayPart(Nb,Start,endPos)
i=mciSendString_("play MP3_"+Str(Nb)+" from "+Str(Start)+" to "+Str(endPos),0,0,0)
ProcedureReturn i
EndProcedure
Procedure MP3_Pause(Nb)
i=mciSendString_("pause MP3_"+Str(Nb),0,0,0)
ProcedureReturn i
EndProcedure
Procedure MP3_Resume(Nb)
i=mciSendString_("resume MP3_"+Str(Nb),0,0,0)
ProcedureReturn i
EndProcedure
Procedure MP3_Stop(Nb)
i=mciSendString_("stop MP3_"+Str(Nb),0,0,0)
ProcedureReturn i
EndProcedure
Procedure mp3_Free(Nb)
i=mciSendString_("close MP3_"+Str(Nb),0,0,0)
ProcedureReturn i
EndProcedure
Procedure MP3_SetVolume(Nb,volume)
i=mciSendString_("SetAudio MP3_"+Sr(Nb)+" volume to "+Str(volume),0,0,0)
ProcedureReturn i
EndProcedure
Procedure MP3_GetVolume(Nb)
a$=Space(#MAX_PATH)
i=mciSendString_("status MP3_"+Str(Nb)+" volume",@a$,#MAX_PATH,0)
ProcedureReturn Val(a$)
EndProcedure
Procedure MP3_SetSpeed(Nb,Tempo)
i=mciSendString_("set MP3_"+Str(Nb)+" Speed "+Str(Tempo),0,0,0)
ProcedureReturn i
EndProcedure
Procedure MP3_GetSpeed(Nb)
a$=Space(#MAX_PATH)
i=mciSendString_("status MP3_"+Str(Nb)+" Speed",@a$,#MAX_PATH,0)
ProcedureReturn Val(a$)
EndProcedure
Procedure MP3_GetLength(Nb)
a$=Space(#MAX_PATH)
i=mciSendString_("status MP3_"+Str(Nb)+" length",@a$,#MAX_PATH,0)
ProcedureReturn Val(a$)
EndProcedure
Procedure MP3_GetPosition(Nb)
a$=Space(#MAX_PATH)
i=mciSendString_("status MP3_"+Str(Nb)+" position",@a$,#MAX_PATH,0)
ProcedureReturn Val(a$)
EndProcedure
Procedure MP3_Seek(Nb,pos)
i=mciSendString_("Seek MP3_"+Str(Nb)+" to "+Str(pos),0,0,0)
ProcedureReturn i
EndProcedure
Procedure.s MP3_TimeString(time)
time/1000
sek=time%60:time/60
min=time%60:time/60
ProcedureReturn RSet(Str(time),2,"0")+":"+RSet(Str(min),2,"0")+":"+RSet(Str(sek),2,"0")
EndProcedure
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Mais je ne t'ai pas cherché, c'était juste une constatation en lisant la doc Je ne cherchais pas spécialement à utiliser du MP3. Mais merci pour les tuyaux ! Enorme lire de du MP3 avec la fonction vidéo
Fort possible quand meme que j'utilise de la musique MOD dans mon jeu car ca ne prend pas de place et ça fait plus rétro :)
Fort possible quand meme que j'utilise de la musique MOD dans mon jeu car ca ne prend pas de place et ça fait plus rétro :)
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
sinon comme je te l'ai dit, Purebasic gere tres bien les sons *.Ogg
qui sont l'equivalent Grapuit (sans licence) du Mp3
il existe des convertisseurs MP3-> OGG en Prg ou meme en ligne
comme ici :
https://audio.online-convert.com/fr/convertir-en-ogg
pour charger un fichier Ogg il suffit de faire ceci :
a toute fin utile , il faut savoir qu'en Purebasic, on peut aussi integrer les fichiers qui servent au jeux , DANS l'executable !!
ce qui evite d'avoir un EXE et plein de fichiers du jeux, qui seraient accessibles
par l'utilisateur, des fois on a envie de proteger ses propres fichiers Images, ou sons ...
la solution que propose le Purebasic , c'est d'integrer au moment de la compilation
les fichiers qu'on desire proteger dans l'executable lui meme
voici comment on fait par exemple pour un fichier *.OGG
InitSound() ; Initialisation des Sons
UseOGGSoundDecoder() ; Utilisation des fichiers ogg
CatchSound(0, ?Music) ; en debut de listing, on demande a Purebasic d'aller integrer le fichier Music
; dont le chemin se trouve indiqué dans la DataSection
"?Music" renvoi l'adresse du pointeur du debut de la Datasection
; Le son joue en boucle
PlaySound(0, #PB_Sound_Loop) ; declenche la lecture du son (ou de la musique ) , ici la musique jouera en boucle
MessageRequester("Info", "Ok pour quitter.")
; la dataSection
DataSection
Music: ; le Label qui servira de pointeur de debut de Zone DataSection
IncludeBinary "Sound.ogg" ; ici le Chemin vers notre fichier a inclure lorsqu'on compilera le programme
EndDataSection
(j'ai mis directement "Sound.ogg" si le fichier se trouve au meme endroit que le prg )
mais on pourrai mettre : IncludeBinary "c:\toto\titi\tutu\Sound.ogg"
; ainsi, plus besoin de distribuer notre fichier musique , puisqu'il sera inclu dans l'executable !!
note qu'on peut faire la meme chose avec les images avec CatchImage() , les Sprites avec CatchSprite() etc...
qui sont l'equivalent Grapuit (sans licence) du Mp3
il existe des convertisseurs MP3-> OGG en Prg ou meme en ligne
comme ici :
https://audio.online-convert.com/fr/convertir-en-ogg
pour charger un fichier Ogg il suffit de faire ceci :
- Code:
InitSound() ; Initialisation des Sons
UseOGGSoundDecoder() ; Utilisation des fichiers ogg
; Chargement d'un son depuis un fichier
LoadSound(0, #PB_Compiler_Home +"Examples\3D\Data\Siren.ogg")
; Le son joue en boucle
PlaySound(0, #PB_Sound_Loop, 20)
MessageRequester("Info", "Ok pour quitter.")
FreeSound(0) ; Le son est libéré
a toute fin utile , il faut savoir qu'en Purebasic, on peut aussi integrer les fichiers qui servent au jeux , DANS l'executable !!
ce qui evite d'avoir un EXE et plein de fichiers du jeux, qui seraient accessibles
par l'utilisateur, des fois on a envie de proteger ses propres fichiers Images, ou sons ...
la solution que propose le Purebasic , c'est d'integrer au moment de la compilation
les fichiers qu'on desire proteger dans l'executable lui meme
voici comment on fait par exemple pour un fichier *.OGG
InitSound() ; Initialisation des Sons
UseOGGSoundDecoder() ; Utilisation des fichiers ogg
CatchSound(0, ?Music) ; en debut de listing, on demande a Purebasic d'aller integrer le fichier Music
; dont le chemin se trouve indiqué dans la DataSection
"?Music" renvoi l'adresse du pointeur du debut de la Datasection
; Le son joue en boucle
PlaySound(0, #PB_Sound_Loop) ; declenche la lecture du son (ou de la musique ) , ici la musique jouera en boucle
MessageRequester("Info", "Ok pour quitter.")
; la dataSection
DataSection
Music: ; le Label qui servira de pointeur de debut de Zone DataSection
IncludeBinary "Sound.ogg" ; ici le Chemin vers notre fichier a inclure lorsqu'on compilera le programme
EndDataSection
(j'ai mis directement "Sound.ogg" si le fichier se trouve au meme endroit que le prg )
mais on pourrai mettre : IncludeBinary "c:\toto\titi\tutu\Sound.ogg"
; ainsi, plus besoin de distribuer notre fichier musique , puisqu'il sera inclu dans l'executable !!
note qu'on peut faire la meme chose avec les images avec CatchImage() , les Sprites avec CatchSprite() etc...
Dernière édition par Dobro le Dim 20 Oct 2019, 10:21, édité 6 fois
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
c'est top ça d'integer les sons à l'EXE ! On peut faire la meme chose pour les graphismes ??????
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
j'etais en train de reediter mon message precedent a ce propos
je me reedite souvent, car je me relis 20 fois pour etre sur de pas ecrire de conneries :)
en plus j’essaie dans la mesure de mes moyens, de corriger mes fautes d'orthographe :)
ps: t'es foutu mon pote !
t'a touché au Purebasic, tu ne pourra plus en sortir ! GNiark Gniark Gniark
je me reedite souvent, car je me relis 20 fois pour etre sur de pas ecrire de conneries :)
en plus j’essaie dans la mesure de mes moyens, de corriger mes fautes d'orthographe :)
ps: t'es foutu mon pote !
t'a touché au Purebasic, tu ne pourra plus en sortir ! GNiark Gniark Gniark
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Enorme
Oui je crois que je suis foutu : "DOBRO M'A TUER"
Sérieux, malgré certains aspects douteux (le texte et les fontes (j'ai encore des soucis LOL j'y reviendrais c'et pas urgent, il manque "PRINT"!), certaines commandes à rallonge, des zones de dessins primaires délimitées) c'est au final de la bombe baby !
Des commandes basic de base très standard (malgré les apparences)
GOTO et GOSUB (pour les ultra core ! )
pas obligé de déclarer tes variables (pour les radicaux, comme moi, je déteste ça)
Un editeur tres sympa
compilation super rapide
Execution plus rapide que la lumière
des .EXE de folie (ultra courts et integrant les fichiers)
stand alone sur clé USB
une vraie communauté (même si on retrouve peu ce langage dans les logiciels et jeux en vente, c'est surpenant)
1400 commandes, c'est énorme... mais on s'en tape, perso ma demo de shoot em up en utilise très peu (moins de 40 je crois !)... avec un EXE de qq Ko ! On peut bosser à plusieurs niveaux differents :
- avec des commandes de base comme au bon vieux temps (avec goto et gosub)
- moyennement structuré avec des fonctions, procedures, structures...
- ou un truc super structuré et tordus qui plaira aux fans de C
- ou les gros malades qui intégreront de l'assembleur
Faut juste un petit programme tuto de base pour paramétrer l'environnement... C'est c'est en fait le seul soucis car cet aspect n'a rien d'instinctif...Mais si tu as à disposition un petit prog bien fait qui résume l'essentiel en 40 ou 50 lignes, bah en une journée c'est bon tu es formé (souvent ce genre de petit programme manque dans les guides)
A quand une version pour développer des jeux Switch ????
Enfoiré de Dobro, t'aurai jamais du venir sur ce forum.
Oui je crois que je suis foutu : "DOBRO M'A TUER"
Sérieux, malgré certains aspects douteux (le texte et les fontes (j'ai encore des soucis LOL j'y reviendrais c'et pas urgent, il manque "PRINT"!), certaines commandes à rallonge, des zones de dessins primaires délimitées) c'est au final de la bombe baby !
Des commandes basic de base très standard (malgré les apparences)
GOTO et GOSUB (pour les ultra core ! )
pas obligé de déclarer tes variables (pour les radicaux, comme moi, je déteste ça)
Un editeur tres sympa
compilation super rapide
Execution plus rapide que la lumière
des .EXE de folie (ultra courts et integrant les fichiers)
stand alone sur clé USB
une vraie communauté (même si on retrouve peu ce langage dans les logiciels et jeux en vente, c'est surpenant)
1400 commandes, c'est énorme... mais on s'en tape, perso ma demo de shoot em up en utilise très peu (moins de 40 je crois !)... avec un EXE de qq Ko ! On peut bosser à plusieurs niveaux differents :
- avec des commandes de base comme au bon vieux temps (avec goto et gosub)
- moyennement structuré avec des fonctions, procedures, structures...
- ou un truc super structuré et tordus qui plaira aux fans de C
- ou les gros malades qui intégreront de l'assembleur
Faut juste un petit programme tuto de base pour paramétrer l'environnement... C'est c'est en fait le seul soucis car cet aspect n'a rien d'instinctif...Mais si tu as à disposition un petit prog bien fait qui résume l'essentiel en 40 ou 50 lignes, bah en une journée c'est bon tu es formé (souvent ce genre de petit programme manque dans les guides)
A quand une version pour développer des jeux Switch ????
Enfoiré de Dobro, t'aurai jamais du venir sur ce forum.
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
Dobro a écrit:t'a touché au Purebasic, tu ne pourra plus en sortir ! GNiark Gniark Gniark
Le Doc a accroché à ton langage ? C'est toi qui es foutu, tu vas devoir lui expliquer des trucs
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: PURE BASIC - Le Topic officiel
là j'ai assez e connaissances pour dév un jeu complet sans emmerder le Prof Dobro...
C'est surtout Dobro qui volontairement nous fait de petits tutos sans questions préalables. Il nous fait profiter de son amour pour PureBasic.
C'est surtout Dobro qui volontairement nous fait de petits tutos sans questions préalables. Il nous fait profiter de son amour pour PureBasic.
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
merci ,
c'est surtout que je viens du meme monde que vous...
le Vrais Basic a l'ancienne
que j'ai probablement eu les memes "conflits" vis a vis des "pros" de la programmation
les memes "apriori" , a defendre aussi des causes parfois indéfendable
(Amiga/ST)
Bref, c'est parce qu'en lisant le Doc , je me suis reconnu parfois dans ses dires
et que le temps m'a permis aussi d'evoluer dans mon coin, et surtout d'apprendre
a ne plus avoir d'idées reçut , ou partisanes sur tel ou tel langage
le monde du purebasic, je le cotoie depuis pas mal de temps
et je le dis, le langage a des defauts ... on y viendra a l'occasion
mais il m'a permis de me coder tout ce que j'ai eu envie de faire
et de me permettre de le faire simplement ...
bien sur au debut avec des reflexes a "l'ancienne" (Goto/Gosub)
mais depuis j'ai mis mes poings dans mes poches , et j'ai ouvert mon esprit au techniques nouvelles , j'ai aussi du le faire pour repondre a des questions sur le Forum
Purebasic a l'epoque ...
en faisant des tutos, on apprends soi-meme :)
bref, je souhaite a quiconque s’intéressant a la programmation de regarder
de jeter un oeil a ce langage bien particulier sur pleins d'aspect ...
mais je veux rester clair, je n'ai pas d'action sur le langage
Fred Laboureur le créateur n'est pas mon pote ....
mais force est de reconnaitre qu'il nous a fait un superbe outils
j'ai programmé pleins de prg, que j'utilise tout les jours...
et donc je ne pourrai plus me passer :)
c'est incroyable tous ce qu'on peut coder en Purebasic
Ps: a propos des Tuto, les Forums du langage en contiennent plein !!
l'un des defaut majeur, c'est qu'ils ont souvent été ecrits dans des versions
"ancienne" de Purebasic, et qu'il faut souvent retoucher le code pour qu'il fonctionne
avec la version en cours ... c'est l'un des GROS defaut du Purebasic, c'est que les mises a jours
peuvent complétement faire foirer un ancien code qui marchait bien ...
bon , on peut jours utiliser les anciennes version (un dans chaque dossier et c'est marre )
mais c'est quand meme pas terrible ...
c'est surtout que je viens du meme monde que vous...
le Vrais Basic a l'ancienne
que j'ai probablement eu les memes "conflits" vis a vis des "pros" de la programmation
les memes "apriori" , a defendre aussi des causes parfois indéfendable
(Amiga/ST)
Bref, c'est parce qu'en lisant le Doc , je me suis reconnu parfois dans ses dires
et que le temps m'a permis aussi d'evoluer dans mon coin, et surtout d'apprendre
a ne plus avoir d'idées reçut , ou partisanes sur tel ou tel langage
le monde du purebasic, je le cotoie depuis pas mal de temps
et je le dis, le langage a des defauts ... on y viendra a l'occasion
mais il m'a permis de me coder tout ce que j'ai eu envie de faire
et de me permettre de le faire simplement ...
bien sur au debut avec des reflexes a "l'ancienne" (Goto/Gosub)
mais depuis j'ai mis mes poings dans mes poches , et j'ai ouvert mon esprit au techniques nouvelles , j'ai aussi du le faire pour repondre a des questions sur le Forum
Purebasic a l'epoque ...
en faisant des tutos, on apprends soi-meme :)
bref, je souhaite a quiconque s’intéressant a la programmation de regarder
de jeter un oeil a ce langage bien particulier sur pleins d'aspect ...
mais je veux rester clair, je n'ai pas d'action sur le langage
Fred Laboureur le créateur n'est pas mon pote ....
mais force est de reconnaitre qu'il nous a fait un superbe outils
j'ai programmé pleins de prg, que j'utilise tout les jours...
et donc je ne pourrai plus me passer :)
c'est incroyable tous ce qu'on peut coder en Purebasic
Ps: a propos des Tuto, les Forums du langage en contiennent plein !!
l'un des defaut majeur, c'est qu'ils ont souvent été ecrits dans des versions
"ancienne" de Purebasic, et qu'il faut souvent retoucher le code pour qu'il fonctionne
avec la version en cours ... c'est l'un des GROS defaut du Purebasic, c'est que les mises a jours
peuvent complétement faire foirer un ancien code qui marchait bien ...
bon , on peut jours utiliser les anciennes version (un dans chaque dossier et c'est marre )
mais c'est quand meme pas terrible ...
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Dobro a écrit:merci ,
c'est surtout que je viens du meme monde que vous...
le Vrais Basic a l'ancienne
Que tu as laissé tomber sans états d'âmes, je te félicite
que j'ai probablement eu les memes "conflits" vis a vis des "pros" de la programmation
Perso j'ai jamais eu aucun conflit avec personne. Faut dire que je les ai pas cherchés...
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: PURE BASIC - Le Topic officiel
j'aurai pas du ecrire "conflit" mais Snobisme LOL
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
T'as pas le droit, c'est MON mot
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: PURE BASIC - Le Topic officiel
y a pas "PRINT" dans PUREBASIC, c'est quand meme un sacré scandale.
Bordel, j'ai fais des "stress tests" avec des milliers de sprites, faut vraiment y aller pour faire ramer Purebasic !!!! Même sur mon PC "netbook" Pentium 4200 sans ventilo !!!
Et meme avec la détection de collision de sprites au pixel près le bestiaux assure à mort !!!!
Bordel, j'ai fais des "stress tests" avec des milliers de sprites, faut vraiment y aller pour faire ramer Purebasic !!!! Même sur mon PC "netbook" Pentium 4200 sans ventilo !!!
Et meme avec la détection de collision de sprites au pixel près le bestiaux assure à mort !!!!
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
drfloyd a écrit:y a pas "PRINT" dans PUREBASIC, c'est quand meme un sacré scandale.*
mais si !! :)
je t'ai deja expliqué :)
En purebasic on creer un contexte Graphique (soit une image, un sprite, un ecran , un Gadget )
avec
startdrawing(*********)
...
....
StopDrawing()
on peut utiliser toutes les fonctions se trouvant dans la Bibliotheque "2D Drawing"
ton Print c'est en fait DRAWTEXT()
voici un exemple : (ici j'utilise une image, mais tu peux aussi utiliser l'ecran en creant l'ecran et comme sortie Graphique
StartDrawing(ScreenOutput())
- Code:
If OpenWindow(0, 0, 0, 600, 600, "DrawText Exemple", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ; creer une fenetre
If CreateImage(0, 600, 600) ; on creer une image
StartDrawing(ImageOutput(0)) ; on va ecrire dedans
DrawingMode(#PB_2DDrawing_Transparent) ; avec du text transparent
Box(0, 0, 600, 600, RGB(255, 255, 200)) ; on dessine une Box jaune clair
For i = 1 To 90 ; on va ecrire 90 lignes de text
DrawText(Random(600), Random(600), "Hello World!", RGB(Random(255), Random(255), Random(255))) ; voila on ecrit avec differente couleurs
Next i
StopDrawing() ; ici on a fini d'ecrire dans notre image
ImageGadget(0, 0, 0, 600, 600, ImageID(0)) ; on affiche l'image resultat dans la fenetre
EndIf
Repeat ; boucle principale, qui attent un evenement
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Non mais pour le Doc, un PRINT, c'est PRINT, pas DrawText...
Je te l'avais dit : bon courage
Je te l'avais dit : bon courage
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: PURE BASIC - Le Topic officiel
ha mais Print existe aussi en Purebasic
mais en mode Console seulement
comme ça
si vraiment la syntaxe le gene
on peut aussi utiliser les Macros !!
mais en mode Console seulement
comme ça
- Code:
OpenConsole("test")
Print( "Salut le Doc ")
input()
CloseConsole()
si vraiment la syntaxe le gene
on peut aussi utiliser les Macros !!
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
les macro permettent de pouvoir changer le nom d'une fonction
par autre chose par exemple
je reprends l'exemple des lignes de couleur ci dessus
la ligne :
Macro Print:DrawText:EndMacro
Permet d'utiliser "Print" a la place de "Drawtext" !!! LOL et TOC !
par autre chose par exemple
je reprends l'exemple des lignes de couleur ci dessus
la ligne :
Macro Print:DrawText:EndMacro
Permet d'utiliser "Print" a la place de "Drawtext" !!! LOL et TOC !
- Code:
Macro Print:DrawText:EndMacro
If OpenWindow(0, 0, 0, 600, 600, "DrawText Exemple", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ; creer une fenetre
If CreateImage(0, 600, 600) ; on creer une image
StartDrawing(ImageOutput(0)) ; on va ecrire dedans
DrawingMode(#PB_2DDrawing_Transparent) ; avec du text transparent
Box(0, 0, 600, 600, RGB(255, 255, 200)) ; on dessine une Box jaune clair
For i = 1 To 90 ; on va ecrire 90 lignes de text
Print(Random(600), Random(600), "Hello World!", RGB(Random(255), Random(255), Random(255))) ; voila on ecrit avec differente couleurs
Next i
StopDrawing() ; ici on a fini d'ecrire dans notre image
ImageGadget(0, 0, 0, 600, 600, ImageID(0)) ; on affiche l'image resultat dans la fenetre
EndIf
Repeat ; boucle principale, qui attent un evenement
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
avec les macro, on peut pousser le délire plus loin :)
ce qui au final une fois mis en forme le meme code
peut donner un "PUNCH" (expression tiré des GFAPUNCH )
voici le meme code toujours "punché" grace au Macro (note que j'ai pas poussé a l'extreme LOL )
- Code:
Macro Ma:Macro:EndMacro:Ma Print:DrawText:End#Ma:Ma OPW:openwindow:End#Ma
Ma CI:Createimage:end#Ma:Ma RND:Random:End#Ma:Ma SD: StartDrawing:End#Ma
Ma SDD: StopDrawing:End#Ma:Ma DM: DrawingMode:End#Ma:Ma IM: Image:End#Ma
Ma win:Window:End#Ma
If OPW(0, 0, 0, 600, 600, "DrawText Exemple", #PB_#Win#_SystemMenu | #PB_#Win#_ScreenCentered) ; creer une fenetre
If CI(0, 600, 600) ; on creer une image
SD(IM#Output(0)) ; on va ecrire dedans
DM(#PB_2DDrawing_Transparent) ; avec du text transparent
Box(0, 0, 600, 600, RGB(255, 255, 200)) ; on dessine une Box jaune clair
For i = 1 To 90 ; on va ecrire 90 lignes de text
Print(Rnd(600), Rnd(600), "Hello World!", RGB(Rnd(255), Rnd(255), Rnd(255))) ; voila on ecrit avec differente couleurs
Next i
SDD() ; ici on a fini d'ecrire dans notre image
IM#Gadget(0, 0, 0, 600, 600, IM#ID(0)) ; on affiche l'image resultat dans la fenetre
EndIf
Repeat ; boucle principale, qui attent un evenement
Event = Wait#Win#Event()
Until Event = #PB_Event_Close#Win
EndIf
ce qui au final une fois mis en forme le meme code
peut donner un "PUNCH" (expression tiré des GFAPUNCH )
voici le meme code toujours "punché" grace au Macro (note que j'ai pas poussé a l'extreme LOL )
- Code:
Macro Ma:Macro:EndMacro:Ma Print:DrawText:End#Ma:Ma OPW:openwindow:End#Ma:Ma CI:Createimage:end#Ma
Ma RND:Random:End#Ma:Ma SD:StartDrawing:End#Ma:Ma SDD:StopDrawing:End#Ma
Ma DM:DrawingMode:End#Ma:Ma IM:Image:End#Ma:Ma win:Window:End#Ma
If OPW(0,0,0,600,600,"DrawText Exemple",;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
#PB_#Win#_SystemMenu|#PB_#Win#_ScreenCentered):If CI(0,600,600):SD(IM#Output(0))
DM(#PB_2DDrawing_Transparent):Box(0,0,600,600,RGB(255,255,200)):For i=1 To 90;;;
Print(Rnd(600),Rnd(600),"Hello World!",RGB(Rnd(255),Rnd(255),Rnd(255))):Next i;;
SDD():IM#Gadget(0,0,0,600,600,IM#ID(0)):EndIf:Repeat:Event=Wait#Win#Event();;;;;
Until Event=#PB_Event_Close#Win:EndIf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Tu devrais essayer le Brainfuck...
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: PURE BASIC - Le Topic officiel
l'un de nos membre JohnJohnsonSHERMAN
c'est amusé a faire un interpréteur BrainFuck en Purebasic
voici le code de l'interpreteur
et voici le code de 3 Prg BrainFuck a coller dans l'interpeteur lorsqu'il est en fonction
et appuis sur Return pour lancer le prg et voir le resultat
Prg numero 1 (hello World)
Prg numero 2(afficher le nombre 1020 )
Prg numero 3 (affiche "le BrainFuck c'est cool! )
Les instructions sont celles du Brainfuck traditionnel + le ":" qui permet d'afficher la valeur brute de l'octet pointé, ce qui est pratique quand on ne veut pas afficher le caractére ASCII correspondant, mais qui du coup repréente une légére digression au but du BF, qui est d'est chiant à coder ^^
c'est amusé a faire un interpréteur BrainFuck en Purebasic
voici le code de l'interpreteur
- Code:
#MEMSIZE = 1024
#MAXLPLEVEL = 32
OpenConsole("Brain Not Found")
ConsoleColor(0,7)
PrintN("############################ Interpréteur Brainfuck ############################")
ConsoleColor(7,0)
Dim memory.a(#MEMSIZE)
Dim loops(#MAXLPLEVEL)
Define ptr, loopLevel, bfScript$, i, len, inpt$, errCount
Declare Error(Text.s)
ConsoleColor(10,0)
Print("$iBF$>")
ConsoleColor(14,0)
bfScript$ = Input()
len = Len(bfScript$)
ConsoleColor(2,0)
PrintN("Exécution en cours...")
ConsoleColor(7,0)
For i=1 To len
Select Asc(Mid(bfScript$,i,1))
Case '+'
memory(ptr) +1
Case '-'
memory(ptr) -1
Case '>'
ptr +1
Case '<'
ptr -1
If ptr < 0
Error("Segmentation error : pointer out of memory : "+Str(ptr)+" Must be [0~1024]")
errCount +1
Break
EndIf
Case '.'
Print(Chr(memory(ptr)))
Case ':'
Print(Str(memory(ptr)))
Case ','
ConsoleColor(10,0)
Print("$>")
ConsoleColor(7,0)
inpt$ = Input()
memory(ptr) = Val(inpt$)
Case '['
loopLevel +1
loops(loopLevel) = i
Case ']'
If memory(ptr) = 0
loopLevel -1
Else
i = loops(loopLevel)
EndIf
EndSelect
Next
ConsoleColor(2,0)
PrintN(~"\nExécution terminée, erreurs : "+Str(errCount))
ConsoleColor(10,0)
Print("Pressez Entrée pour quitter.")
Input()
Procedure Error(Text.s)
ConsoleColor(12,0)
PrintN(Text)
ConsoleColor(7,0)
EndProcedure
et voici le code de 3 Prg BrainFuck a coller dans l'interpeteur lorsqu'il est en fonction
et appuis sur Return pour lancer le prg et voir le resultat
Prg numero 1 (hello World)
- Code:
++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.>+.+++++++..+++.<<++.>+++++++++++++++.>.+++.------.--------.<<+.<.
Prg numero 2(afficher le nombre 1020 )
- Code:
++++++++++:>++:>:
Prg numero 3 (affiche "le BrainFuck c'est cool! )
- Code:
-[------->+<]>+++.-[--->++++<]>+.--[--->+<]>-.+[->++<]>.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.-[++>---<]>+.+[->+++<]>.[->+++<]>--.-[--->+<]>+++.[--->+<]>----.+.[---->+<]>+++.+[->+++<]>.++++++++++++..---.[++>---<]>--.---[->++<]>.--[->++++++<]>.
Les instructions sont celles du Brainfuck traditionnel + le ":" qui permet d'afficher la valeur brute de l'octet pointé, ce qui est pratique quand on ne veut pas afficher le caractére ASCII correspondant, mais qui du coup repréente une légére digression au but du BF, qui est d'est chiant à coder ^^
Dernière édition par Dobro le Lun 21 Oct 2019, 00:43, édité 1 fois
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Miam, aussi digeste que les codes des deukilos
https://www.gamopat-forum.com/t85503-les-deuxkilos-saison-2016#2300958
https://www.gamopat-forum.com/t85503-les-deuxkilos-saison-2016#2300958
Re: PURE BASIC - Le Topic officiel
oui , il y a un air de famille
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
Dobro a écrit:drfloyd a écrit:y a pas "PRINT" dans PUREBASIC, c'est quand meme un sacré scandale.*
mais si !! :)
je t'ai deja expliqué :)
En purebasic on creer un contexte Graphique (soit une image, un sprite, un ecran , un Gadget )
avec
startdrawing(*********)
...
....
StopDrawing()
on peut utiliser toutes les fonctions se trouvant dans la Bibliotheque "2D Drawing"
ton Print c'est en fait DRAWTEXT()
voici un exemple : (ici j'utilise une image, mais tu peux aussi utiliser l'ecran en creant l'ecran et comme sortie Graphique
StartDrawing(ScreenOutput())
- Code:
If OpenWindow(0, 0, 0, 600, 600, "DrawText Exemple", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) ; creer une fenetre
If CreateImage(0, 600, 600) ; on creer une image
StartDrawing(ImageOutput(0)) ; on va ecrire dedans
DrawingMode(#PB_2DDrawing_Transparent) ; avec du text transparent
Box(0, 0, 600, 600, RGB(255, 255, 200)) ; on dessine une Box jaune clair
For i = 1 To 90 ; on va ecrire 90 lignes de text
DrawText(Random(600), Random(600), "Hello World!", RGB(Random(255), Random(255), Random(255))) ; voila on ecrit avec differente couleurs
Next i
StopDrawing() ; ici on a fini d'ecrire dans notre image
ImageGadget(0, 0, 0, 600, 600, ImageID(0)) ; on affiche l'image resultat dans la fenetre
EndIf
Repeat ; boucle principale, qui attent un evenement
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
Bordel je déconnais Faut pas prendre au pied de la lettre tout ce que je dis
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
Dobro a écrit:les macro permettent de pouvoir changer le nom d'une fonction
par autre chose par exemple
je reprends l'exemple des lignes de couleur ci dessus
la ligne :
Macro Print:DrawText:EndMacro
Permet d'utiliser "Print" a la place de "Drawtext" !!! LOL et TOC !
ah oui tres simple pour créer une macro !
Mais je n'aime pas les utiliser de manière générale car tu finis par oublier le vrai nom et c'est chiant quand tu montres un bout de code à quelqu'un
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
Tryphon a écrit:Non mais pour le Doc, un PRINT, c'est PRINT, pas DrawText...
Je te l'avais dit : bon courage
je déconnais, le courage c'est de comprendre quand je déconne ou pas J'ai honte, je lance le professeur dans des exemples de code pour rien... j'espère que ce sont des copier coller ?
j'aime bien DRAWTEXT en plus
_______________________________________________________
Re: PURE BASIC - Le Topic officiel
drfloyd a écrit:code pour rien... j'espère que ce sont des copier coller ?
en PB de toutes façons, on code beaucoup par Copier-coller
soit a partir des exemples de la doc, qu'on modifie ensuite
soit a partir de Bibliothèque de code perso, qu'on modifie (ou pas) pour l'exemple
pas de soucis :)
cette façon de faire permet de ne pas a avoir a apprendre par cœur la syntaxe des fonctions....
ou la méthodologie (je suis une grosse feignasse ! )
je pense notamment a la boucle d’évent , ça fait pourtant des années que je code en PB
mais je ne connais toujours pas par coeur les syntaxes .. ni les constantes...
bref j'ai une mémoire de poisson rouge
je ne retiens pas les détails, j'ai seulement une mémoire infaillible pour les principes
structure general d'un code en PB c'est :
voila en gros ce que je retiens, c'est surtout la présentation général d'un code
;*************************************************************
utilisation des fonctions de chargement de format image/son.. (Jpg,/png/tif/tga)
comme "UseJPEGImageDecoder()" par exemple
pour pouvoir les utiliser dans le code
declaration de Procedures
les structures (s'il y en a )
enumeration (variables/constantes )
creation des images,sprites etc .. si il y en a
; ----------------------------------------------------
Boucle-principal
evenement windows (en select-case-endselect )
;..
gestion des touches clavier/joystick
regle de rebond collision imposés au sprites si il y en a
affichage Graphique (FlipBuffer()) si il y en a ...
fin-boucle principale
; ----------------------------------------------------
; -------------------------
Zone des procedures :
fin zone Procedure
; -------------------------
; --------------
DataSection
endDataSection
; ---------------
; ******************************************************
après, c'est du copié coller que j'adapte , le plus souvent
ps: on peut ne pas déclarer les procédures, a condition qu'elles soient en début de listing
perso je déteste ça , parce que pour accéder a la boucle principal et voir ce qui se passe
on est obligé de scroller 2 heures ....
bref les procédures c'est a la fin du code, moyennant une petite déclaration en début de listing
la déclaration c'est simple ,c'est juste ceci
Declare.i toto(x,y)
pour la procedure qui se trouve en fin de listing :
Procedure.i Toto(x,y)
ProcedureReturn X*Y
EndProcedure
le ".i" indique le type de donnée que la procedure renvoie
je rappel qu'on pose le curseur sur n'importe quel mot Purebasic ou fonction PB , un appuis su F1
envoi directement a la Doc sur la bonne Section, ou on a une explication de la syntaxe, et un exemple a chaque fois !
exemple qu'on peut copier-coller dans notre listing pour l'adapter
Dobro- Patient contaminé
- Nombre de messages : 293
Age : 59
Localisation : 43
Date d'inscription : 30/09/2019
Re: PURE BASIC - Le Topic officiel
je m'amuse bien je sui en train de tester les limites de PURE en 2D/60FPS sur mon petit netbook, et bon... bah y a du potentiel ! Pas sur d'obtenir de meilleurs résultats en C /C++....
_______________________________________________________
Page 9 sur 12 • 1, 2, 3 ... 8, 9, 10, 11, 12
Sujets similaires
» [BASIC QB64] le topic officiel du meilleur basic au monde ?
» [BLITZ BASIC] le topic officiel du meilleur basic au monde ?
» * MSX * TOPIC OFFICIEL II
» GOG le topic officiel
» *** PUREBASIC *** LE TOPIC OFFICIEL
» [BLITZ BASIC] le topic officiel du meilleur basic au monde ?
» * MSX * TOPIC OFFICIEL II
» GOG le topic officiel
» *** PUREBASIC *** LE TOPIC OFFICIEL
Page 9 sur 12
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum