[Langage]PetitBasic

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

[Langage]PetitBasic

Message par RayTro le Dim 31 Juil - 23:10

Bonjour, Bonjoir à tous !

Récemment je me suis lancé dans un projet, que j'ai plus tard nommé PetitBasic.
Le principe de ce projet est de créer un nouveau langage de programmation (pour PC) inspiré du SmileBasic de PTC.
L'idée générale est de reprendre la simplicité que le SmileBasic nous donnait au niveau de la gestion des sprites, et quelques éléments intéressants tels que les CHR modifiables pour changer la police d'écriture en images, par exemple.

Description du projet (post original):

PetitBasic est codé en VisualBasic, un langage orienté objet que je manie très bien.
Voici l'architecture actuelle du projet :


Chaque élément est un objet, qui est capable de communiquer avec d'autres objets pour former un ensemble qui donnera en résultat un interpréteur Basic.

Pour le moment tout est déjà un peu en place, à part l'interpréteur Basic qui n'est pas encore commencé, mais qui devrait l'être bientôt.

Voici un aperçu de l'interface RUN actuelle :


La particularité est qu'il m'a fallu créer la console en entier, je n'ai pas pu utiliser la console que donnait Windows par défaut, notamment à cause des fonctionnalités graphiques que proposera le langage, mais aussi pour des questions pratiques, car maintenant j'ai le contrôle total sur le fonctionnement de la console, et donc peut permettre d'y faire un peu ce que je veux.

J'ai aussi conçu un interpréteur MML, certes pas encore aussi au point que celui de PTC (manque quelques éléments, et quelques bugs sont présents aussi), mais il permettra de composer quelques mélodies pour les personnes qui refusent d'utiliser des fichiers mp3 ou autres.

Peut-être qu'une démo sera disponible sous peu, ça dépendra si j'ai assez de temps à consacrer au projet le soir.

Liens vers les builds:

Télécharger PetitBasic (Dropbox)

Lien vers le manuel

Link to the manual

Explications sur les numéros de versions :
les versions sont numérotés comme ceci : 0.0b0
- Le premier chiffre représente la version majeure : généralement le changement d'une de ces versions impliquent de gros changements niveau code, comprenant souvent des incompatibilités avec les versions antérieures.
- Le second chiffre représente la version mineure : elles incluent souvent des corrections de bugs et des ajouts de fonctionnalités.
- Le dernier chiffre, derrière le "b", représente le numéro de build, qui est un chiffre s'incrémentant à chaque fois qu'on compile le programme en mode release ("stable" si vous préférez).

Changelog:

v0.5:

0.5 b29
IDE :
- Un éditeur de programmes intégré pour coder directement ses programmes dessus
- Les boutons Nouveau, Ouvrir, Enregistrer, Enregistrer Sous... les classiques quoi
- Un bouton pour formater votre code, c'est plus joli quand il est bien indenté, merci la touche Tab !
- Un éditeur d'options de programme, qui va vous générer le Includes.cfg directement dans votre dossier de travail. Il est encore très basique, mais au moins pas la peine d'ouvrir dans un fichier texte à part
- Une fenêtre de compilation, qui vous permet de compiler à n'importe quel moment votre programme, voir les erreurs rencontrés et même lancer votre programme directement après la compilation !
- Un accès aux documentations françaises et anglaises (Oui au passage j'ai traduit le manuel en anglais)

PetitBasic :
- Meilleur affichage des erreurs de compilation, avec au possible l'affichage de la ligne qui pose problème et amélioration de certains messages.
- Ajout d'une commande DEBUG, par défaut activée, qui permet au programme quand il rencontre une erreur de rédiger un fichier "report.txt" où il y affichera toutes ses variables pour faciliter le débug.

v0.4:

0.4 b19
- L'arrivée des commandes spéciales IF, FOR, WHILE, EVT et les SUB
EVT est une commande particulière, son utilité est extrêmement importante : elle permet de rafraichir l'affichage, et de gérer les événements système que l'utilisateur a pu enclencher (par exemple si il a cliqué sur la croix pour fermer la fenêtre)
Les subs, quant à eux, sont les remplaçants spirituels des labels et gosub.
Un sub est en fait un sous-programme. Il utilise les mêmes variables que le programme classique, à la différence que ce sous-programme peut être appelé de n'importe où : que ça soit dans le programme principal, dans d'autres subs mais aussi dans lui même !
Pour en créer un c'est très simple :

Code:
   {programme principal}
   sub monSubàMoi
       {Code du sub}
   subend

à noter que le sub peut être créé à n'importe quel moment, tout au début du programme, à la toute fin ou pour les plus tordus en plein milieu (c'est déconseillé pour la lisibilité).
Pour ce qui est de la syntaxe des IF, FOR et WHILE :

