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 » **Le SDK pour fx-9860/Graph85** Topic officiel
Matronix Hors ligne Ancien administrateur Points: 6058 Défis: 82 Message

**Le SDK pour fx-9860/Graph85** Topic officiel

Posté le 18/07/2007 15:08

Vu la multitude de topics sur le SDK de la 85, j'ai décidé d'en faire un seul et unique, où l'on posera nos problèmes et explications sur ce même topic, et non pas sur 50, par souci de clareté et de facilité.

Des nouveautés ? Des problèmes ? Des idées ?
Exposez les ici !

Voici une liste de commandes commencées par Muelsaco. N'hésitez pas à rajouter vos commandes dans le topic je les rajouterai pour en faire profiter tout le monde. Merci.

// Locate X,Y,"Texte"
:arrow: locate(x,y); Print("Texte");

// Text X,Y,"Texte"
:arrow: PrintMini(x,y,"Texte",0);

// F-Line x1,y1,x2,y2
:arrow: Bdisp_DrawLineVRAM(x1,y1,x2,y2);

// Tracer une ligne blanche
:arrow: Bdisp_ClearLineVRAM(x1,y1,x2,y2);

// PxlOn x,y & PxlOff x,y
:arrow: Bdisp_SetPoint_VRAM(x,y,<couleur>)
<couleur> : 0 pour le blanc, 1 pour le noir

// Cls
:arrow: Bdisp_AllClr_DDVRAM();

// Actualiser l'écran
:arrow: Bdisp_PutDisp_DD();
Fonction très importante. Elle permet d'afficher une image tracée virtuellement dans la VRAM. Toute image doit d'abord être dessinée dans la VRAM puis affichée à l'écran. Vous ne verrez donc pas votre image s'afficher tant que vous n'aurez pas appelé Bdisp_PutDisp_DD(). À noter que les fonctions GetKey() et Print() l'appellent automatiquement.

While <exp1>
<code>
WhileEnd
:arrow:
while(<exp1>)
{
  <code>
}

// StoPict x
:arrow: SaveDisp(x);
x variant de 1 à 3 uniquement.

// RclPict x
:arrow: RestoreDisp(x);
  x variant de 1 à 3 uniquement.

// Ouvrir un popup (comme les erreurs syntaxe, etc)
:arrow: PopUpWin(<taille>);
  <taille> : de 1 à 8.


Rappels sur les variables globales : Source

* Les variables globales sont à utiliser avec précaution, puisqu'elles créent des liens invisibles entre les fonctions. La modularité d'un programme peut en souffrir et le programmeur risque de perdre la vue d'ensemble.
* Il faut faire attention à ne pas cacher involontairement des variables globales par des variables locales du même nom.
* Le codex de la programmation défensive nous conseille d'écrire nos programmes aussi 'localement' que possible.

L'utilisation de variables globales est jusitifiée, si

* Plusieurs fonctions qui ne s'appellent pas ont besoin des mêmes variables, ou
* Plusieurs fonctions d'un programme ont besoin du même ensemble de variables. Ce serait alors trop encombrant de passer toutes les variables comme paramètres d'une fonction à l'autre.


Précédente 1, 2, 3 ··· 10 ··· 20 ··· 27, 28, 29, 30, 31, 32, 33 ··· 40 ··· 46, 47, 48 Suivante


aliegeois Invité

Citer : Posté le 28/04/2014 19:26 | #


D'accord, est-ce que c'est possible de faire un menu avec comme options : "Jouer, Options, Quitter" et lorsque l'on sélectionne quitter l'application retourne au menu ? Et qu'appelles-tu faire un return dans le main ? juste écrire "return 0;" ?
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Lephenixnoir En ligne Administrateur Points: 24227 Défis: 170 Message

Citer : Posté le 28/04/2014 19:28 | #


Oui, ça suffit.
Lorsque la fontion AddIn_Main est terminée, que ce soit par un return ou parce que l'on est arrivé au bout, tout simplement, le programme s'arrête.
Néanmoins ça remmène au menu, et ensuite, impossible de relancer l'add-in. Puisque la calculatrice va vouloir le ressortir dans l'état dans lequel il a été quitté, elle ne va rien faire, donc il faudra lancer une autre application avant de pouvoir y retourner.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)


aliegeois Invité

Citer : Posté le 28/04/2014 19:30 | #


Et comment je fais alors pour que l'application ne revienne pas là ou elle était mais recommence depuis le début ?
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Lephenixnoir En ligne Administrateur Points: 24227 Défis: 170 Message

Citer : Posté le 28/04/2014 19:32 | #


