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 » [C] Une erreur d'implementation de fonction tenace
Luck36 Hors ligne Membre Points: 7 Défis: 0 Message

[C] Une erreur d'implementation de fonction tenace

Posté le 14/08/2013 17:12

Bonjour/bonsoir (selon quand vous me lirez) ;

Depuis ce matin j'ai cette erreur à la compilation :

** L2310 (E) Undefined external symbol "_printf" referenced in "C:\Users\luck\Desktop\casio\proj\Debug\main.obj"


Tout ça pour dire que je ne vois pas ce qui cloche. J'ai pourtant bien mis
#include <stdio.h>
; mais le compilateur ne reconnaît pas la fonction, avec ou sans son prototype :(. Une solution ?

Ps : désolés pour la question de noob mais je débute dans la monde merveilleux de casio !





Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 14/08/2013 17:19 | #


T'inquiète, le SDK de casio ne respecte pas les standards, cette fonction n'existe pas pour le compilateur, il faut utiliser PrintXY(x,y,texte), tu as les fonctions dans la doc du SDK
Luck36 Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 14/08/2013 18:07 | #



Merci beaucoup, j'aurais pour finir deux questions :

1. pour cette fonction il ne faut inclure aucune librairie ?
2.Pour ce qui est de la déclaration des variables, conditions, et l'utilisation des 5 opérations de bases (+,- , *,/ ,%) ; casio les reconnais ou pas ?
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 14/08/2013 18:22 | #


1. je n'en sait rien
2. je crois que tout fonctionne à ce niveau là, c'est juste certaines fonctions qui ne sont pas reconnues ou qui sont différentes
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 14/08/2013 19:26 | #


1) La fonction PrintXY est incluse dans "fxlib.h" qui est automatiquement ajouté à un nouveau projet. Donc non, tant que tu ne créés pas des fichier .c en plus, pas besoin d'inclure fxlib.h.

2) Pour savoir quelles fonctions des libs standards tu peux utiliser, regarde dans la doc fournie avec le SDK. La plupart des fonctions marchent, mais par contre il faut inclure les libs avec #include "abc.h" et non #include <abc.h>.

Pour plus d'infos sur Fxlib, le wiki est très bien fait
Pour les fonctions graphiques, c'est MonochromeLib de PierrotLL qui te sera utile. Attention, la lib contenue dans le lien n'est pas compatible SH4, va voir sur le forum, tu trouvera la même mais SH4
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Totoyo Hors ligne Membre d'honneur Points: 16093 Défis: 102 Message

Citer : Posté le 15/08/2013 00:07 | #


Dark S a écrit :
Pour les fonctions graphiques, c'est MonochromeLib de PierrotLL qui te sera utile. Attention, la lib contenue dans le lien n'est pas compatible SH4, va voir sur le forum, tu trouvera la même mais SH4

Je peux mettre à jour le fichier, ça sera plus simple pour retrouver la version SH4 de MonochromeLib.
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Citer : Posté le 15/08/2013 00:41 | #


J'avais proposé a pierrotll par MP de la mettre à jour (surtout que avec ce que j'ai trouvé, il suffit juste de rajouter "const" devant le tableau et ça fonctionne) mais j'ai pas reçu de réponse.
Totoyo Hors ligne Membre d'honneur Points: 16093 Défis: 102 Message

Citer : Posté le 15/08/2013 10:39 | #


Il ne répond plus trop aux MP, il travaille maintenant et à très peu de temps à consacrer à PC. Moi-même, pour recevoir une réponse de sa part, c'est la croix et la bannière
Donc, le mieux est de le mettre à jour sans passer par lui.
Luck36 Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 15/08/2013 12:10 | #


Merci à tous pour vos réponses. Dernière chose :

Comment on peut afficher le contenu d'un variable ; ou plutôt quel fonction utilisé parce que PrintXY() se limite uniquement a des strings non ? N'y a t'il pas une fonction équivalente pour afficher des int ou des double ?

Edit : A oui et après relecture de la doc je ne vois pas non plus comment on peut stocker un nombre dans une variable :(. Est ce qu'il existe un équivalent de scanf() ?

Désolés encore une fois pour toutes ces questions que je vous pose ; mais la doc manque de clarté.
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 15/08/2013 13:13 | # | Fichier joint


Tu mets le .c et le .h (en pièce jointe) dans ton projet et tu utilises la fonction PrintV(int)
C'est quelqu'un du forum qui me l'a passé (dodormeur je crois).
Pour les mettre dans ton projet, tu décompresses le .zip et tu mets le .c et le .h dans le dossier de ton projet, ensuite dans le SDK tu clics droit sur "Source Files" (la fenêtre à gauche) et tu fais "Add", tu choisis le .c
Ensuite tu fais la même chose pour le Header juste en dessous
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 15/08/2013 13:17 | #


Non, je ne connais pas de fonction native pour afficher des varibales, mais ce code transforme un nombre entier (int) en string (avec n le nombre en question):

int i, lenght = 0;
    char str[12] = "0";
    
    if(n)
    {
        if(n < 0)
        {
            lenght ++;
            str[0] = '-';
            n = - n;
        }
        
        for(i=n; i; i/=10) lenght++ ;
        str[lenght] = 0;
        for( ; n; n/=10) str[--lenght] = n%10 + '0';
    }


tu peux ensuite créer ta fonction d'affichage avec Print, PrintXY, PrintMini, etc

void PrintInt(int x, int y, int n)
{
    // le code si dessus

    locate(x, y);
    Print(str);
}

void PrintMiniInt(int x, int y, int n, int mode)
{
    // le code si dessus

    PrintMini(x, y, str, mode);
}

etc.

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Luck36 Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 15/08/2013 13:32 | #


Merci à tous :). Pour ce qui est de l’affectation d'une valeur à une variable ; comment faire vu que scanf() n'est pas dans la doc officiel. Auriez-vous une fonction équivalente compatible avec les processeurs SH4 ?