Code:
   if {condition}
   {programme}
   elseif {autre condition}
   {programme}
   else
   {programme}
   ifend

   for {variable}={début} to {fin} step {pas}
   {programme}
   next

   while {condition}
   {programme}
   wend

Pour le IF, les instructions elseif et else sont facultatives
Pour le FOR, le step est facultatif lui aussi
- Autre nouveauté, le programme est maintenant devenu un compilateur. Avant il lisait le programme en direct, et devait simuler toutes les commandes spéciales telles que les for, les if, etc... le problème principal c'est que ça ralentissait considérablement le programme. Comme dit plus haut un simple for de 100 itérations prenait à lui seul 24 secondes à s'exécuter. Maintenant, il transforme votre programme en un .exe, Il faudra alors forcément d'abord l'écrire dans un fichier texte, puis le programme s'occupera de créer un dossier portant le nom de votre fichier, et contenant l'exécutable ainsi que les fichiers de base pour pouvoir exécuter correctement votre programme.
- Enfin, troisième et dernière nouveauté, qui nous as amené en version 0.4, la possibilité de modder le logiciel :
Un fichier Includes.cfg contenant quelques informations (en anglais) sur son utilité, permet à PetitBasic d'avoir des informations pour compiler votre programme. Vous pouvez si vous voulez en créer un à côté de votre programme, PetitBasic prendra celui se trouvant dans le même dossier que le programme en priorité, sinon il prendra celui se trouvant dans son dossier.
Un autre fichier est apparu, Library.vb qui contient toutes les fonctions et commandes de PetitBasic. à vous de voir si vous voulez modifier le comportement de certaines fonctions ou commandes, à condition de savoir coder en Visual Basic.
Notez que vous pouvez ajouter vos propres fichiers en .vb si vous les ajoutez dans le fichier Includes.cfg.

v0.1:

0.1 b10 :
- Bugfix sur l'ouverture des fichiers, et les répertoires de travail.

0.1 b9 :
- Bugfix sur les variables, blocage de curseur avec LOCATE et paramètres de COLOR.
- Possibilité de mettre les couleurs par leur nom (cf. manuel)

