Aprentissage du C (Casio)[encore une fois]
Posté le 04/06/2014 21:48
Comme Darkysun et Eltoredo je me pose pas mal même énormément de questions pour programmer en C sur Casio.
Déjà (première question
) je ne comprend pas tout le code mis par défaut sur le SDK:
J'ai enlevé les commentaires mais je les ai très rapidement remplacés.
J'espère qu'il y aura un âme charitable pour m'aider
.
[brown]#include [gray]"fxlib.h"[/gray][/brown]
[purple]int[/purple] AddIn_main(int isAppli, unsigned short OptionNum) [green]//Que veut dire exactement cette ligne?[/green]
{
[purple]unsigned int[/purple] key;
Bdisp_AllClr_DDVRAM(); [green]//Je sais que ça efface l[gray]'écran mais j'ai compris qu'[/gray]il y avait plusieur couche (une pré-chargée?)[/green]
[green]//Ici ça va :) [/green]
locate(1,[maroon]4[/maroon]);
Print((unsigned char*)[gray]"This application is"[/gray]);
locate(1,[maroon]5[/maroon]);
Print((unsigned char*)[gray]" sample Add-In."[/gray]);
[green]//Une boucle infinie?[/green]
[b][blue]while[/blue][/b](1){
GetKey(&key); [green]//à quoi correspond ce Getkey[/green]
}
[b][blue]return[/blue][/b] 1;
}
[green]//A partir de là je suis complétement perdu[/green]
[brown]#pragma section _BR_Size[/brown]
unsigned long BR_Size;
[brown]#pragma section[/brown]
[brown]#pragma section _TOP[/brown]
[purple]int[/purple] InitializeSystem(int isAppli, unsigned short OptionNum)
{
[b][blue]return[/blue][/b] INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
[brown]#pragma section[/brown]
Je m'arrête la pour aujourd'hui
Merci d'avance pour vos réponses
Citer : Posté le 04/06/2014 22:03 | #
AddIn_main() est une fonction. C'est une sorte de routine, de procédure. AddIn_main() est la fonction principale, c'est donc celle qui est exécutée lorsque l'application est lancée.
Pour Bdisp_AllClr_DDVRAM(), c'est simplement du double buffering. Tu ne rafraîchis par l'écran tant que le dessin n'est pas terminé, donc tu évites le scintillement et les images en construction.
GetKey() est une autre fonction. C'est une fonction qui attend que l'utilisateur appuie sur une touche, et une fois que c'est fait, elle met le numéro de la touche dans la variable key. Tu vas devoir t'en servir souvent par la suite.
Pour la fin, retiens simplement que tout ce qui commence par un '#' est une directive de pré-compilation. Tu te servira principalement de "#include" et "#define". Celles qui sont ici sont indispensables à la calculatrice ; il ne faut pas les enlever mais tu peux les ignorer.
Citer : Posté le 04/06/2014 22:06 | #
Silaxe, tu devrais te rendre teamspeak pour qu'on t'explique plus en détail
Et les Print, c'est pour afficher
Citer : Posté le 04/06/2014 22:06 | #
Salut,
A propos du double buffering, je te conseille de regarder les tutoriels d'intelligide qui sont très bien fait.
Le tutoriel avec le double buffering
Citer : Posté le 04/06/2014 22:16 | #
Merci de vos réponses
Tu ne rafraîchis par l'écran tant que le dessin n'est pas terminé, donc tu évites le scintillement et les images en construction.
Cela veut dire que sans cette fonction l'écran scintille? Du coup comment effacer l'ecran?
Et quelle est la partie du code qui dit que quand j'appuie sur la touche MENU il me ramène sur le menu de la calculatrice?
Citer : Posté le 04/06/2014 22:19 | #
Tu fais ton dessin. Il ira automatiquement dans la VRAM ( la fonction qui prépare ce qui va être afficher )
Puis tu fais Bdisp_PutDisp_DD(); et la, l'écran actuel va "permutter" avec celui qui était dans la VRAM
Ensuite, tu efface la vram pour refaire un jolie dessin :
Bdisp_AllClr_VRAM();
Citer : Posté le 04/06/2014 22:19 | #
ML_clear_vram peut t'aider mais il faut inclure la monochromlib de pierotll sinon Bdisp_AllClr_DDVRAM(); le fait il me semble
Citer : Posté le 04/06/2014 22:19 | #
C'est dans le GetKey(). Cette fonction ne fait pas que ce que j'ai décrit ci-dessus. Tu verras que le catalogue de fonctions est également disponible, de même que le système de captures d'écran.
Pour effacer, l'écran, utilise Bdisp_AllClr_VRAM() qui n'efface que l'écran virtuel (la VRAM). Ensuite, une fois ton image dessinée dans la VRAM, utilise Bdisp_PuDisp_DD() qui "projette" le contenu de la VRAM à l'écran physique (DD).
Citer : Posté le 04/06/2014 22:25 | #
Ah ok, je commence a comprendre
Je ferai des tests demain. Juste l'affichage du texte est compris comme du dessin?
C'est compliqué le C casio
Citer : Posté le 04/06/2014 22:27 | #
Oui, l'affichage de text, c'est du dessin
Citer : Posté le 04/06/2014 22:30 | #
C'est compliqué le C casio
Détrompe-toi, c'est parfois bien plus simple que le C "classique".
Enfin, ne lâche pas l'affaire, c'est pas si compliqué quand on prend le Temps d'y réfléchir.
Citer : Posté le 04/06/2014 22:33 | #
En tout cas c'est plus compliqué le Basic.
La ou je suis vraiment perdu c 'est le nombre de fonctions et de lib différentes.
Tu m'avais parlé d'un catalogue?
Citer : Posté le 04/06/2014 22:35 | #
Je me suis dit EXACTEMENT la même chose (C'EST DUR) mais en fait c'est pas si dur quand on a fait un ou deux programmes avec un peu d'aide pourquoi pas, ça t'aide a mieux visualiser le langage et ses différentes fonctions (la je me rend compte que c'est extraordinaire et pas si dur que ça)
Citer : Posté le 04/06/2014 22:36 | #
Oui, quand tu fais [SHIFT][4] tu as accès à un catalogue de fonctions Basic. Et bien, celui-ci est géré par GetKey(), donc même dans ton add-in tu y as accès.
Citer : Posté le 04/06/2014 22:36 | #
Et plus puissant que le Basic
Ajouté le 04/06/2014 à 22:38 :
@ lephenixnoir c'est bon j'ai compris. Ca peut être utile pour faire un gif
Ajouté le 05/06/2014 à 19:54 :
Après avoir compris comment marche l'effacement de l'écran je bute pour afficher une variable .
Darkynsun m'a envoyé ceci et j'ai ajoutée une variable:
[purple]int[/purple] test = 5;
[green]//au début du code :[/green]
[purple]char[/purple] buffer[5];
[green]//puis plus loin, [/green]
sprintf(buffer[gray]"%d"[/gray], test);
PrintMini(1, 1, buffer, [maroon]1[/maroon]);
[green]//%d c'est si la variable est de type int[/green]
Mais lorsque je compile il me met plusieurs erreurs:
Illegal token "%d"
Argument mismatch
Est-ce'que vous pouvez m'aider?
Citer : Posté le 05/06/2014 19:56 | #
zut j'ai oublié la virgule après buffer en fait
:boulet3:
-Mon Fall Down
-Mon jeu de mains
-Mon starwars
-Mon dessinatout
-Mon niaiseux version 2.0
-Mon niaiseux version 3.0
-Inferno
-Mon super labyrinthe (en cours)
-Mon call of duty en 3D
-Casion (avec Az)
Citer : Posté le 05/06/2014 19:56 | #
Ben déjà il te manque une virgule entre buffer et "%d"
Ajouté le 05/06/2014 à 19:56 :
Trop lent
Citer : Posté le 05/06/2014 19:59 | #
Maintenant il n'y a plus d'erreurs mais quand je lance l'add-in depuis l'émulateur il me marque "System error"
Citer : Posté le 05/06/2014 20:00 | #
Tu as inclus le header ?
Citer : Posté le 05/06/2014 20:01 | #
Elle est pas ailleurs dans le code l'erreur ? Je veux dire dans la partie du programme que tu ne nous as pas donné
Citer : Posté le 05/06/2014 20:03 | #
ah non
C'est une des lib de base du C non?