Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » Une question comme ça
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Une question comme ça

Posté le 24/06/2017 17:39

Salut tout le monde,
étant donné Ue j'ai souvent une petite question à poser et que je ne veut pas embêter quelqun sur le live, je crée un topic sur lequel je poserais donc toutes ces questions. Vous pouvez également faire de même sur ce topic.
Donc voilà, 1ere question de ce topic ☺ :
Je bosses actuellement sur des rotations en 3D, et j'ai eu une idée beaucoup plus simple (enfin je pense ) que ce qui a été fait jusqu'à présent, attention : des rotations en utilisant des sinusoides. Rien de nouveau vous me direz, mais si, justement, je ne vous dévoilerai pas toute mon idée mais juste la partie qui me pose problème, voila: pour mes coordonnées de pts j'ai besoin de savoir comment on fait pour avoir les valeurs minimales et maximales de la sinusoide (en cosinus de X) dans deux variables distinctes.
Si quelqun à une idée, il ne se gêne pas .

PS: ce nouveau systheme (enfin je pense qu'il est nouveau ) n'est q'au stade de test. Je ne sais même pas ce qui va ce passer au lencement du prog (enfin si un peu, mais pas assez pour prédire son conporte ment )


Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 Suivante
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 13/11/2017 17:48 | #


Ah, je vois

et au fait, mon prog est au point et je l'ai testé, dis moi, les valeurs des touches ne sont pas les mêmes en Basic Casio qu'en C ? Par exemple, en Basic Casio, la touche F1 est égale a 79, tandis qu'en C elle est égale a 30 009...
Et pour finir, si je veut utiliser un affichage print avec les couleurs inversées (commande "PrintRevC()") cela utilise donc les caractères en "gras" (si tu vois ce que je veut dire) je pense donc qu'il faut que j'agrandisse ma chaine de caractères, mais c'est la que la question me pose problème : combien de fois plu grande ?
Lephenixnoir En ligne Administrateur Points: 24120 Défis: 170 Message

Citer : Posté le 13/11/2017 18:20 | #


Non, en effet ce ne sont pas du tout les mêmes ! Cependant tu n'es pas supposé écrire directement les valeurs. L'en-tête "fxlib.h" inclut en effet l'en-tête "filebios.h" qui contient des « alias » pour toutes les touches. Mais tu peux consulter directement le PDF Key Code List dans l'archive des manuels du SDK. Tu y trouveras des noms bien plus agréables à manipuler comme KEY_CTRL_EXE ou KEY_CHAR_7 !

Il n'y a pas de police grasse à ma connaissance sur Casio. PrintRevC() affiche un caractère (un seul) en blanc sur fond noir, de mémoire. Si tu veux afficher des choses avec des couleurs différentes, utilise PrintXY(), c'est la plus générique des fonctions d'affichage (pour ce qui concerne la police usuelle, celle de Locate en Basic) :
void PrintXY(int x, int y, const unsigned char *str, int reverse);

Note que x et y sont en pixels, ce qui donne une bonne marge de liberté sur le placement. Si reverse = 1, l'affichage est blanc sur noir. D'ailleurs c'est marrant, je pensais qu'il y avait 4 modes sur le dernier paramètre, comme PrintMini(). Dommage.

Pour insister sur ta question, ta chaîne de caractères ne change pas. La taille du résultat ne change pas. Tu fournis le même nombre de caractères, tous les caractères prennent toujours la même place qu'avant.
Mon graphe (25 Fév): (PythonExtra ; fxsdk#11 ; gint#27 ; (Rogue Life || HH2) ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 13/11/2017 18:30 | #


J'ai changé ce que tu m'as dit, mais il n'aime pas trop ça :

erreur:


Executing Hitachi SH C/C++ Compiler/Assembler phase

set SHC_INC=H:\4) Dossier CASIO fx SDK\Logiciel\OS\SH\include
set PATH=H:\4) Dossier CASIO fx SDK\Logiciel\OS\SH\bin
set SHC_LIB=H:\4) Dossier CASIO fx SDK\Logiciel\OS\SH\bin
set SHC_TMP=H:\4) Dossier CASIO fx SDK\Projets\Projet 2\Debug
"H:\4) Dossier CASIO fx SDK\Logiciel\OS\SH\bin\shc.exe" -subcommand=C:\Users\CHASSA~1\AppData\Local\Temp\hmk1989.tmp
H:\4) Dossier CASIO fx SDK\Projets\Projet 2\KeyIndic.c(33) : C2500 (E) Illegal token "void"
H:\4) Dossier CASIO fx SDK\Projets\Projet 2\KeyIndic.c(33) : C1016 (W) Argument mismatch
H:\4) Dossier CASIO fx SDK\Projets\Projet 2\KeyIndic.c(33) : C2201 (E) Cannot convert parameter "4"
H:\4) Dossier CASIO fx SDK\Projets\Projet 2\KeyIndic.c(33) : C2202 (E) Number of parameters mismatch

