Posté le 27/11/2019 15:12
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 159 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
Citer : Posté le 27/11/2019 15:13 | #
Si tu utilises le SDK, il faut que tu lises le fichier PDF de fxlib. Il est dans les manuels du SDK (fx-9860G Libraries.pdf). Tu as ça ?
Citer : Posté le 27/11/2019 15:16 | #
Je t'invite à te renseigner sur MonochromeLib une librairie graphique permettant de faire à peu près ce que tu demandes. Sinon regarde la documentation de fxlib, la librairie fournie de base par le SDK de Casio.
Citer : Posté le 27/11/2019 15:17 | #
Oui je crois c'est bien ceux du SDK Graph 75 85 95 mais je ne suis parvenu à comprendre quelles fonctions est associer à quoi.
Ajouté le 27/11/2019 à 15:21 :
Ho merci ta documentation de fxlib, elle est d'une précieuse aide !
Ajouté le 27/11/2019 à 22:58 :
j'essaye d'afficher un int mais le programme plante à chaque fois, si quelqu'un peut m'aider s'il vous plait
locate(3,5); Print((unsigned char *)VariableInt);
Albert Einstein
Citer : Posté le 28/11/2019 09:10 | #
Erreur classique. Les données dont tu disposes dans VariableInt c'est un entier. Tu veux "convertir" en chaîne de caractères (le mot approprié est représenter par une chaîne de caractères).
Contrairement aux apparences, le cast (unsigned char *) ne fait pas ça du tout. Ce n'est pas une conversion car ça ne change pas les données. Il faut appeler une vraie fonction pour ça, en l'occurrence sprintf() :
char str[30];
locate(3,5);
sprintf(str, "%d", VariableInt);
Print((unsigned char *)str);
Citer : Posté le 28/11/2019 18:28 | #
Merci beaucoup !
Albert Einstein
Citer : Posté le 29/11/2019 22:27 | #
GetKey(&key);
Très mauvais plan. D'abord tu effaces tout, ensuite tu attends que le joueur fasse quelque chose.
Deux choses :
• Tu dois d'abord effacer l'écran, puis tout dessiner, puis traiter les entrées, dans cet ordre.
• Efface l'écran avec Bdisp_AllClr_VRAM() pour éviter les effets de clignotement. Tu n'as jamais besoin des fonctions en _DD() à part Bdisp_PutDisp_DD().
Au passage, sache que GetKey() appelle Bdisp_PutDisp_DD(). Donc si tu l'utilises, tu n'as pas besoin d'afficher explicitement.
Enfin, je détaille pas, mais GetKey() attend que l'utilisateur appuie sur une touche, et contrôle la vitesse des répétitions. Le Sleep(500) est donc à la fois inutile et plutôt malvenu, je te conseille vraiment de l'enlever.
Citer : Posté le 30/11/2019 00:34 | #
https://www.planet-casio.com/Fr/forums/lecture_sujet.php?id=14992 pour info
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 30/11/2019 12:37 | #
En vérité j'ai retirer mon message car j'avais trouvé la réponse au bout d'un certain temps de réflexion.
j'avais du mal à comprendre d'où venais l'erreur. Je remercie votre aide
Ca fonctionne, après je sais pas si c'est optimisé...
Bdisp_AllClr_VRAM();
locate(7,3); Print((unsigned char*)"MY GAME");
PrintMini(50,30,(const unsigned char *)"JOUER",0);
PrintMini(50,40,(const unsigned char *)"OPTION",0);
PrintMini(50,50,(const unsigned char *)"QUITTER",0);
PrintMini(40,y,(const unsigned char *)"->",0);
Bdisp_PutDisp_DD();
while(1){
GetKey(&key);
if(key==30018) { y-=10; break; }
if(key==30023) { y+=10; break; }
if(key==30004){
if(y==30) Game();
break;
}
}
if(y<30)y=30;
if(y>50)y=50;
}
Albert Einstein
Citer : Posté le 30/11/2019 12:41 | #
C'est très bien comme ça, bien joué !
Citer : Posté le 30/11/2019 12:43 | #
Merci !
Mais actuellement je suis coincé car je ne sais pas comment afficher une image en fonction de X et Y comme par exemple pour faire un RPG. Je sais pas ce que je dis est clair
En résumer, quelque chose qui ressemble à ça : Dungeon-add-in
(Et je sais pas non plus comment convertir une image pour le C)
je crois qu'il faut utiliser Sprite Coder mais il fonctionne pas, enfin je crois; je me retrouve avec une page vide
Ajouté le 30/11/2019 à 12:45 :
j'utise Bdisp_SetPoint_DDVRAM() ( mais je sais pas si c'est le plus optimiser)
Albert Einstein
Citer : Posté le 30/11/2019 12:56 | #
Donc, deux choses. D'abord renseigne-toi sur le double buffering pour comprendre l'utilisé des fonctions _VRAM(). Comme je l'ai dit, tu n'as besoin (et crois-moi, pas envie) d'utiliser les fontions en DD (sauf Bdisp_PutDisp_DD() qui transfère ce que tu as fait dans la VRAM à l'écran).
Pour le reste, afficher une image à une position dépendant d'une variable est un problème d'algorithmique bien plus que de langage. Ça se fait pareil qu'en Basic.
Quant à afficher une image, c'est un peu le même problème, mais tu te tapes les structures de données en plus. Oui il faudrait utiliser Sprite Coder, mais il ne marche plus depuis un bon moment. Je crois que Ninestars avait codé un remplacement en Java qui doit se trouver sur le topic de Sprite Coder. Personnellement ça fait longtemps que je fais autrement donc j'ai pas trop suivi sur le plan des outils de conversion...
Citer : Posté le 30/11/2019 13:03 | #
Ok, merci pour ton aide, je vais faire de mon mieux
Albert Einstein
Citer : Posté le 02/11/2020 14:17 | # | Fichier joint
Bonjour, j'ai essayer d'importer un BMP et l'afficher avec LibBMP, mais ça n'a pas fonctionné.
Voici une partie de mon code :
int AddIn_main(int isAppli, unsigned short OptionNum)
{
unsigned int key;
Bitmap* monBitmap = BMP_Load("\\\\crd0\\3.bmp", NULL);
Bdisp_AllClr_DDVRAM();
BMP_Draw(monBitmap, 10, 20, BMP_OR);
while(1){
GetKey(&key);
}
return 1;
}
le code d'erreur que je reçois est en pièce jointe
Albert Einstein
Citer : Posté le 02/11/2020 14:43 | #
Wouah, je pensais pas que j'entendrais reparler un jour de cette antiquité. T'es fort pour avoir retrouvé ça. xD
À vue de nez je dirai que le chargement de l'image a échoué, tu peux vérifier si monBitmap == NULL (auquel cas ça a échoué).
Citer : Posté le 02/11/2020 14:49 | #
Oui en effet monBitmap == NULL mais je sais pas pourquoi car l'image est bien un .bmp et elle est bien dans SDcard.
j'ai pas fait gaffe à la date LibBMP
En fait je cherche à importer une image .bmp facilement, et j'ai fait des recherche que se soit sur planet-casio ou dans le manuel du SDK et j'ai rien trouver de concluant à part LibBMP
Albert Einstein
Citer : Posté le 02/11/2020 14:50 | #
À l'origine on utilisait SpriteCoder et les fonctions de dessin de MonochromeLib (infiniment plus performant). Et les add-ins sous fxlib le font toujours d'ailleurs.
Citer : Posté le 02/11/2020 14:56 | #
Oui mais on est obligé de "convertir" l'images pour pouvoir l'afficher avec MonochromeLib. Mon objectif était de garder l'image en bmp intacte et la load comme fait LibBMP
Albert Einstein
Citer : Posté le 02/11/2020 15:16 | #
Ultimement si tu gardes l'image dans la mémoire de stockage tu t'exposes à de nombreux problèmes sur les limitations et la lenteur du système de fichiers (deux paramètres que je ne connaissais pas bien voire pas du tout quand j'ai écrit LibBMP).
Le fxSDK contourne ça en convertissant à la compilation les images en "variables", ce qui fait que tu peux avoir tes PNG d'un côté et des variables de l'autre de façon transparente. Mais les images sont toujours dans l'add-in et pas dans la mémoire de stockage.
Citer : Posté le 02/11/2020 15:20 | #
D'accord mais alors je fais face à un autre problème.
Mon but est de convertir tout les sprite généré par particule et les importer donc comment je fais dans ce cas ?
Parce que je vais pas faire un à un dans SpriteCoder car le but de particule est de rendre tout automatique.
Albert Einstein
Citer : Posté le 02/11/2020 15:21 | #
Particule peut intégrer un convertisseur, c'est pas un programme compliqué.