0.1 b8 :
-Les fonctions sont arrivées ! pour l'instant il n'y a que ABS, ASC et RGB.
-Vu que le système de palette est un peu désuet face à la puissance des PCs de maintenant, puis aussi c'est un peu n'importe quoi à coder, du coup la commande COLOR supporte les couleurs HTML (type #RRGGBB dont RR, GG ou BB sont entre 00 et FF (0 à 255)).
Vous pouvez utiliser la fonction RGB dans COLOR, pour pouvoir choisir l'une des 16 millions de couleurs qu'offrent la fonction.

0.1 b7 :
-Ajout de quelques commandes : LOCATE, PRINT, COLOR, LOAD, TRANSPARENT et CLS
-LOAD ne fait que les CHR, vous devez fournir un nom de fichier image de 240 pixels de largeur obligatoire. Reprenez keys.bmp si vous voulez travailler sur les CHR, et en faire d'autres. Au passage si quelqu'un veut bien refaire ce fichier, ça m'aiderai énormément. Et surtout soyez libre de mettre autant de caractères que vous le souhaitez, je les ajouterai sans problèmes. Le tout est que le fichier reste à 240 de largeur. Vous pouvez prolonger la longueur aussi loin que vous voulez.
-Si vous glissez un fichier sur le .exe, il tentera d'exécuter le programme écrit dedans.
-Comme vous le voyez, j'ai ajouté la commande TRANSPARENT, je vous laisse trouver à quoi il sert :B (TRANSPARENT [0/1])

0.1 b4 :
- Ajout des calculs dans la console
- On peut mettre des trucs dans des variables


Voilà tout, si vous avez des questions, des commentaires, des idées voire même si vous avez envie d'apporter un coup de main, n'hésitez pas à en parler. ^^


Dernière édition par RayTro le Mar 6 Sep - 22:27, édité 15 fois
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par J8B le Dim 31 Juil - 23:35

Si mes connaissances de Petit Computer peuvent t'aider, je ferai de mon mieux pour t'aiguiller ^^.
Excellent projet en tout cas.

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par dreion le Lun 1 Aoû - 1:30

Ok alors là clairement...Si tu arrives à au bout de ce projet même si il y a des bugs je t'appelles Dieu mais même si tu dors pas pendant plusieurs mois faut que tu le finisse sa serais tellement bien!!!
avatar
dreion

Messages : 16
Date d'inscription : 01/10/2015
Age : 18
Localisation : Loire Atlantique/st nazaire

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par RayTro le Lun 1 Aoû - 23:10

Pour le moment j'ai commencé à travailler sur le découpage des lignes de codes de l'utilisateur.

J'ai déterminé qu'il existait 5 types différents d'éléments de code :
- Les labels, commençant par un @ puis suivi du nom du label
- Les calculs, tels que "8+3","uneVar - 8", bref généralement c'est une série d'opérandes délimitées par des opérateurs (+-*/ et % pour modulo, prévenir si il y en a d'autres)
- Les "expressions", qui sont en fait les assignations : "variable = 31", "chaine$ = 'salut'"
- Les commandes, qui sont les principaux éléments des lignes de code, commençant par le nom de la commande, suivi d'un espace et de plusieurs arguments séparés par des virgules.
- Les fonctions, qui sont de la forme "uneFonction(arg1,arg2...)", qui renvoient une valeur.

J'ai repéré quelques particularités parmi ces types :
- les labels n'ont pas d'arguments (c'est qu'un seul mot sans espaces)
- les arguments des fonctions et commandes peuvent être des calculs ou d'autres fonctions
- les expressions ont un seul mot (variable obligatoire) à gauche de l'égal, et à droite se trouvent calculs ou fonctions.
- notez aussi qu'une commande ne peut pas avoir d'autres commandes en argument.
-> quelques exceptions arriveront au niveau des if - else, qui peuvent eux avoir des commandes sur la même ligne, j'hésite à créer un nouveau type spécifique à ces exceptions. à voir plus tard.

ça fait énormément d'éléments à prendre en compte, et surtout qu'il est fort probable que j'ai oublié certains cas particuliers. N'hésitez pas à faire part de ce que vous pensez à ce sujet, si vous avez des idées de conception pour décortiquer proprement les lignes de code je suis preneur, même si vous imaginez des actions un peu complexes à faire c'est probable que ça soit déjà faisable sur PC sans trop d'efforts.
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par Adriendu92 le Mar 2 Aoû - 12:47

Et bien je te souhaite bonne chance car ça n'as pas l'air d'être de la tarte ce projet ! Ce sera super cool de pouvoir tester no programmes sur la version pc si il n'y a pas de différences !!

_________________
Le monde se partage en 10 ! Ceux qui connaissent le binaire et ceux qui ne le connaissent pas ! study
avatar
Adriendu92

Messages : 164
Date d'inscription : 07/12/2013
Age : 16
Localisation : Colombes

Voir le profil de l'utilisateur http://www.ptc-qr-code.sitew.fr/

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par J8B le Mar 2 Aoû - 20:35

Les labels ont droit au tiret bas _
Les arguments des fonctions et commandes peuvent être aussi des variables.
Tu as aussi des variables du système, ceux que l'utilisateur ne modifie pas mais qui changent de valeur, tu dois avoir quelques équivalents je pense. Ex: TIME$, CSRX et CSRY (position du curseur)...
Certaines commandes ne sont utilisables qu'en Mode RUN (la console) comme RUN, LIST...
Tu as aussi AND, OR, XOR et NOT, je ne sais dans quel type tu les places.

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par RayTro le Mar 2 Aoû - 20:54

En effet j'ai oublié de penser aux opérateurs booléens, et aux variables système... va falloir réfléchir autrement le système de vérification de syntaxe. Je pense le recommencer de zéro car ça commence à faire énormément d'éléments à gérer et je pense qu'il va falloir réfléchir sur papier avant d'entreprendre quoi que ce soit sur ce point là.

Edit :
J'ai trouvé une meilleure solution, et toute simple en plus : je vais travailler sur la chaîne de caractère contenant la ligne de code directement.
Plutôt que détecter les caractéristiques de la ligne, qui rendait les vérifications interminables - tant il existait de cas différents - je vais effectuer des remplacements dans la chaîne un peu partout, à l'aide de cet algorithme :
Code:
translateVars(line)
TANT QUE doOperations(line) OU execFunctions(line) OU (i > 32) FAIRE
FIN TANT QUE
execCommand(line)
EDIT : au final le i sert à rien vu que les fonctions renvoient faux si rien n'a changé, du coup boucle infinie impossible
Vous voyez quatre parties distinctes : translateVars, doOperations, execFunctions et execCommand.
-> translateVars : remplace les noms de variables par leur valeur dans la ligne
-> doOperation : effectue les calculs présents dans la ligne, tout ce qui est calculable, à savoir des chiffres séparés par des opérateurs. Il ne fait rien s'il faut le résultat d'une fonction dans le calcul (ex : 5 + 1 * ABS(-4) )
-> execFunctions : exécute les fonctions quand ils ont tous leurs paramètres remplacés par des chiffres ( ne fait rien en cas de "ABS(17-22)" par exemple) et les remplace par les valeurs qu'ils retournent (si dans la chaîne il y a un ABS(-4), il le remplacera par 4)
Il est important de savoir que ces fonctions renvoient un booléen VRAI si ils ont modifié la ligne, et FAUX si rien n'a changé.
-> Enfin, une fois la chaîne bien modifiées par les diverses fonctions, on fait execCommand, qui exécute la commande. Si jamais il y a des éléments incohérents, il renverra une erreur.

Dans tout ça, le seul problème viendrait des éventuelles chaînes de caractères se trouvant dans la ligne (faudrait pas exécuter un calcul présent dans une chaîne de caractère. Problématique à résoudre si quelqu'un a une idée avant que je me penche dessus).


Dernière édition par RayTro le Jeu 4 Aoû - 19:47, édité 1 fois
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par J8B le Jeu 4 Aoû - 2:13

C'est vrai que ça serait embêtant, faudrait l'empêcher de faire des calculs entre les guillemêts ou dans une variable alphanumérique. Faudrait vérifier ou exclure les chaînes de caractères pour pas faire un doOperations.
Faudrait que doOperations ignore les chaines de caractères.
(Je sais pas si mon commentaire aide vraiment).
Et est-ce qu'il va comprendre que "1+2"*2 devient "1+21+2" ?
Faut tester.

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par RayTro le Jeu 4 Aoû - 20:54

@J8B : pour le moment j'ai fait une fonction pour exclure toutes les chaînes de caractères qu'il rencontre, et une autre pour les restaurer.
En fait il remplace tout ce qui se trouve entre des guillemets par des variables temporaires portant 10 caractères aléatoires.
Juste au passage comment on fait dans PTC pour mettre des guillemets dans une chaîne ?

Aujourd'hui je travaille d’arrache-pied sur doOperations, C'est bien plus compliqué que ça en a l'air, de chercher dans la chaîne pour calculer des trucs complexes, comme par exemple (((3*(12.223+ 15)) - 7)*21)/7
Encore plus avec la présence de fonctions, ce qui risque de me prendre quelques jours à m'arracher les cheveux là dessus.
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par J8B le Ven 5 Aoû - 3:08

Logiquement dans PTC pour mettre des guillemets, on ne peut pas, il faut tricher en modifiant un caractère en un nouveau guillemets. On a beaucoup de caractères qui ne servent pas souvent, par exemple ceux japonais et des caractères spéciaux comme le coeur, le carreau, le trèfle..., on a l'embarras du choix pour choisir celui qu'on veut modifier.

J'imagine que c'est compliqué, surtout que tu dois coder la priorité des calculs, d'abord la dernière parenthèses en privilégiant la multiplication puis la division,... il faut penser à tout et c'est de longue haleine.

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par Adriendu92 le Ven 5 Aoû - 12:15

Pour les caractères il y a une fonction genre TEXT() qui permet d'afficher un caractère et en mettant le bon nombre on obtient des guillemets voilà :3

_________________
Le monde se partage en 10 ! Ceux qui connaissent le binaire et ceux qui ne le connaissent pas ! study
avatar
Adriendu92

Messages : 164
Date d'inscription : 07/12/2013
Age : 16
Localisation : Colombes

Voir le profil de l'utilisateur http://www.ptc-qr-code.sitew.fr/

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par RayTro le Sam 6 Aoû - 15:49

Bon, j'ai pas mal travaillé sur ces systèmes de calculs et tout ce qui va avec, je trouve qu'effectuer des calculs de cette façon n'est pas ultra rapide, mais bon on verra plus tard pour recoder la fonction de calcul, vu que c'est elle qui ralentit un peu le tout.

J'ai fait en sorte que si le résultat de la commande est une valeur on l'écrit, ça permet d'avoir un aperçu du résultat des calculs.
C'était un peu n'importe quoi niveau codage, j'ai même songé à utiliser une librairie externe pour gérer les calculs, peut-être que ça sera le cas plus tard.
Malheureusement, les opérations ne pourront pas se faire avec les chaînes de caractères, comme "a"*3, faute d'avoir un moteur de calcul performant pour gérer ces cas là. (ça arrivera peut-être un jour, mais ça n'est pas une priorité pour le moment)

Du coup me reste plus qu'à faire execFunctions et execCommands. ça va être une partie drôle et pas trop complexe. Si vous pouvez dresser une liste de toutes les fonctions et commandes, ça faciliterait un peu la tache. Vu que le site officiel de PTC n'existe plus, au pire si quelqu'un a la documentation ça pourrait aussi aider.

EDIT : J'ai ajouté un lien vers les builds de PetitBasic. Vous pouvez à tout moment ouvrir ce lien pour retrouver les exécutables du logiciel. Allez au premier post pour ça. N'hésitez pas à tester pour remonter tous les problèmes que vous pouvez trouver.
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par J8B le Sam 6 Aoû - 18:03

Mais voyons toutes les fonctions et commandes sont dans mon aide sur Petit Computer mais si tu préfères le manuel : Clique ici

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par RayTro le Sam 6 Aoû - 18:05

Je sais bien que tu as fait un programme pour avoir toutes les fonction ^^ je l'ai sur ma DS, c'est juste pas pratique de coder avec sa DS sur le bureau, surtout qu'il faut le chargeur et que j'ai pas de prises disponibles proche ^^'
Merci pour le manuel ^^

EDIT : Ajout du build 7, allez le télécharger dans le premier post si vous voulez.
Changements :
-Ajout de quelques commandes : LOCATE, PRINT, COLOR, LOAD, TRANSPARENT et CLS
-LOAD ne fait que les CHR, vous devez fournir un nom de fichier image de 240 pixels de largeur obligatoire. Reprenez keys.bmp si vous voulez travailler sur les CHR, et en faire d'autres. Au passage si quelqu'un veut bien refaire ce fichier, ça m'aiderai énormément. Et surtout soyez libre de mettre autant de caractères que vous le souhaitez, je les ajouterai sans problèmes. Le tout est que le fichier reste à 240 de largeur. Vous pouvez prolonger la longueur aussi loin que vous voulez.
-Si vous glissez un fichier sur le .exe, il tentera d'exécuter le programme écrit dedans.
-Comme vous le voyez, j'ai ajouté la commande TRANSPARENT, je vous laisse trouver à quoi il sert :B (TRANSPARENT [0/1])

Pour les fonctions ça attendra un petit peu, j'ai été inspiré pour les commandes aujourd'hui.

Edit 2 :
En fait pour la suite je pense que ça serait sympa d'essayer de communiquer par chat instantané (oral ou écrit, peu importe), ça pourrait être sympa ^^

Edit 3 :
Ajout du Build 8 : les fonctions sont arrivées ! pour l'instant il n'y a que ABS, ASC et RGB.
Vu que le système de palette est un peu désuet face à la puissance des PCs de maintenant, puis aussi c'est un peu n'importe quoi à coder, du coup la commande COLOR supporte les couleurs HTML (type #RRGGBB dont RR, GG ou BB sont entre 00 et FF (0 à 255)).
Vous pouvez utiliser la fonction RGB dans COLOR, pour pouvoir choisir l'une des 16 millions de couleurs qu'offrent la fonction.
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par J8B le Lun 8 Aoû - 18:11

J'ai testé un peu. TRANSPARENT ne fait rien de spécial chez moi ou alors je l'ai mal utilisé.
N'oublie pas de faire un manuel au fur et à mesure. J'essaierai de te faire un CHR de police quand j'aurai le temps.

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par RayTro le Lun 8 Aoû - 18:22

Bonne idée pour le manuel !
Un indice: tu fais "TRANSPARENT 1" puis joue avec "COLOR x, y" avec x et y compris entre 0 et F.Wink
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par J8B le Lun 8 Aoû - 20:19

Ok j'essaierai ^^.
J'ai fait des test avec PRINT, voici ce que ça donne :


Comme tu vois, si la variable n'a pas de valeur, il renvoie son nom, et aussi j'ai fait exprès de faire des erreurs de syntaxe avec ceux qui ont des espaces mais il ne les considère pas comme faux.

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par RayTro le Lun 8 Aoû - 21:58

@J8B En fait par défaut les variables qu'il n'a pas réussi à remplacer sont interprétées comme des chaînes, à la différence que si il n'y a pas de guillemets il retire tous les espaces. Je ne sais pas encore comment appréhender ce problème, entre retourner une erreur ou laisser interpréter comme texte...
Pour ce qui est de la fonction COLOR, il est capable de prendre deux paramètres, le premier pour la couleur du texte, et le second pour le fond.

EDIT : ça y est, le manuel est fait. Vous pouvez le retrouver tout en haut juste à côté du lien de téléchargement de PetitBasic.
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par J8B le Mar 9 Aoû - 4:27

Tu devrais l'interpréter comme si c'était une variable et renvoyer 0, comme dans PTC.
Quelques tests avec PRINT avec quelques bugs aussi :

L'erreur en orange s'est produite car je voulais écrire "différence" et je l'ai effacé pour "changement", il n'a pas apprécié le "é" apparemment. Razz
Toujours pas compris TRANSPARENT, il a pas l'air de fonctionner chez moi  What a Face

Voici la police que j'ai faite:


Edit 17h40:
Tu as aussi un soucis avec COLOR qui n'accepte pas F. LOCATE quand à lui, n'aime pas qu'on remonte dans les lignes, il place le > au bon endroit mais le _ reste sur la même ligne.

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par RayTro le Mar 9 Aoû - 19:02

Merci pour toutes ces informations ^^ je vais les corriger ce soir au possible, et remplacer la police de base qui - on peut le dire - est un peu sale avec les lettres longues comme le y ou le p.

Pour ce qui est du COLOR avec F, c'est normal, c'est parce que F c'est le blanc.

C'est cool que tu testes en même temps, ça permet de ne pas passer à côté d'éventuels bugs ^^

Pour l'utilisation de TRANSPARENT, voici un petit bout de code qui permet de voir son effet :
Code:
transparent 1
color A,0
cls
print "Hello World!"

PS : si tu as des remarques, des retours concernant le manuel n'hésites pas aussi, j'ai pondu ça en une soirée et peut-être qu'il y a des trucs un peu mal fait comme les descriptions, la fonction de recherche qui rend désuète les autres parties ou encore la mise en page qui n'est pas ergonomique.

EDIT : Arrivée du Build 9 qui corrige simplement tous les bugs cités au dessus, remplaçant les paramètres de COLOR pour que ça soit de 0 à 15 et non plus de 0 à F, et possibilité d'utiliser une chaîne de caractère contenant le nom anglais de la couleur comme "black","red", etc.
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par J8B le Mar 9 Aoû - 21:11

Ah bah ça marche mieux avec le CLS ^^. J'ai rien à dire sur le manuel pour l'instant ^^
Ensuite ce qui serait bien dans la console serait de pouvoir revenir en arrière dans une ligne pour corriger une faute, au lieu de devoir tout effacer jusqu'à la faute.
J'ai essayé de glisser un fichier texte sur le .exe, le programme a planté :
PetitBasic.Command a rencontré un problème et doit être fermé. Nous vous prions de nous excuser pour le désagrément encouru.

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par RayTro le Mar 9 Aoû - 23:54

Le build 10 corrige ce problème, je pense que le passage à la 0.2 amènera les conditions, les boucles, les fonctions spéciales quoi, sans les labels malheureusement, mais avec une nouveauté : les Subs ! *suspense*

En attendant les builds de la 0.1 continueront régulièrement Smile
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par J8B le Ven 12 Aoû - 18:15

J'ai remarqué que l'utilisation du processeur est à 100% quand Petit Basic est ouvert (en tout cas chez moi). Je ne sais pas si c'est un problème ou pas.

_________________
Statut (MàJ:04 Août 2017): Sur le projet "Virtual Bébête" (avancée ~28% Démo_B3).
Mes BDs et mes dessins, c'est sur Webcomics, http://www.webcomics.fr/member/J8B

And i'm here too: http://petitcomputer.wikia.com/wiki/User:J8B
avatar
J8B

Messages : 406
Date d'inscription : 27/10/2013
Localisation : Tarn

Voir le profil de l'utilisateur http://webcomics.fr/member/J8B

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par RayTro le Ven 12 Aoû - 18:20

C'est intéressant à noter, il va falloir que je regarde ça.
Après je suppose que c'est parce qu'il exécute constamment du code, va falloir trouver un moyen de mettre en standby le mode RUN quand rien ne se passe.
Après trouver un moyen de limiter la vitesse d'exécution car par exemple chez moi le logiciel tournera aussi à 100% mais sera aussi extrêmement rapide contrairement à toi.
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par RayTro le Dim 28 Aoû - 22:03

@J8B : après avoir jeté un oeil au niveau des performances, il s'avérait que mon application consommait 13% de mon processeur quand je le laissait tourner sans rien faire.
J'ai décidé de mettre un très petit temps de repos entre chaque boucle, de manière à ce que ça soit le moins perceptible possible. Ce temps est de 10 millisecondes, et de ce fait maintenant PetitBasic ne consomme plus que 3% du processeur pour moi.
à voir par la suite lorsqu'il y aura plus de fonctions s'il faut essayer de mettre un cap de 60 images par secondes par exemple, pour éviter que chez certains l'application tourne en accéléré par rapport à d'autres.

Pour ce qui est de l'avancement de la 0.2 :
- Les if sont implémentés, avec leurs else, elseif et ifend
- Il m'a fallu travailler sur les conditions, et pour cela j'ai dû passer par des Or et des And.
Pour une question (très) pratique, ceux-ci sont remplacés par des & et des |
exemple de if :
Code:
if var > 2
    print var, " est supérieur à 2"
elseif var < 2
    print var, " est inférieur à 2"
else
    print var, "est égal à 2"
ifend
Notez qu'il est possible de mettre autant de lignes de codes entre le if et else/elseif/ifend.

Maintenant je pense que je vais tester de fond en comble voir si il n'y aura pas de bizarreries.

Edit : Les if imbriqués fonctionnent aussi maintenant !
Code:
if var > 10
    print var, " est supérieur à 10"
elseif var < 10
    if var > 5
        print var, " est entre 5 et 10"
    else
        print var, " est inférieur à 5"
    ifend
else
    print var, " est égal à 10"
ifend

Edit 2 : J'ai fait la boucle For, c'était plus simple à gérer que le if, mais j'apporte avec ça une mauvaise nouvelle : c'est plutôt lent !
Code:
for i=0 to 10
    for ii = 0 to 10
        print i, " : ", ii
    next
next
Ce bout de code, qui est sensé faire 100 itérations, prends 24 secondes à s'exécuter ! Le processeur à côté ne dépasse à peine les 2% d'utilisation ! C'est totalement anormal et je n'ai pas de solutions pour palier à ce problème.
avatar
RayTro
Admin

Messages : 335
Date d'inscription : 09/08/2013
Age : 21

Voir le profil de l'utilisateur http://petitcomputer-france.forumactif.org

Revenir en haut Aller en bas

Re: [Langage]PetitBasic

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Page 1 sur 2 1, 2  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

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