HMAKE MAKE UTILITY Ver. 1.1
Copyright (C) Hitachi Micro Systems Europe Ltd. 1998
Copyright (C) Hitachi Ltd. 1998


    ERROR: Process failed with return code: 1
Build was not successful.


et mon prog:


#include "fxlib.h"
#include <stdio.h>

int AddIn_main(int isAppli, unsigned short OptionNum)
{
  
    locate(2,3);
    Print((unsigned char*)"KeyValue : 0");
    locate(1,1);
    Print((unsigned char*)"*********************");
    locate(1,7);
    Print((unsigned char*)"*********************");
    locate(1,2);
    Print((unsigned char*)"*                   *");
    locate(1,3);
    Print((unsigned char*)"*                   *");
    locate(1,4);
    Print((unsigned char*)"*                   *");
    locate(1,5);
    Print((unsigned char*)"*                   *");
    locate(1,6);
    Print((unsigned char*)"* by DISPERSEUR     *");

    while(1){

       char buffer [40]; unsigned int key; int reverse;
    
       GetKey(&key);
    
        sprintf(buffer, "KeyValue : %u", key);
        locate(2,3);
        void PrintXY(10, 31, "KeyValue : %u", buffer, reverse 1);                                                      
        
        }
    return 1;
}




?
Lephenixnoir En ligne Administrateur Points: 24120 Défis: 170 Message

Citer : Posté le 13/11/2017 18:39 | #


On dirait que tu n'as pas compris la syntaxe de ce que j'ai écrit !

Ce que je t'ai donné s'appelle le prototype de la fonction PrintXY(). Un prototype a cette forme-là :
TypeDeRetour Fonction(TypeArgument1 [NomArgument1], ..., TypeArgumentN [NomArgumentN]);

