[Tutoriel] Créer un programme... dans un programme

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

[Tutoriel] Créer un programme... dans un programme

Message par Kuroshitsu le Mer 31 Déc - 14:34

Bien le bonjour amis programmeurs cheers

Cette fois-ci nous allons découvrir certaines commandes qui, à mon sens, pourront conduire à de merveilleux logiciels ! Que diriez-vous de pouvoir créer ligne de code par ligne de code un programme... à partir d'un autre programme ? Vous allez voir, les applications sont très nombreuses et l'ensemble est bien loin d'être difficile, il faut juste s'entraîner un peu Wink


I) Introduction


Peu de gens le remarque d'emblée en démarrant Petit Computer 3, mais celui-ci comprend 4 "slots" pouvant contenir du code : 0,1,2 et 3. Par défaut, lorsque vous éditez un programme, vous l'écrivez sur le slot 0, c'est d'ailleurs celui qui est exécuté lorsque l'on lance le programme. Mais dans ce tutoriel, nous allons apprendre à utiliser au moins un des trois autres slots.

Note: Dans un souci de compréhension, le code contenu dans le slot 0 sera en noir et celui du slot 1 en bleu dans les exemples qui suivront.


II) Exécuter un slot

Voyons tout d'abord la commande de base. Comme je l'ai mentionné précédemment, c'est le slot 0 qui est exécuté lorsque l'on lance le programme. Toutefois, si l'on veut lire le code contenu dans le slot 1,2 ou 3, il faut placer la commande EXEC suivi de l'ID du slot. Exemple :

(slot 0)
EXEC 1 //On passe aux instructions contenues dans le slot 1

(slot 1)
PRINT "A"


Il s'affiche à l'écran "A", on est bien passé du slot 0 au slot 1. D'ailleurs, une fois les instructions du slot 1 lues, le programme retourne au slot 0. Attention toutefois, les deux slots ne possèdent pas les mêmes variables ! Exemple :

(slot 0)
A=2
EXEC 1

(slot 1)
PRINT A


"0" s'affiche, car la variable A définie dans le slot 0 n'est pas connue dans le slot 1, prenez garde.


III) Modifier le code contenu dans un autre slot

Nous verrons l'utilisé de EXEC dans la dernière partie. Pour le moment, étudions le véritable rôle des slots qui sera de "contenir" des lignes de code générées par votre programme, ce qui rend les choses plus intéressantes. Passons donc en revue toutes les commandes qui vous aideront dans cette tâche.

Avant toute chose, il faut définir quel slot le programme va modifier. Pour ce faire, on utilise PRGEDIT [ID du slot]. Exemple : PRGEDIT 1, qui signifie que toutes les modifications seront faites sur le slot 1. Ensuite, il suffit de créer de nouvelles lignes de code à l'aide de ces différents outils, gare à ne pas les confondre :
- PRGINS [chaîne de caractères] : ajoute une ligne avec les instructions contenues dans la chaîne de caractères.
- PRGSET [chaîne de caractères] : écrase la dernière ligne et la remplace par la chaîne de caractères.
- PRGDEL [nombre de lignes] : supprime le nombre de lignes spécifié en partant du bas.

Puisqu'il n'y a rien de mieux que des exemples pour apprendre, en voici deux :

(slot 0)
PRGEDIT 1 // On va modifier le slot 1
PRGINS "A=2" // On ajoute une ligne A=2
PRGINS "PRINT A" // On ajoute une ligne PRINT A

(contenu dans le slot 1)
A=2
PRINT A




(slot 0)
PRGEDIT 1 // On va modifier le slot 1
PRGINS "A=2" // On ajoute une ligne A=2
PRGINS "B=3" // On ajoute une ligne B=3
PRGINS "C=4" // On ajoute une ligne C=4
PRGDEL 2 // On supprime les deux dernières lignes

(contenu dans le slot 1)
A=2


Comme vous avez pu le voir, je n'utilise pas PRGSET car son rôle est trop particulier. En effet, elle remplace la dernière ligne si et seulement si il n'y a pas eu de saut de ligne. Or, en utilisant PRGINS, il y a automatiquement un saut de ligne. PRGSET a donc une efficacité limitée.

Note : vous serez sans doute amené à ajouter des lignes de code contenant des guillemets. Pour ajouter des guillemets, il faudra placer CHR&(34). Par exemple : PRGINS "INPUT "+CHR$(34)+"Votre nom "+CHR$(34)+";N" donne une fois dans le code INPUT "Votre nom ";N


IV) SAVE/LOAD avec les slots

Dernière mise au point concernant les slots, l'utilisation de SAVE et LOAD. Sachez tout d'abord qu'on ne peut sauvegarder qu'un slot à la fois, si votre programme s'étend sur les quatre slots, il faudra alors enregistrer quatre fichiers distincts. Malgré tout, je ne vais pas perturber beaucoup vos habitudes car la fonctionnement de SAVE reste très simple. Il suffit en effet d'accoler "PRG[ID du slot]:" au nom donné à votre programme pour que ce soit le contenu du slot concerné qui soit sauvegardé. Exemple :

