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, 4, 5, 6, 7, 8, 9, 10 ··· 20 ··· 30 ··· 40 ··· 46, 47, 48 Suivante
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 05/05/2012 11:40 | # | Fichier joint


oulà... Je suis tombé sur une erreur de ce type après avoir perdu.
Je ne sait pas du tout à quoi cela peut correspondre. Une erreur de mémoire, ça j'en suis sur, mais de quel type ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 05/05/2012 12:21 | #


C'est simple, ton programme a essayé de lire une donnée à l'adresse 0xBF800000, adresse qui n'existe pas dans le MMU.
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 05/05/2012 13:45 | #


ça peut donc venir d'un pointeur ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Adbook Hors ligne Membre Points: 1050 Défis: 39 Message

Citer : Posté le 05/05/2012 14:34 | #


Ça vient sûrement d'un pointeur.
--------------------------------------------------

Calculatrice: Graph 35+ (modifiée 75) + graph 75
Dead Labs est sorti ! N'hésitez pas à l'essayer et à voter !!!
Eiyeron Hors ligne Ancien modérateur Points: 5525 Défis: 57 Message

Citer : Posté le 05/05/2012 15:28 | #


C'est un pointeur!
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 12/05/2012 22:12 | #


c'est encore moi,

Comment peut-on demander a la calto de savoir si un nombre est entier ou pas?

merci
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 12/05/2012 22:54 | #


if(nombre == floor(nombre))
ou
if(nombre == (int)nombre)
Nitrosax Hors ligne Ancien rédacteur Points: 1061 Défis: 17 Message

Citer : Posté le 13/05/2012 13:53 | #


Il faut faire attention avec le (int) car je crois qu'il renvoie une valeur arrondie et non une troncature.

Exemple :
nombre = 36.9 (int)nombre = 37
Du coup, ça peut créer des bugs (expèrience personnelle :aie2: )
Cartix Hors ligne Membre Points: 2748 Défis: 98 Message

Citer : Posté le 13/05/2012 13:58 | #


Mas dans le cas de BTL, ça ne change rien (du moins, je suppose que si le nombre vaut 37, (int)nombre ne va pas renvoyer 38 )
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 13/05/2012 14:26 | #


Nitrosax a écrit :

Exemple :
nombre = 36.9 (int)nombre = 37

Ben non.
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 13/05/2012 18:47 | #


ok merci
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 13/05/2012 19:13 | #


Enfin, la différence c'est qu'un cast en int donne la troncature à l'unité alors que floor retourne la partie entière (l'entier inférieur). La différence est sur les nombres négatifs.
(int) -3.2 == -3
floor(-3.2) == -4.0
Totoyo Hors ligne Membre d'honneur Points: 16103 Défis: 102 Message
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 17/05/2012 21:37 | #


Je revient sur mon problème de pointeur: j'ai commenté tout ce qui pouvait provoquer l'erreur, mais rien n'y fait...
Ci-joint le code posant problème (à la fin d'une partie, donc c'est sur le menu ou le main):

Afficher
masquer

Fichier metrosib.c (main)
int AddIn_main(int isAppli, unsigned short OptionNum)
{
    int key, distance = 0;
    int choix = 0;
    
    Bdisp_AllClr_DDVRAM();
    do
    {
        choix = menu(distance); // tout est construit en fonction du choix de départ
        
        switch(choix)
        {
            case 1: distance = jouer();
                break;
            case 2: instructions();
                break;
            case 3: /*highscores()*/;
                break;
            case 4: credits();
        }
        
    } while(1);
    
    return 1;
}


menu.c

int menu(int distance)
{
    // creation des variables
    int key;
    char choix = 1;
    
    do
    {    
        // actualisation du menu
        unsigned char menu[] = {0x00, ..., 0x00}; // je vous épargne du code complet ;)
    
        ML_clear_vram();
        
        ML_bmp_or(menu, 0, 0, 128, 64);
        ML_display_vram();
    
        PrintMini(40, 21, "Score:", 0);
        printVmini(70, 21, distance);
        
        /* AFFICHAGE DU CURSEUR */
        ML_rectangle(53, choix * 7 + 25, 127, choix * 7 + 31, 0, ML_XOR, ML_XOR);
        ML_filled_circle( 53, choix * 7 + 28, 3, ML_BLACK);
        
        ML_display_vram();
    
        // --------------- getkey ---------------    */
        while(1)
        {
            GetKey(&key);
            if(key == KEY_CTRL_UP || key == KEY_CTRL_DOWN || key == KEY_CTRL_EXE) break;
            Sleep(10); // permet d'economiser les piles
        }
        
        if(key == KEY_CTRL_UP)
        {
            choix --;
            if(choix < 1) choix = 4;
        }
        
        if(key == KEY_CTRL_DOWN)
        {
            choix++;
            if(choix > 4) choix = 1;
        }
        
        if(key == KEY_CTRL_EXE) break;
        
    }while(1);
    
    return choix;
}


Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 17/05/2012 21:55 | #


La fonction menu retourne un char
char choix = 1;

I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 17/05/2012 22:07 | #


merci, j'avais pas fait attention

Ajouté le 17/05/2012 à 22:09 :
et bien l\'erreur ne vient pas de là...
mais j\'ai au moins corrigé ceci
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Pierrotll Hors ligne Ancien administrateur Points: 5488 Défis: 41 Message

Citer : Posté le 17/05/2012 22:13 | #


Purobaz a écrit :
La fonction menu retourne un char
Et alors, c'est un type entier, ça ne pose aucun problème.

Il n'y a d'ailleurs aucun problème dans ce code.
Juste quelques petits détails :
- Inutile d'appeler Sleep dans une boucle appelant GetKey, c'est une fonction bloquante qui attend qu'une touche soit enfoncée. D'ailleurs je ne comprends pas non plus pourquoi tu mets GetKey dans une boucle.
- Inutile d'appeler ML_display_vram au milieu de la phase de dessin pour la ré-appeler ensuite.
- Inutile d'effacer l'écran au début du main vu que se sera fait dans le menu.
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 17/05/2012 22:20 | #


Pierrotll a écrit :

c'est une fonction bloquante

Tu m'apprend quelque chose là. Je pensait que GetKey équivalais au getkey en Basic -> je vire tout mes boucles

pour les ML_***, c'est en construction, donc optimisation 0, ou plutôt 0.1

Ajouté le 17/05/2012 à 22:25 :
j\'ai transféré le g1a sur ma calto, elle largue au même moment. Ca ne vient donc pas du SDK, comme certains bugs au niveau des Sleep.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 02/06/2012 19:10 | #


je suis assez perplexe

j'ai écrit ceci
for( a = 0 ; a < 4 ;a++)
{depart[a] = (rand() % 30)+20;}


et il me donne toujours 28 - 38 -48
sans jamais changer !
je ne voit pas pourquoi

ps:il fait partie d'un "void"

Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Purobaz Hors ligne Membre d'honneur Points: 2690 Défis: 110 Message

Citer : Posté le 02/06/2012 19:16 | #


Change de fonction rand().
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Btl Hors ligne Ancien modérateur Points: 3879 Défis: 107 Message

Citer : Posté le 02/06/2012 19:33 | #


euh c'est à dire?
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ··· 20 ··· 30 ··· 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 183 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