Forums Casio - Autres questions

Index du Forum | Autres questions | Une question comme ça
Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 347
Défis: 0
Message
Posté le 24/06/2017 17:39

Une question comme ça :

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 )



Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 347
Défis: 0
Message
Dernier message de la page précédente :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 ?
----------------------------------

Un jour un Homme à dit :

Quand tu te lève le matin, tu as deux choix : soit tu te recouche pour continuer ton rève soit tu te lève pour le réaliser.



Pages: Précédente | 1, 2, 3, 4, 5, 6 | Suivante

Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 10603
Défis: 130
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.
----------------------------------
Watch me, as I build my empire with my own hands.
Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 347
Défis: 0
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;
}




?
----------------------------------

Un jour un Homme à dit :

Quand tu te lève le matin, tu as deux choix : soit tu te recouche pour continuer ton rève soit tu te lève pour le réaliser.
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 10603
Défis: 130
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 !
----------------------------------
Watch me, as I build my empire with my own hands.
Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 347
Défis: 0
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
----------------------------------

Un jour un Homme à dit :

Quand tu te lève le matin, tu as deux choix : soit tu te recouche pour continuer ton rève soit tu te lève pour le réaliser.
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 10603
Défis: 130
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à.
----------------------------------
Watch me, as I build my empire with my own hands.
Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 347
Défis: 0
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...
----------------------------------

Un jour un Homme à dit :

Quand tu te lève le matin, tu as deux choix : soit tu te recouche pour continuer ton rève soit tu te lève pour le réaliser.
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 10603
Défis: 130
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().
----------------------------------
Watch me, as I build my empire with my own hands.
Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 347
Défis: 0
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.
----------------------------------

Un jour un Homme à dit :

Quand tu te lève le matin, tu as deux choix : soit tu te recouche pour continuer ton rève soit tu te lève pour le réaliser.
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 10603
Défis: 130
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 !
----------------------------------
Watch me, as I build my empire with my own hands.
Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 347
Défis: 0
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....
----------------------------------

Un jour un Homme à dit :

Quand tu te lève le matin, tu as deux choix : soit tu te recouche pour continuer ton rève soit tu te lève pour le réaliser.
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 10603
Défis: 130
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.
----------------------------------
Watch me, as I build my empire with my own hands.
Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 347
Défis: 0
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 à +
----------------------------------

Un jour un Homme à dit :

Quand tu te lève le matin, tu as deux choix : soit tu te recouche pour continuer ton rève soit tu te lève pour le réaliser.
Zezombye
Hors ligne
Rédacteur
Niveau: Confirmé
Points: 845
Défis: 9
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
Niveau: Intermédiaire
Points: 347
Défis: 0
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
----------------------------------

Un jour un Homme à dit :

Quand tu te lève le matin, tu as deux choix : soit tu te recouche pour continuer ton rève soit tu te lève pour le réaliser.
Zezombye
Hors ligne
Rédacteur
Niveau: Confirmé
Points: 845
Défis: 9
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
Hors ligne
Administrateur
Niveau: Confirmé
Points: 10603
Défis: 130
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.
----------------------------------
Watch me, as I build my empire with my own hands.
Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 347
Défis: 0
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. ..?
----------------------------------

Un jour un Homme à dit :

Quand tu te lève le matin, tu as deux choix : soit tu te recouche pour continuer ton rève soit tu te lève pour le réaliser.
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 10603
Défis: 130
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.)
----------------------------------
Watch me, as I build my empire with my own hands.
Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 347
Défis: 0
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 ?
----------------------------------

Un jour un Homme à dit :

Quand tu te lève le matin, tu as deux choix : soit tu te recouche pour continuer ton rève soit tu te lève pour le réaliser.
Lephenixnoir
Hors ligne
Administrateur
Niveau: Confirmé
Points: 10603
Défis: 130
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é.
----------------------------------
Watch me, as I build my empire with my own hands.

Pages: Précédente | 1, 2, 3, 4, 5, 6 | Suivante

Index du Forum | Autres questions | Une question comme ça

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2018 | Il y a 57 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Casio Education Casiopeia CasioFan, la communauté ClassPad CodeWalrus

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd