[Tuto pas à pas] Minecraft Redstone Calculator
Première partie
Plan :
Préambule
I - Principe général du circuit
II - Notions de base en binaire
III - Convertisseur DTB
IV - Convertisseur BTD
V - Affichage
Préambule :
Il y'a deux jours, je me promène sur youtube et je tombe, par hasard, sur des vidéos présentant des calculateurs en redstone... Au premier abord, je suis terrassé à l'idée de la complexité de son fonctionnement, puis, au fur et à mesure des vidéos une phrase se répète dans ma tête : "Pourquoi pas moi?". Et ainsi, je crée un flatgrass, pose quelques blocs et 10 boutons, de 0 à 9...
C'est à ce moment que je me suis dis mince, par quoi commencer? *Réflexion*... Bien sûr ! La base du calculateur, c'est la conversion binaire qui me permettra de traiter des données. Je me lance donc dans un essai de convertisseur DTB (Decimal to binary) relativement simple, avant de me casser les dents sur le convertisseur inverse, le BTD (Binary to decimal)... Pas de panique ! Après quelques essais, je finis par rendre fonctionnel mes deux convertisseurs. Finalement, la seule chose manquante pour avoir un aperçu de mon travail, c'est un affichage segmentaire (le même que sur vos réveils électroniques), ce que je m'empresse de créer.
Et alors, je me dis, très bien, j'ai réussis. Et là une nouvelle phrase retentis dans ma tête : "Pourquoi pas vous?"
Je décide donc de créer ce tutoriel pas à pas que j'updaterai en fonction de ma propre progression.
Vous l'avez compris, à l'heure qu'il est je ne suis pas vraiment plus avancé que vous, votre progression et la mienne sont synchronisées si vous suivez ce tuto !
A savoir : avant d'entamer cette création, mon niveau en redstone me permettait difficilement d'actionner quelques pistons pour faire des portes cachées... autant vous dire que ce n'était pas brillant. C'est à dire que si vous n'y connaissez rien mais que vous êtes chaud pour vous lancer là dedans, pas de problème ! (Il suffit d'avoir un peu de logique)
Je ne dis pas que si vous n'avez jamais touché à de la redstone vous allez comprendre tout ce qui sera présenté dans ce tuto, mais qu'avec quelques bases, la seule difficulté à surmonter sera de comprendre le cryptage binaire, et il s'agira là de la première partie de mon tuto.
C'est à ce moment que je me suis dis mince, par quoi commencer? *Réflexion*... Bien sûr ! La base du calculateur, c'est la conversion binaire qui me permettra de traiter des données. Je me lance donc dans un essai de convertisseur DTB (Decimal to binary) relativement simple, avant de me casser les dents sur le convertisseur inverse, le BTD (Binary to decimal)... Pas de panique ! Après quelques essais, je finis par rendre fonctionnel mes deux convertisseurs. Finalement, la seule chose manquante pour avoir un aperçu de mon travail, c'est un affichage segmentaire (le même que sur vos réveils électroniques), ce que je m'empresse de créer.
Et alors, je me dis, très bien, j'ai réussis. Et là une nouvelle phrase retentis dans ma tête : "Pourquoi pas vous?"
Je décide donc de créer ce tutoriel pas à pas que j'updaterai en fonction de ma propre progression.
Vous l'avez compris, à l'heure qu'il est je ne suis pas vraiment plus avancé que vous, votre progression et la mienne sont synchronisées si vous suivez ce tuto !
A savoir : avant d'entamer cette création, mon niveau en redstone me permettait difficilement d'actionner quelques pistons pour faire des portes cachées... autant vous dire que ce n'était pas brillant. C'est à dire que si vous n'y connaissez rien mais que vous êtes chaud pour vous lancer là dedans, pas de problème ! (Il suffit d'avoir un peu de logique)
Je ne dis pas que si vous n'avez jamais touché à de la redstone vous allez comprendre tout ce qui sera présenté dans ce tuto, mais qu'avec quelques bases, la seule difficulté à surmonter sera de comprendre le cryptage binaire, et il s'agira là de la première partie de mon tuto.
/!\ Dans ce tuto, je vais utiliser un vocabulaire qui m'est propre ainsi que des structures qui me sont propres, ce tutoriel n'est probablement pas la meilleure manière de créer un calculateur, et les noms utilisés ne sont probablement pas ceux qui sont utilisés conventionnellement.
Cela signifie aussi que ce qui se trouve sur cette map a été créé par moi même uniquement, sans l'aide d'un tuto extérieur. Cela m'appartient donc, merci de ne pas vous l'approprier !
De plus, je n'inclus pas de screens dans ce tuto, puisque vous disposez de la map en téléchargement en bas de ce post. Et je m'y rapporterai souvent au cours du tuto.
I - Principe général du circuit
Le premier circuit que je vais uploader est purement inutile, il est plus complexe qu'il ne devrait, je m'explique, voici le schéma du circuit actuel :
Input (décimal) -> Encrypteur DTB -> Décrypteur BTD -> Traduction décimal/affichage ->
Affichage
Comme vous voyez, on pourrait passer directement de l'input décimal à l traduction en segments d'affichages, mais l'idée ici est de comprendre le cryptage binaire !
Nous allons donc voir comment convertir une entrée décimal en binaire et inversement.
Input (décimal) -> Encrypteur DTB -> Décrypteur BTD -> Traduction décimal/affichage ->
Affichage
Comme vous voyez, on pourrait passer directement de l'input décimal à l traduction en segments d'affichages, mais l'idée ici est de comprendre le cryptage binaire !
Nous allons donc voir comment convertir une entrée décimal en binaire et inversement.
II - Notions de bases en binaire
Le binaire, je vais pas vous faire tout un cours dessus, du moins pas dans ce début de tuto dans lequel je vais essayer de vous épargner mes réflexions un peu trop étranges (Auxquels vous aurez droit quand je posterai le tuto suivant sur l'addition).
En quelques mots voilà donc ce que vous avez à retenir : (Issu de ce site : http://villemin.gerard.free.fr/Wwwgvmm/Numerati/BINAIRE/Debutant.htm)
Le binaire c'est une suite d'impulsion, soit 0 (inactif/off/éteint), soit 1 (actif/on/allumé). Ca tombe bien, la redstone répond aux mêmes paramètres, soit allumée, soit éteinte. On va donc pouvoir coder n'importe quoi en binaire en utilisant la redstone.
On va donc transformer des entrées du système décimal, c'est à dire les chiffres de 0 à 9 en système binaire donc en 1 ou 0. Pour coder un chiffre décimal, on aura besoin au maximum de 4 données binaires, que l'on note dans l'ordre M, C, D et U (Milliers, Centaines, Dizaines, Unités).
Je vous mets les valeurs utiles pour ce tuto, pour ceux que ça interesse, le site explique comment les calculer (Vous n'aurez pas besoin de comprendre comment les calculer pour ce tuto) :
Chiffre_décimal___Binaire___
____________M_C_D_U_
_____1_______0_0_0_ 1_
_____2_______0_0_1_0_
_____3_______0_0_1_1_
_____4_______0_1_0_0_
_____5_______0_1_0_1_
_____6_______0_1_1_0_
_____7_______0_1_1_1_
_____8_______1_0_0_0_
_____9_______1_0_0_1_
_____0_______0_0_0_0_
(Wah, quelle superbe mise en page ! Et oui, j'aurai pu coller une image mais bon...)
Ok, donc vous voyez que chaque chiffre décimal correspond à un nombre binaire unique composé soit de 0 ou de 1, donc soit activé, soit désactivé.
On va maintenant voir comment transcrire ça sur minecraft, à vos cubes !
En quelques mots voilà donc ce que vous avez à retenir : (Issu de ce site : http://villemin.gerard.free.fr/Wwwgvmm/Numerati/BINAIRE/Debutant.htm)
Le binaire c'est une suite d'impulsion, soit 0 (inactif/off/éteint), soit 1 (actif/on/allumé). Ca tombe bien, la redstone répond aux mêmes paramètres, soit allumée, soit éteinte. On va donc pouvoir coder n'importe quoi en binaire en utilisant la redstone.
On va donc transformer des entrées du système décimal, c'est à dire les chiffres de 0 à 9 en système binaire donc en 1 ou 0. Pour coder un chiffre décimal, on aura besoin au maximum de 4 données binaires, que l'on note dans l'ordre M, C, D et U (Milliers, Centaines, Dizaines, Unités).
Je vous mets les valeurs utiles pour ce tuto, pour ceux que ça interesse, le site explique comment les calculer (Vous n'aurez pas besoin de comprendre comment les calculer pour ce tuto) :
Chiffre_décimal___Binaire___
____________M_C_D_U_
_____1_______0_0_0_ 1_
_____2_______0_0_1_0_
_____3_______0_0_1_1_
_____4_______0_1_0_0_
_____5_______0_1_0_1_
_____6_______0_1_1_0_
_____7_______0_1_1_1_
_____8_______1_0_0_0_
_____9_______1_0_0_1_
_____0_______0_0_0_0_
(Wah, quelle superbe mise en page ! Et oui, j'aurai pu coller une image mais bon...)
Ok, donc vous voyez que chaque chiffre décimal correspond à un nombre binaire unique composé soit de 0 ou de 1, donc soit activé, soit désactivé.
On va maintenant voir comment transcrire ça sur minecraft, à vos cubes !
III - Convertisseur DTB
Bien ! On va pouvoir passer aux choses sérieuses !
Alors, le convertisseur DTB, qu'est ce que c'est que ce nom barbare? C'est comme ça que j'ai appelé la première unité présentée sur la map, c'est à dire celle qui est juste derrière le panneau de contrôle, elle est encadrée en vert.
Le panneau de contrôle nous envoie donc des informations de type décimal, 0 à 9 et on veut passer à soit 0 soit 1 sur le câble redstone qui correspond à U, soit 0 soit 1 sur D, pareil sur C et M.
Comment faire? Un convertisseur dans minecraft, ça se fait sur un schéma assez simple, il suffit de "croiser" autant d'entrées qu'on a avec autant de sorties qu'on veut, et dire quel paramètre correspond à quoi, explication :
Je prends le 5 en exemple, il s'écrit 0101 en binaire, donc M=0, C=1, D=0, U=1.
Donc si j'active 5 sur le panneau de contrôle, le câble redstone input correspondant au niveau du DTB devra activer uniquement les sorties C et U !
Pour faire ça, c'est très simple comme vous pouvez le voir sur la map, il suffit de placer une torche redstone sur le côté de l'input, torche qui agit comme un inverseur, lorsque l'on baisse un levier décimal, le câble input s'inverse et devient inactif, donc l'inverseur du DTB s'inverse lui aussi et devient actif, donc le câble output du DTB devient actif. Si les torches sont en face des bonnes correspondances binaire, notre signal est convertis !
EDIT : J'ai oublié de mentionner que pour des raisons techniques j'avais convertis 0 décimal en 1111 au lieu de 0000 binaire, 1111 correspondant normalement au 15, mais nous n'en aurons pas besoin (je l'espère, au moment où j'écris ça)
Alors, le convertisseur DTB, qu'est ce que c'est que ce nom barbare? C'est comme ça que j'ai appelé la première unité présentée sur la map, c'est à dire celle qui est juste derrière le panneau de contrôle, elle est encadrée en vert.
Le panneau de contrôle nous envoie donc des informations de type décimal, 0 à 9 et on veut passer à soit 0 soit 1 sur le câble redstone qui correspond à U, soit 0 soit 1 sur D, pareil sur C et M.
Comment faire? Un convertisseur dans minecraft, ça se fait sur un schéma assez simple, il suffit de "croiser" autant d'entrées qu'on a avec autant de sorties qu'on veut, et dire quel paramètre correspond à quoi, explication :
Je prends le 5 en exemple, il s'écrit 0101 en binaire, donc M=0, C=1, D=0, U=1.
Donc si j'active 5 sur le panneau de contrôle, le câble redstone input correspondant au niveau du DTB devra activer uniquement les sorties C et U !
Pour faire ça, c'est très simple comme vous pouvez le voir sur la map, il suffit de placer une torche redstone sur le côté de l'input, torche qui agit comme un inverseur, lorsque l'on baisse un levier décimal, le câble input s'inverse et devient inactif, donc l'inverseur du DTB s'inverse lui aussi et devient actif, donc le câble output du DTB devient actif. Si les torches sont en face des bonnes correspondances binaire, notre signal est convertis !
EDIT : J'ai oublié de mentionner que pour des raisons techniques j'avais convertis 0 décimal en 1111 au lieu de 0000 binaire, 1111 correspondant normalement au 15, mais nous n'en aurons pas besoin (je l'espère, au moment où j'écris ça)
IV - Convertisseur BTD
C'est la seconde unité, elle est encadrée en bleu sur la map.
Celui-ci demande déjà un peu plus de connaissances en redstone, rien de bien méchant.
L'idée est donc ici de convertir un input à 4 entrées binaires, en output à 9 entrées décimales. Seulement voilà, chaque code binaire correspond à un seul chiffre décimal...
Nous allons donc avoir besoin d'une porte conditionnelle qui va nous dire : exemple avec le 5 :
"Si M=0 ET C=1 ET D=0 ET U=1, ALORS il s'agit du 5 décimal, SINON il ne s'agit pas du 5 décimal" et ce pour chaque entrée décimal, jusqu'à ce qu'il comprenne de quel chiffre il s'agit.
En fait, le ALORS correspondra à l'activation du câble qui part en direction de l'unité suivante, le SINON correspond à aucun changement, c'est à dire que le câble restera inactif.
Voyons comment réaliser cette porte :
Tout d'abord, vous voyez que chaque câble qui arrive a ses données copiées vers le bas par un double inverseur en colonne, il est inutile au programme, il permet juste de faire "descendre" la redstone.
La partie intéressante se situe après, vous trouverez sous les inputs une sorte de râteau avec soit juste de la redstone, soit une torche. Encore une fois la torche va correspondre à 1 et la redstone va correspondre à 0, il nous suffit juste de replacer correctement les torches en fonction de la correspondance binaire du décimal qu'on essaye de décrypter, et le tour est joué.
Si la séquence binaire correspond en tout point, chaque torche sera désactivée, le râteau sera désactivé, l'inverseur jouera son rôle et sera activé, le signal sera transmis.
Si la séquence binaire ne correspond pas, soit on aura activé un ou plusieurs 0, donc le râteau sera activé, l'inverseur restera inactif, soit on aura pas désactivé une ou plusieurs torche(s), donc le râteau sera activé, inverseur désactivé, vous voyez le truc.
Si vous avez tout bien suivi, félicitations, vous avez compris comment crypter/décrypter le décimal en binaire !
Celui-ci demande déjà un peu plus de connaissances en redstone, rien de bien méchant.
L'idée est donc ici de convertir un input à 4 entrées binaires, en output à 9 entrées décimales. Seulement voilà, chaque code binaire correspond à un seul chiffre décimal...
Nous allons donc avoir besoin d'une porte conditionnelle qui va nous dire : exemple avec le 5 :
"Si M=0 ET C=1 ET D=0 ET U=1, ALORS il s'agit du 5 décimal, SINON il ne s'agit pas du 5 décimal" et ce pour chaque entrée décimal, jusqu'à ce qu'il comprenne de quel chiffre il s'agit.
En fait, le ALORS correspondra à l'activation du câble qui part en direction de l'unité suivante, le SINON correspond à aucun changement, c'est à dire que le câble restera inactif.
Voyons comment réaliser cette porte :
Tout d'abord, vous voyez que chaque câble qui arrive a ses données copiées vers le bas par un double inverseur en colonne, il est inutile au programme, il permet juste de faire "descendre" la redstone.
La partie intéressante se situe après, vous trouverez sous les inputs une sorte de râteau avec soit juste de la redstone, soit une torche. Encore une fois la torche va correspondre à 1 et la redstone va correspondre à 0, il nous suffit juste de replacer correctement les torches en fonction de la correspondance binaire du décimal qu'on essaye de décrypter, et le tour est joué.
Si la séquence binaire correspond en tout point, chaque torche sera désactivée, le râteau sera désactivé, l'inverseur jouera son rôle et sera activé, le signal sera transmis.
Si la séquence binaire ne correspond pas, soit on aura activé un ou plusieurs 0, donc le râteau sera activé, l'inverseur restera inactif, soit on aura pas désactivé une ou plusieurs torche(s), donc le râteau sera activé, inverseur désactivé, vous voyez le truc.
Si vous avez tout bien suivi, félicitations, vous avez compris comment crypter/décrypter le décimal en binaire !
V - Affichage
Je ne m'étendrai pas plus sur le principe de l'affichage, je vous laisse examiner mon circuit (Il est très moche je sais, mais je fais ce que je peux hein !).
De plus, si vous avez compris le principe de codage DTB/BTD, vous êtes maintenant capable de coder selon n'importe quel système vers n'importe quel système.
Tout ce que je vous dirai sur l'affichage c'est que chaque input correspond à un décimal, chaque output à un segment de l'écran.
De plus, si vous avez compris le principe de codage DTB/BTD, vous êtes maintenant capable de coder selon n'importe quel système vers n'importe quel système.
Tout ce que je vous dirai sur l'affichage c'est que chaque input correspond à un décimal, chaque output à un segment de l'écran.
Voilà pour cette première partie de tutoriel sur les (super) calculateurs minecraft !
Je le répète, tout ce qui est présenté ici, je l'ai imaginé et mis en oeuvre moi même, donc pas de cri au plagiat si ça ressemble à quelque chose qui existe déjà (Auquel cas je suis désolé), si mon système ressemble à un préexistant, c'est juste la preuve qu'il n'y a pas tant de manières de le faire.
Prochaine étape : On intercalera une fonction addition entre les 2 convertisseurs ! (Là ils seront utiles) Attention, l'addition commence à être très compliquée par rapport à ce qui est présenté dans cette première partie. J'ai réussis à la faire fonctionner hier après 6 heures de boulot dessus non stop, sachant que ma méthode personnelle d'addition n'est sans doute pas la meilleure (Mais je suis fier du résultat x') )
V Download Link ! V