SAVE  "PRG1:ABC" // On sauvegarde le contenu du slot 1 sous le nom ABC

De même, vous pouvez charger un programme dans un slot en particulier :

LOAD "PRG2:CDE" // On charge le programme CDE dans le slot 2

Auparavant, lorsque vous utilisiez l'une ou l'autre de ces deux commandes, vous ne vous préoccupiez en fait que du slot 0 ! Ecrire SAVE "ABC" revient à écrire SAVE "PRG0:ABC", de  même pour LOAD.

Note : en chargeant un programme dans un slot, la ligne actuelle n'est plus la dernière mais la première.


V) Quelques commandes en vrac

Pour finir, voici quelques commandes qui pourront peut-être vous être utiles (les commandes précédées d'une étoile sont celles nécessitant PRGEDIT au préalable) :
- NEW [ID du slot] : à utiliser en mode EDIT seulement, supprime le contenu du slot spécifié. Si aucun ID n'est précisé, cette commande supprime le contenu de tous les slots.
* PRGGET$() : renvoie le contenu de la ligne actuelle
* PRGNAME$() : renvoie le nom du programme
- PRGSIZE([ID du slot]) : renvoie le nombre de lignes du slot précisé


VI) Conclusion

Si certaines choses vous paraissent encore un peu floues, je vous invite à expérimenter des choses par vous-même ou à me poser quelques questions. Pour ce qui est de l'utilité de ces commandes, laissez-moi vous faire rêver un peu. Imaginez qu'un programmeur (sans doute très doué et ambitieux) ait dans l'idée de créer un logiciel qui vous aide à coder des jeux : grâce aux commandes d'édition des slots, cela est tout à fait possible. De même pour ceux qui auraient dans l'idée de créer un système d'exploitation : plus besoin de quitter le logiciel pour accéder à un jeu, il suffit de le charger dans un slot, de l'exécuter puis une fois terminé on revient tout simplement à l'OS ! Bien d'autres applications peuvent être envisagées, alors laissez libre cours à votre imagination Wink


Dernière édition par Kuroshitsu le Jeu 1 Jan - 15:38, édité 4 fois (Raison : Esprit pointilleux)

_________________
Kuro, Kuro, Kuro... L'aventure commence cheers
avatar
Kuroshitsu

Messages : 104
Date d'inscription : 18/10/2014
Age : 19

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [Tutoriel] Créer un programme... dans un programme

Message par Adriendu92 le Mer 31 Déc - 15:32

Ca va être pratique pour faire des patch aussi ! cheers
Même si on passe plus par les qr codes ... Exclamation
mais si c'est un gros jeu ça évite de bouffer toute la connexion ! Rolling Eyes

_________________
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: [Tutoriel] Créer un programme... dans un programme

Message par S.lexis le Mer 31 Déc - 17:20

Décidément, plein de nouvelles fonctionnalités géniales !
Juste une chose ou deux, on ne peut pas envoyer de "paramètre" à un slot à l'instar d'une fonction ? Par exemple dans le cas d'un OS, on va afficher une fenêtre vide depuis le slot principal, puis on va donner le rectangle de dessin au programme qui doit être affiché pour qu'il s'inscrive dans ce rectangle. Cela m'amène à la seconde question, il n'y a pas de curseur dans le slot, qui permet d'écrire à tel endroit sans se soucier du reste comme quand on écrit au clavier simple ? Cela permettrait en première ligne de définir des variables puis d'écrire le programme après, mais cela ne pourrait pas être dynamique au final, ou en tout cas il faudrait faire un format de fichier, carrément. scratch

_________________
Plus ou moins de retour
avatar
S.lexis

Messages : 387
Date d'inscription : 24/08/2013

Voir le profil de l'utilisateur http://3dszone.netau.net

Revenir en haut Aller en bas

Re: [Tutoriel] Créer un programme... dans un programme

Message par Kuroshitsu le Mer 31 Déc - 19:21

S.lexis > Non pas d’attributs ni de curseur. Par contre, j'ai complété mon tutoriel avec de nouvelles commandes et cette remarque : "en chargeant un programme dans un slot, la ligne actuelle n'est plus la dernière mais la première."
En d'autres termes, si tu charges un programme dans un slot et que tu utilises PRGINS (PRGSET supprimerait des lignes de code existantes...), tu rajouteras des lignes au début du programme. Tu pourrais alors rajouter "A=2", "B=3" etc...
De même, je pense qu'en utilisant PRGGET$() (voir partie V modifiée), on peut parvenir à trafiquer un programme dans son ensemble. Imaginons un patch qui s'organiserait de cette manière : "à telle ligne, je rajoute ça, à telle ligne, j'enlève ça". En stockant le programme dans un slot, puis en le recopiant ligne par ligne (à l'aide d'une boucle basée sur le nombre de lignes du programme grâce à PRGSIZE()) dans un autre slot en supprimant ou en ajoutant des éléments, on peut parvenir à faire plein de choses, du patch à l'ajout d'une portion de code telle que tu me l'as décrite !

Je vais travailler un peu dessus, il faut bien avouer que c'est c'est passionnant Very Happy

