Forums Casio - Autres questions

Index du Forum | Autres questions | Une question comme ça
Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 278
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 )

Ne laisse pas la difficulté te barrer la route, elle n'est qu'illusion, vas jusqu'au bout et ne baisse pas les bras


Disperseur
Hors ligne
Membre
Niveau: Intermédiaire
Points: 278
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 ?
----------------------------------
Ne laisse pas la difficulté te barrer la route, elle n'est qu'illusion, vas jusqu'au bout et ne baisse pas les bras



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

Lephenixnoir
En ligne
Administrateur
Niveau: Confirmé
Points: 10252
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: 278
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;
}




?
----------------------------------
Ne laisse pas la difficulté te barrer la route, elle n'est qu'illusion, vas jusqu'au bout et ne baisse pas les bras
Lephenixnoir
En ligne
Administrateur
Niveau: Confirmé
Points: 10252
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: 278
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
----------------------------------
Ne laisse pas la difficulté te barrer la route, elle n'est qu'illusion, vas jusqu'au bout et ne baisse pas les bras
Lephenixnoir
En ligne
Administrateur
Niveau: Confirmé
Points: 10252
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: 278
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...
----------------------------------
Ne laisse pas la difficulté te barrer la route, elle n'est qu'illusion, vas jusqu'au bout et ne baisse pas les bras
Lephenixnoir
En ligne
Administrateur
Niveau: Confirmé
Points: 10252
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: 278
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.
----------------------------------
Ne laisse pas la difficulté te barrer la route, elle n'est qu'illusion, vas jusqu'au bout et ne baisse pas les bras
Lephenixnoir
En ligne
Administrateur
Niveau: Confirmé
Points: 10252
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: 278
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....
----------------------------------
Ne laisse pas la difficulté te barrer la route, elle n'est qu'illusion, vas jusqu'au bout et ne baisse pas les bras
Lephenixnoir
En ligne
Administrateur
Niveau: Confirmé
Points: 10252
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: 278
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 à +
----------------------------------
Ne laisse pas la difficulté te barrer la route, elle n'est qu'illusion, vas jusqu'au bout et ne baisse pas les bras
Zezombye
Hors ligne
Membre
Niveau: Confirmé
Points: 740
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: 278
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ù...?
----------------------------------
Ne laisse pas la difficulté te barrer la route, elle n'est qu'illusion, vas jusqu'au bout et ne baisse pas les bras

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

Index du Forum | Autres questions | Une question comme ça
Publicité et partenaires
Casio Education
Casio éducation

TI-Planet
Casiopeia
Casiopeia
CasioFan, la communauté ClassPad
CasioFan
CodeWalrus
CodeWalrus

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2017 | Il y a 46 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Rugby Manager | Jeu de basket | Jeu de handball | Jeu de tennis | Nova Raider | Réparation téléphone | Soccer Rush | Tasty Tale

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