Comme tu peux le voir, les noms des arguments sont facultatifs (on le voit parce qu'ils sont entre crochets). Et le void devant, c'est le type de la valeur retournée. void est un cas un peu particulier, ça veut dire que la fonction ne retourne aucune valeur.

Le void n'a donc rien à faire dans la syntaxe utilisée pour appeler la fonction. Tu dois t'y prendre comme ça :
PrintXY(10, 31, "Hello, World!", 1);

De même, il n'y a pas lieu de mettre reverse. La fonction attend un argument de type int, et si je lui ai donné un nom reverse dans le prototype, ce n'est que pour rendre plus explicite son rôle. J'aurais pu lui donner un autre nom voire pas de nom du tout. Et dans l'appele, tu n'as pas le droit de laisser traîner des noms comme ça. Ce qui compte c'est que tu dois fournir un int, ou une expression à valeur entière. reverse 1 ne veut pas dire grand-chose, 1 c'est mieux.

De plus, tu ne dois pas remettre "KeyValue : %u". Pour quoi faire ? Comme tu sais que les fonctions de fxlib ne savent pas faire le formatage, tu as délégué de travail à sprintf() et tu as maintenant ton super buffer tout prêt. Le format que tu as utilisé ne devrait plus t'intéresser, buffer est tout ce qui compte à ce stade !
Mon graphe (25 Fév): (PythonExtra ; fxsdk#11 ; gint#27 ; (Rogue Life || HH2) ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 13/11/2017 18:55 | #


Oui mais moi je veut afficher la valeur de la touche en "gras", la je n'affiche que le "KeyValue"..

Pas si facile comme petit programme..
Sinon, ce n'est pas grave, le prog est tres bien comme il est dans sa dernière version et puis apres tout, ce n'est qu'un outil que j'utiliserais rarement.. du coup ce n'était qu'un exercice (assez compliqué pour moi qui débute ). Pousse un peut Zezombye pour son "début" de tuto C car je pense que ça me serait utile..

merci pour ton aide et bsoir
Lephenixnoir En ligne Administrateur Points: 24120 Défis: 170 Message

Citer : Posté le 13/11/2017 18:58 | #


La notion de « en gras » ne semble pas être très claire. Si tu parles de "Key Value : 32001" par exemple, je ne pense pas que ce soit possible. N'hésite pas à préciser ce que tu entends par là.
Mon graphe (25 Fév): (PythonExtra ; fxsdk#11 ; gint#27 ; (Rogue Life || HH2) ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 14/11/2017 17:12 | #


Excuse du retard de mon message, j'étais en cours...
Oui, par "gras" je voulais dire que je souhaitais afficher le "KeyValue : " normalement et la valeur de la touche pressée en blanc sur noir.
C'est plus cl'air maintenant je pense... excuse de mon imprécision, je ne savais pas comment d'écrire cet affichage...

Lephenixnoir En ligne Administrateur Points: 24120 Défis: 170 Message

Citer : Posté le 14/11/2017 20:00 | #


Le terme « inversé » est relativement approprié pour ça. Notons que tu peux avoir quatre modes différents, qu'on peut qualifier de cette façon :

- Mode normal ou écrasement : le gros rectangle avec tout le texte est affiché. S'il y avait des pixels noirs à l'endroit où le blanc tombe à l'intérieur des lettres ou entre les lettres, il est effacé ;
- Mode écriture : dessine les pixels noirs des lettres, mais n'efface rien ; sur un écran noir, ça ne se voit pas ;
- Mode inversé avec écrasement : pareil que le mode écrasement, mais en couleurs inversées ;
- Mode inversé en écriture : pareil que le mode écriture, mais en blanc.

Ces quatre modes sont respectivement MINI_OVER, MINI_OR, MINI_REV et MINI_REVOR pour la fonction PrintMini().
Mon graphe (25 Fév): (PythonExtra ; fxsdk#11 ; gint#27 ; (Rogue Life || HH2) ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 15/11/2017 07:28 | #


Donc si je veut afficher la valeur (ou plutôt tout mes caractères) la touche pressée il faut que je fasse ça:

PrintMini ( 15,30, buffer, MINI_REV)


"Buffer", et je pense que depuis le temps tu t'en doute , c'est la chaîne dans laquelle j'ai tous les caractères que je veut afficher.
Lephenixnoir En ligne Administrateur Points: 24120 Défis: 170 Message

Citer : Posté le 15/11/2017 07:49 | #


Yup, ça marcherait. Mais souviens-toi que PrintMini() utilise la police de la commande Basic Text, non celle de Locate !
Mon graphe (25 Fév): (PythonExtra ; fxsdk#11 ; gint#27 ; (Rogue Life || HH2) ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 15/11/2017 17:49 | #


ok ça fonctionne, mais je me demande pourquoi quand je compile il memet cette erreur (malgrès cela le programme fonctionne).

Voici l'erreur :

Executing Hitachi SH C/C++ Compiler/Assembler phase

set SHC_INC=H:\4) Dossier CASIO fx SDK\Logiciel\OS\SH\include
set PATH=H:\4) Dossier CASIO fx SDK\Logiciel\OS\SH\bin
set SHC_LIB=H:\4) Dossier CASIO fx SDK\Logiciel\OS\SH\bin
set SHC_TMP=H:\4) Dossier CASIO fx SDK\Projets\Projet 2\Debug
"H:\4) Dossier CASIO fx SDK\Logiciel\OS\SH\bin\shc.exe" -subcommand=C:\Users\CHASSA~1\AppData\Local\Temp\hmkD49D.tmp
H:\4) Dossier CASIO fx SDK\Projets\Projet 2\KeyIndic.c(33) : C1016 (W) Argument mismatch      <-- ici

Executing Hitachi OptLinker04 phase

"H:\4) Dossier CASIO fx SDK\Logiciel\OS\SH\bin\Optlnk.exe" -subcommand=C:\Users\CHASSA~1\AppData\Local\Temp\hmkE4B4.tmp

Optimizing Linkage Editor Completed