Soit tu lances une autre application avant, soit tu ne fais pas de return mais tu renvoie au menu.
Au fait, lorsque tu fais un return depuis le AddIn_Main, fais attention à la valeur: 0 signifie que l'exécution s'est terminée sur une erreur, 1 si tout s'est passé correctement.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)


aliegeois Invité

Citer : Posté le 28/04/2014 19:35 | #


J'ai bien compris qu'il fallait retourner au menu mais je demande : comment on retourne au menu ? il y a une fonction retournerAuMenu() ?
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Lephenixnoir En ligne Administrateur Points: 24227 Défis: 170 Message

Citer : Posté le 28/04/2014 20:50 | #


En appuyant sur la touche MENU lorsque le programme exécute un GetKey().
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)


aliegeois Invité

Citer : Posté le 28/04/2014 21:27 | #


Je me suis mal exprimé, je demande si on peut retourner au menu principal depuis le programme, je ne veut pas que l'utilisateur ait à appuyer sur le bouton "Menu", je veut que le programme retourne de lui-même au menu. Tu me dis que je ne dois pas faire de return mais renvoyer au menu, très bien mais comment ? En gros je voudrais que le programme "simule" que l'utilisateur ait appuyé sur "Menu".
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Nemhardy Hors ligne Grand maître des Traits d'Esprit Points: 1242 Défis: 54 Message

Citer : Posté le 28/04/2014 21:31 | #


Il doit y avoir des syscall de "keyinject" je pense (enfin sur prizm il y a)... Il faut voir les sources de prgm 2, il s'en sert à mon avis.
Lephenixnoir En ligne Administrateur Points: 24227 Défis: 170 Message

Citer : Posté le 28/04/2014 21:35 | #


Non, il n'y a pas de tel syscall sur Graph 85.
aliegeois, si tu fais un return depuis le main, c'est tout le programme qui s'arrête, donc c'est une solution qui ne convient pas.
À ma connaissance, il n'y a aucune solution pour ce que tu cherches.
En revanche, les sycalls permettent de lancer directement une application depuis un add-in.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 28/04/2014 21:39 | #


Si : il existe un syscall "key_inject", voir le topic de PLL dans les tutoriel
Il fonctionne ainsi :
return_to_menu(void)
{
    unsigned int key;
    key_inject(KEY_CTRL_MENU);
    GetKey(&key); // retourne au menu
}

Finir est souvent bien plus difficile que commencer. — Jack Beauregard


aliegeois Invité

Citer : Posté le 28/04/2014 21:40 | #


Et il n'y aurait pas moyen de faire quelque chose comme :
while(1) {
    Getkey(&key);
    key = KEY_CTRL_MENU;
}


Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Lephenixnoir En ligne Administrateur Points: 24227 Défis: 170 Message

Citer : Posté le 28/04/2014 21:46 | #


Oups.
Ce syscall n'apparaît pas dans la documentation de SimLo. Tu en as une plus complète ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)


aliegeois Invité

Citer : Posté le 28/04/2014 21:57 | #


Je viens de faire plusieurs tests avec différentes syntaxes et effectivement, ça ne marche pas. C'est pas grave, je vais travailler différemment. Merci pour l'aide.
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Lephenixnoir En ligne Administrateur Points: 24227 Défis: 170 Message

Citer : Posté le 28/04/2014 22:04 | #


Cette fonction est un syscall. Jette un coup d'oeil au tutoriel pour les utiliser.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 28/04/2014 22:31 | #


Les explications des syscalls sont dans le .h fourni dans le tuto
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 29/04/2014 03:19 | #


record de define WTF battu:

Dans un spoiler, c'est un long define
Cliquer pour enrouler