Cordialement,
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 15/08/2013 16:08 | #


Je connais pas de fonction d'input ni de texte, ni de variable...
Du coup, j'ai créé une fonction avec un curseur comme sur les jeux de type GameBoy
Après, je réfléchissais à une fonction où tu déplace un curseur le long de ton nombre avec droite/gauche, et avec haut/bas tu incrémente petit à petit la valeur sélectionnée.
Sinon, tu peux toujours aller fouiller dans les sources d'utilitaires qui ont une bonne fonction d'input.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 15/08/2013 16:31 | #


en soi, cela ne doit pas etre tres dur a faire


int inputChiffre()
{
int a;
char key[10]={K_0,K_1,K_2,K_3,K_4,K_5,K_6,K_7,K_8,K_9};
for(a=0;a<10;a++)if(key_down(key[a])){while(key_down(key[a]))Sleep(5);return a;}
return -1;
}

int inputInt()
{
int chiffre;
int result=0;
while(!key_down(K_EXE))
{
chiffre = inputChiffre();
if(chiffre > -1)result = result*10+chiffre;
PrintV(1,1,result);
ML_display_vram();
ML_clear_vram();
Sleep(200);
}
return result;
}


j'ai fait ca en 30 seconde, mais normalement ca marche
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 15/08/2013 20:04 | #


Tu va le pertuber avec les fonctions d'EasyCoding
Et puis tant qu'a faire autant utiliser le GetKey, c'est fait pour

Le problème avec ta fonction, c'est que tu peux pas corriger les chiffres
Un autre truc fait en 2 minutes (ne marche pas avec des négatifs, mais ça se bidouille ) :


int InputInt(int max)
{
    int nombre = 0;
    unsigned int key;
    
    while(1)
    {
         PrintInt(5, 4, nombre);  // voir la fonction un peu plus haut
        
         Getkey(&key);
         switch(key)
         {
                case KEY_CHAR_0 : if(nombre!=0) nombre *= 10;
                      break;
                case KEY_CHAR_1 : nombre *= 10; nombre += 1;
                      break;
                case KEY_CHAR_2 : nombre *= 10; nombre += 2;
                      break;
                case KEY_CHAR_3 : nombre *= 10; nombre += 3;
                      break;
                case KEY_CHAR_4 : nombre *= 10; nombre += 4;
                      break;
                case KEY_CHAR_5 : nombre *= 10; nombre += 5;
                      break;
                case KEY_CHAR_6 : nombre *= 10; nombre += 6;
                      break;
                case KEY_CHAR_7 : nombre *= 10; nombre += 7;
                      break;
                case KEY_CHAR_8 : nombre *= 10; nombre += 8;
                      break;
                case KEY_CHAR_9 : nombre *= 10; nombre += 9;
                      break;
                case KEY_CHAR_DEL /* vérifier le nom de la touche : KEY_CTRL_DEL ? */ : if(nombre) nombre = (int) nombre/10;
                      break;
                case KEY_CTRL_EXE : return nombre;
                default: break;
         }
    }
}

Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 15/08/2013 20:22 | #


ton code peut etre raccourci

int InputInt(int max)
{
    int a;
    int nombre = 0;
    unsigned int key;
    int keyCode[] = {KEY_CHAR_0,KEY_CHAR_1,KEY_CHAR_2,KEY_CHAR_3,KEY_CHAR_4,KEY_CHAR_5, KEY_CHAR_6,KEY_CHAR_7,KEY_CHAR_8,KEY_CHAR_9}

    while(1)
    {
         PrintInt(5, 4, nombre);  // voir la fonction un peu plus haut
        
         Getkey(&key);
         for(a = 0;a<10;a++)if(keyCode[a]==key){nombre*=10;nombre+=a;}
         if(key==KEY_CHAR_DEL )nombre = nombre/10;
        //meme si nombre = 0, cela ne change rien de le diviser par 10 , et c'est de toute facon un int, inutile de le caster
      /* vérifier le nom de la touche : KEY_CTRL_DEL ? */
                      break;
                if(key ==KEY_CTRL_EXE)return nombre;

         }
    }
}

Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !

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 38 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