HMAKE MAKE UTILITY Ver. 1.1
Copyright (C) Hitachi Micro Systems Europe Ltd. 1998
Copyright (C) Hitachi Ltd. 1998


    Make proccess completed

"H:\4) Dossier CASIO fx SDK\Projets\Projet 2\KEYINDIC.G1A" was created.

Build has completed.



Voici mon code :


#include "fxlib.h"
#include <stdio.h>

int AddIn_main(int isAppli, unsigned short OptionNum)
{
  
    locate(2,3);
    Print((unsigned char*)"KeyValue : 0");
    locate(1,1);
    Print((unsigned char*)"*********************");
    locate(1,7);
    Print((unsigned char*)"*********************");
    locate(1,2);
    Print((unsigned char*)"*                   *");
    locate(1,3);
    Print((unsigned char*)"*                   *");
    locate(1,4);
    Print((unsigned char*)"*                   *");
    locate(1,5);
    Print((unsigned char*)"*                   *");
    locate(1,6);
    Print((unsigned char*)"* by DISPERSEUR     *");

    while(1){

       char buffer [18]; unsigned int key;
    
       GetKey(&key);
    
        sprintf(buffer, "KeyValue : %u", key);
        PrintMini(10 , 20, buffer, MINI_REV);                                          
        
        }
    return 1;
}




?

Si ça te dérange pas, j'aimerais en saivoir un peut plus a propos des icones (sur le menu) parce que le wiki n'en dit pas long. J'ai crée mon immege pour mon icone sur le menu mais quand le wiki me dit "recompiler" je ne saisit pas beaucoup. Si tu peut m'aiclairer la dessus....
Lephenixnoir En ligne Administrateur Points: 24120 Défis: 170 Message

Citer : Posté le 15/11/2017 20:14 | #


Alors, d'abord si tu regardes attentivement, ce n'est pas une erreur mais juste un avertissement (warning) :
C1016 (W) -- signifie « message 1016 (warning) »

En l'occurrence, argument mismatch signifie qu'un argument que tu as donné à une fonction ne colle pas tout à fait à ce qui était attendu. Ce n'est pas trop grave, sinon ce serait une erreur ; en général tu dois faire attention au type des pointeurs quand ça se produit. La raison, c'est que les pointeurs se transforment facilement les uns en les autres, donc même si tu te trompes, c'est « rectifiable ». En revanche si tu confonds un int et un double... c'est pas rattrapable.

Je ne sais pas jusqu'où ta compréhension du C peut me permettre de rentrer dans les détails, mais en gros PrintMini() a la même bizarrerie que Print() - elle attend un const unsigned char * en paramètre. Ça peut te surprendre, car le compilateur ne se plaint pas lorsque tu fournis un unsigned char * à Print(), alors que j'affirme qu'elle attend un const unsigned char *. Le prototype de Print() spécifie bel et bien const unsigned char *, mais le caractère « lecture seule » symbolisé par le const peut être ajouté à volonté sans problème, et le compilateur le fait silencieusement. En revanche le caractère unsigned est un peu plus fourbe, et le compilateur ne peut pas l'ajouter tout seul sans te prévenir. Le warning te prévient que t'as pas donné exactement ce qu'il faut et que le compilateur a fait une conversion « implicite ».

(Si tu n'as pas tout compris dans le paragraphe précédent, ce n'est pas grave.)

Ce qu'il faut que tu remarques, c'est que comme tu as déclaré buffer comme un tableau de char, à chaque fois que tu écris buffer c'est en gros de type char *. Il manque le unsigned, donc le compilateur te le fait savoir. Pour supprimer le warning, il te suffit de caster le pointeur pour indiquer au compilateur que tu ajoutes conscieusement le caractère non-signé, à la ligne 33 :
PrintMini(10, 20, (const unsigned char *)buffer, MINI_REV);

Tu remarqueras que j'ai aussi mis le const, c'est par habitude, et parce qu'autant le C est très (trop) laxiste sur ce point, autant dans une vraie application on ne plaisante pas avec ce qui est const et ce qui ne l'est pas. Mais tu n'as pas à t'en soucier pour l'instant !



Ajouté le 15/11/2017 à 20:26 :
Oups, j'en ai oublié la question sur le SDK. Prenons cette image :


Voilà de mémoire ce que les icônes veulent dire. Pour certaines, je ne sais pas, tu n'en auras sans doute jamais besoin. Je liste de gauche à droite :