_________________
Kuro, Kuro, Kuro... L'aventure commence cheers
avatar
Kuroshitsu

Messages : 104
Date d'inscription : 18/10/2014
Age : 19

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [Tutoriel] Créer un programme... dans un programme

Message par S.lexis le Mer 31 Déc - 23:58

"Esprit pointilleux" Laughing
En tout cas merci pour ces précisions, du vrai travail d'inspecteur ! :hap: Le fonctionnement ne reste pas totalement évident quand même.

_________________
Plus ou moins de retour
avatar
S.lexis

Messages : 387
Date d'inscription : 24/08/2013

Voir le profil de l'utilisateur http://3dszone.netau.net

Revenir en haut Aller en bas

Re: [Tutoriel] Créer un programme... dans un programme

Message par Kuroshitsu le Jeu 1 Jan - 9:53

S.lexis > Parce que tu n'as pas encore l'occasion de tester tout ça par toi-même, la théorie est toujours plus difficile que la pratique.

J'essaie de réfléchir à un générateur de patchs, mais c'est pas évident scratch

PS: j'ai ajouté une petite astuce concernant les guillemets dans la partie III qui pourra vous être utile cyclops

_________________
Kuro, Kuro, Kuro... L'aventure commence cheers
avatar
Kuroshitsu

Messages : 104
Date d'inscription : 18/10/2014
Age : 19

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [Tutoriel] Créer un programme... dans un programme

Message par Adriendu92 le Mar 6 Jan - 18:06

Cool ton astuce Smile
J'ai une question : peut on utiliser des noms de fonctions existantes Question
Je pense que non mais on sait jamais ??? confused

_________________
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: [Tutoriel] Créer un programme... dans un programme

Message par Kuroshitsu le Mar 6 Jan - 18:59

Évidemment que non, imagine tous les problèmes que ça causerait ^^'

_________________
Kuro, Kuro, Kuro... L'aventure commence cheers
avatar
Kuroshitsu

Messages : 104
Date d'inscription : 18/10/2014
Age : 19

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [Tutoriel] Créer un programme... dans un programme

Message par fenixelf le Jeu 8 Jan - 18:19

Question qui je pense, interressera du monde (surtout la réponse en fait) :
Sachant que dans PTC3 les lignes de code passent de 9999 à 99999, est -ce que on dispose de 99999 lignes dans chaque slot ?

_________________
Get Ready... Twisted Evil
avatar
fenixelf

Messages : 227
Date d'inscription : 08/03/2014
Age : 18
Localisation : Île de France - La ville du bois

Voir le profil de l'utilisateur http://www.fenixelf-drawing.fr

Revenir en haut Aller en bas

Re: [Tutoriel] Créer un programme... dans un programme

Message par Kuroshitsu le Jeu 8 Jan - 19:59

Oui, tous les slots bénéficient du nombre de ligne maximal qui, d'ailleurs, semble pouvoir être étendu au-delà des 99999 lignes

_________________
Kuro, Kuro, Kuro... L'aventure commence cheers
avatar
Kuroshitsu

Messages : 104
Date d'inscription : 18/10/2014
Age : 19

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [Tutoriel] Créer un programme... dans un programme

Message par fenixelf le Jeu 8 Jan - 20:12

Hoooo, Ho, Ho Hooooooo ! Attendez-vous à des Retro-Skyrim-3D X)

_________________
Get Ready... Twisted Evil
avatar
fenixelf

Messages : 227
Date d'inscription : 08/03/2014
Age : 18
Localisation : Île de France - La ville du bois

Voir le profil de l'utilisateur http://www.fenixelf-drawing.fr

Revenir en haut Aller en bas

Re: [Tutoriel] Créer un programme... dans un programme

Message par Kuroshitsu le Jeu 8 Jan - 20:18

fenixelf > Oui dans ce PTC toutes les barrières sautent, le nombre d'éléments pouvant être contenus dans une chaîne de caractères ou dans une grille est à la limite de l'indécence (on touche les 999999), mais la mémoire de la 3DS n'est pas toujours extensible ^^'

_________________
Kuro, Kuro, Kuro... L'aventure commence cheers
avatar
Kuroshitsu

Messages : 104
Date d'inscription : 18/10/2014
Age : 19

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [Tutoriel] Créer un programme... dans un programme

Message par fenixelf le Lun 12 Jan - 20:58

.....
Ils auraient du rallier la mémoire de la carte SD au logiciel, c'aurait été parfait...
BAH, C'EST DEJA BIEN ET CA SUFFIRA POUR QUE DISCOSTEW REMETTE SON EXPLOIT D'OPTIMISATION DE JEU SUR PTC ! J'ATTENDS SON MEGAMAN X3 SUR 3DS Twisted Evil

_________________
Get Ready... Twisted Evil
avatar
fenixelf

Messages : 227
Date d'inscription : 08/03/2014
Age : 18
Localisation : Île de France - La ville du bois

Voir le profil de l'utilisateur http://www.fenixelf-drawing.fr

Revenir en haut Aller en bas

Re: [Tutoriel] Créer un programme... dans un programme

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

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