#define DEBUG_TEXT \
        char tmp[4];\
        tmp[0]=(char)(rx/100)+'0';\
        tmp[1]=(char)(rx/10)-(tmp[0]-'0')*10+'0';\
        tmp[2]=rx-(tmp[0]-'0')*100-(tmp[1]-'0')*10+'0';\
        tmp[3]=0;\
        PrintMini(0,0,"RX:",MINI_OVER);\
        PrintMini(12,0,(const unsigned char*)tmp,MINI_OVER);\
        tmp[0]=(char)(ry/100)+'0';\
        tmp[1]=(char)(ry/10)-(tmp[0]-'0')*10+'0';\
        tmp[2]=ry-(tmp[0]-'0')*100-(tmp[1]-'0')*10+'0';\
        tmp[3]=0;\
        PrintMini(0,7,"RY:",MINI_OVER);\
        PrintMini(12,7,(const unsigned char*)tmp,MINI_OVER);\
        Point3D tmp0=test.getPos();\
        tmp0.set((tmp0.getX()<0)?-tmp0.getX():tmp0.getX(),(tmp0.getY()<0)?-tmp0.getY():tmp0.getY(),(tmp0.getZ()<0)?-tmp0.getZ():tmp0.getZ());\
        tmp[0]=(test.getPos().getX()>=0)?((char)(tmp0.getX()/100)+'0'):('-');\
        tmp[1]=(char)(tmp0.getX()/10)-((test.getPos().getX()>=0)?((tmp[0]-'0')*10):(0))+'0';\
        tmp[2]=tmp0.getX()-((test.getPos().getX()>=0)?((tmp[0]-'0')*100):(0))-(tmp[1]-'0')*10+'0';\
        tmp[3]=0;\
        PrintMini(0,20,"X:",MINI_OVER);\
        PrintMini(7,20,(const unsigned char*)tmp,MINI_OVER);\
        tmp[0]=(test.getPos().getY()>=0)?((char)(tmp0.getY()/100)+'0'):('-');\
        tmp[1]=(char)(tmp0.getY()/10)-((test.getPos().getY()>=0)?((tmp[0]-'0')*10):(0))+'0';\
        tmp[2]=tmp0.getY()-((test.getPos().getY()>=0)?((tmp[0]-'0')*100):(0))-(tmp[1]-'0')*10+'0';\
        tmp[3]=0;\
        PrintMini(0,27,"Y:",MINI_OVER);\
        PrintMini(7,27,(const unsigned char*)tmp,MINI_OVER);\
        tmp[0]=(test.getPos().getZ()>=0)?((char)(tmp0.getZ()/100)+'0'):('-');\
        tmp[1]=(char)(tmp0.getZ()/10)-((test.getPos().getZ()>=0)?((tmp[0]-'0')*10):(0))+'0';\
        tmp[2]=tmp0.getZ()-((test.getPos().getZ()>=0)?((tmp[0]-'0')*100):(0))-(tmp[1]-'0')*10+'0';\
        tmp[3]=0;\
        PrintMini(0,34,"Z:",MINI_OVER);\
        PrintMini(7,34,(const unsigned char*)tmp,MINI_OVER);


Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Dark storm En ligne Labélisateur Points: 11634 Défis: 176 Message

Citer : Posté le 29/04/2014 08:24 | #



Pas mal du tout

C'est pour ton Minecraft ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 29/04/2014 15:13 | #


ouaip, c'est des petites info de debug que je m'affiche (rx et ry sont les angles de rotation de la camera et x,y et z la position de la camera), j'avais pas envie de faire une vrai fonction pour ça, et donc j'avais un gros truc qui traînait au milieu du code et je me suis dit "pourquoi pas le mettre en define tout en haut du programme pour libérer de la place?" et ça a marché.
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Lephenixnoir En ligne Administrateur Points: 24227 Défis: 170 Message

Citer : Posté le 29/04/2014 15:15 | #


C'est quand même pas très sérieux
Pourquoi pas avec un #ifdef DEBUG ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 29/04/2014 15:19 | #


Parce que je sais ce qu'il y a dans mon minecraft donc je n'ai pas besoins de condition, je ne risque pas de réécrire un DEBUG déjà existant. Et pour ce qui est du sérieux, je fais parfois des bouts de codes qui ne serviront qu'a faire des tests et qui seront remplacés plus tard, ce qui fait que je fais souvent des brouillon, des copiés-collés en pagaille.
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 03/05/2014 10:28 | #


Petit problème, j'ai fais une fonction qui est censé afficher du texte
void dispChar(char *ch, const int box_pos, const int box_size, const int maxChar, const int startD,  const int endD){
    int x, y;
    div_t pos_i;
    int i;
    clearBox(box_pos,box_size); //fonction qui efface tous les caractères
    for (i = 0; i<20*box_size && i<endD; i++)
    {
        pos_i=div(i,20);
        x=pos_i.rem;
        y=pos_i.quot+box_pos;
        PrintXY(x*6+2, y*10+2, (unsigned char *)ch[startD+i] ,0);
    }
    ML_display_vram();
}
Or l'émulateur me fait un system error (target= 0x74) quand je l'appelle dispChar(text, box_pos, box_size, maxChar, 0, 0, endD); //text a été alloué dynamiquement
En me servant des breakpoints et en faisant des tests, j'ai isolé l'erreur: c'est quand j'essaye d'afficher ch[start+i] que ça plante, même si j'essaye avec ch[0] alors qui si je veux afficher la chaîne entière ou modifier une valeur ça marche parfaitement.
Des idées?
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 27, 28, 29, 30, 31, 32, 33 ··· 40 ··· 46, 47, 48 Suivante

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