Gestion des fichiers
Nouveau fichier, Ouvrir un fichier, Sauvegarder le fichier courant, Sauvegarder tous les fichiers ouverts

Gestion des projets
Nouveau projet, Ouvrir un projet, Sauvegarder le projet courant, Recharger le projet courant

Compilation
Compiler le projet, Annuler une compilation en cours

Commandes d'édition
Couper, Copier, Coller

Rechercher et remplacer
Rechercher, Rechercher et remplacer, Rechercher le suivant (à confirmer), Rechercher le précédent (à confirmer)

Contrôles d'exécution ?
Exécution pas-à-pas, ?

Gestion de l'émulateur
Démarrer l'émulateur, ?, Arrêter l'émulateur, ?, ?, ?, ?, ?

Le reste, c'est deux boutons dont je ne connais pas l'usage, puis la gestion des breakpoints, puis un bouton d'aide global.

Edit : Oups, j'ai mal compris manifestement. Désolé.



Pour ce qui est de recompiler le projet, ça veut simplement dire utiliser l'icône Build (les briques), ou bien Project » Rebuild All. De mémoire, je ne fais plus confiance qu'au second depuis longtemps pour des raisons obscures et compliquées ; les deux devraient marcher.
Mon graphe (25 Fév): (PythonExtra ; fxsdk#11 ; gint#27 ; (Rogue Life || HH2) ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 16/11/2017 07:26 | #


Excuse, on c'est mal compris, je sais plus que bien ou est le bouton pour compiler, je voulais juste savoir comment modifier l'icône de menu de mon "ad-dins" mais j'y suis parvenu.

Merci de ton aide précieuse sur ce topic. Maintenant mon ad-dis est OK et je vais revenir sur un long sujet (cf mon topic sur la 3D...ne t'in quête pas je poserais mes questions plus tard) sur ce à +
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 16/11/2017 07:32 | #


Pour le moteur 3D, il y a celui de Ninestars : http://www.planet-casio.com/Fr/forums/topic14525-8-Windmill,:,moteur,graphique,3D.html
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 16/11/2017 18:25 | #


Merci mais je l'ai déjà vu et j'ai commencé le mien en basic (en Basic !... Tu va te dire mais j'ai réussi à faire un truc qui fonctionne plutôt bien malgré sa lenteur et j'en suis fier...Seule le modif à faire maintenant c'est de rajouter les rotats: élément de base mais aussi le plus compliqué à mettre en place. ) Je le mettrais en lien sur un nouveau message sur mon topic "programmer en 3D". Tu me diras ce que tu en pense (Zezombie). Et au sujet de ton projet de tuto C,...Ça en est où...?

Ajouté le 29/11/2017 à 19:20 :
Salut !

Aujourd'hui je pose une petite question (pas impossible que ça implique un long sujet):

Il n'y a pas longtemps, je me suis réintéréssé a Minecraft car je me penche un peut plus sur tout ce qui est portes logiques, circuits logiques, memoires... et je me suis rendu compte que ça ressemblait beaucoup a la Redstone sur Minecraft... Bref
je me suis lancé le défi suivant: Vu que dans le Calcraft de Remiweb il n'y avait pas la Redstone tout simplement car c'était en 2D... et si je faisait un programme ou plutôt une "interface" sur laquelle on pourrait faire des circuits Redstone vus de dessus.
Je suis arrivé a truc plutôt bien mais persiste un problème : comment faire un algo qui "suivrait" les câbles que l'on aurait posé pour activer lampes, pistons... (actuellement il y a: interrupteur, câbles verticaux/ horizontaux, angles 4 branches, répéteurs configurables (définition du temps d'attente), Lampes et chaque bloc a une valeur qui lui est appropriée pour la matrice dans laquelle est enregistrée la map).
J'en ai fait un séparément. Mais quand dans le programme, je dis "avance de 1 si tu vois un câble devant (ex)" mais il doit aussi reculer si il en voit un derrière,... mais c'est trop beau pour être vrai: il va reculer, avancer, reculer, avancer,...et ainsi de suite a l'infini et de même de haut en bas... au final, il ne vérifie rient et ne "propage" donc pas le "courant"...

Je ne sait pas si j'ai été assez clair mais en gros c'est la question de comment faire un algo qui suit le(s) câbles (haut, bas droite, gauche) que l'on a posé pour activer (si il y en a) un piston ou une lanpe au lieu de vérifier la map qui se trouve dans une matrice et quand il voit un piston ou une lampe il l'active. Bref, si vous avez saisis un petit coup de pouce n'est pas de refus là dessus. Sinon n'hésitez pas a demander des précisions là dessus...

Je compte sur votre aide et merci d'avance
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 29/11/2017 19:27 | #


C'est tout simple : dans la liste des directions possibles, il faut enlever la direction contraire à celle parcourue (dans ce cas, impossible de reculer).
Sinon mon tutoriel sur le SDK est fini : http://www.planet-casio.com/Fr/forums/lecture_sujet.php?id=14992&page=last
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir En ligne Administrateur Points: 24120 Défis: 170 Message

Citer : Posté le 29/11/2017 19:29 | #


Une modélisation plus générale peut-être serait de considérer que des états (événements, fronts) se propagent dans ton fil, à savoir 0 et 1. Chaque état qui parcourt le fil se sépare en deux à chaque intersection et avance d'une case à chaque frame. Ça permettrait de gérer un circuit instable sans problème.
Mon graphe (25 Fév): (PythonExtra ; fxsdk#11 ; gint#27 ; (Rogue Life || HH2) ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 29/11/2017 20:23 | #


Oui mais si je supprime les directions contraires, si que crée un circuit qui va dans la direction contraire, le courant ne se propager pas.
Pour cette solution, Lephenixnoir, si tu pouvais être plus concis s il te plaît. ..?
Lephenixnoir En ligne Administrateur Points: 24120 Défis: 170 Message

Citer : Posté le 29/11/2017 20:31 | #


Plus concis ? Hmm, je peux faire ça éventuellement : « Une autre modélisation consisterait à faire avancer à chaque frame le front des événements (signaux) qui se produisent dans le circuit. »

Si par hasard ce que tu veux dire c'est moins concis, alors tu peux considérer que tu as des signaux, de valeur 0 ou 1, qui se propagent dans le circuit, case par case. Le signal est sur une case à la fois, et avance d'une case par frame. Par exemple, une torche de redstone émet à chaque frame un signal de valeur 1 dans tous les directions autour d'elle (s'il y a de la redstone).

Chaque signal possède alors deux propriétés : sa valeur et sa direction de propagation. Sur un modèle de base avec juste de la redstone, à chaque instant, le signal présent sur un bloc se sépare en trois signaux, qui se positionnent sur les blocs adjacents (seulement si les blocs adjacents contiennent un circuit de redstone... évidemment) avec la direction de propagation qui va bien ; le bloc dans la direction opposée à celle du mouvement n'est pas affecté (ie. on ne revient pas en arrière).

Ensuite tu boucles. Et ce qui est pas mal c'est que si tu mets un circuit fermé avec un signal 1 et un signal 0 dedans, ben ils tourneront l'un autour de l'autre et t'auras toujours la moitié du circuit à 1 et la moitié à 0. (Ça marche aussi avec un seul signal et un inverseur.)
Mon graphe (25 Fév): (PythonExtra ; fxsdk#11 ; gint#27 ; (Rogue Life || HH2) ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 29/11/2017 20:42 | #


Ok merci, ça m'aide.
Mais il reste quand même un point qui m'embete, comment je peut faire en sorte qu le signal aille partout sauf dans la direction opposee a celle dans laqelle il est censé aller ?
Lephenixnoir En ligne Administrateur Points: 24120 Défis: 170 Message

Citer : Posté le 29/11/2017 22:07 | #


C'est certainement pas la partie la plus compliquée. Tu sais quelle est la direction dans laquelle il va, n'est-ce-pas ? Tu l'as stockée quelque part sous la forme d'un vecteur (dx, dy), par exemple (0, 1) ou (-1, 0). Calculer la direction opposée en prenant l'opposé du vecteur ne devrait pas être trop dur. Et maintenant, quoi ? Tu énumères les quatres directions et tu y envoies ton signal... sauf si c'est la direction opposée de tout à l'heure. So far so good? C'est gagné.
Mon graphe (25 Fév): (PythonExtra ; fxsdk#11 ; gint#27 ; (Rogue Life || HH2) ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 52 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd