Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

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 ··· 29, 30, 31, 32, 33, 34, 35 ··· 40 ··· 46, 47, 48 Suivante
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 03/05/2014 11:39 | #


Pour aller vite.

http://hpics.li/4c1b760
http://hpics.li/9e74250

Je pense que tu sauras te débrouiller avec ça, mais si tu as besoin d'un coup de main, demande-moi.
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 03/05/2014 11:40 | #


J'ai finalement trouvé la doc, je regarde ça, merci

Ajouté le 03/05/2014 à 12:05 :
C'est pas mal ces syscall mais je perds l'interface précédente à moins de tout refaire car je ne peux pas définir le curseur au pixel près
Du coup je suis en train de repenser à l'interface même si je préfère l'ancienne.
Astus Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 03/05/2014 12:22 | # | Fichier joint


Bonjour, je reposte à propos de mon problème (page 57)

Désolé du retard, je profite des vacances

Donc :

Dodormeur a écrit :
Vérifie que ta fonction doit bien retourner un int, sinon c'est qu'il y a un problème dans la déclaration de ta structure. A tu bien mis un ; après sa déclaration?


Oui mes fonction int retourne un int, et mes fonctions void ne retournent rien.
Comme en c j'ai inclue un header dans lequel il y a le prototype des fonctions utilisés.

EDIT : Voici en fichier joint le code du programme sous forme de .txt. Si vous voulez le .h, il suffit de le demander, mais il n'y a pas grand chose dedans.
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 03/05/2014 12:24 | #


Tu peux remettre ton code s'il te plaît ? On s'y pert avec tous ces messages.


aliegeois Invité

Citer : Posté le 14/05/2014 21:16 | #


Bonjour à tous,
je vous expose mon problème : je veux modifier un tableau dans une fonction et j'ai le code suivant (entre autres):
void genererMinesTerrain(int* jeu);  // j(ai essayé en mettant (int jeu[]) mais ça ne marche pas
void genererMinesTerrain(int* jeu)
{
    int i, j;

    for (i = 1; i <= 10; i++)
    {
        do  // permet de générer 10 nombres compris entre 0 et 127 strictement différents
        {
            j = floor(128 * rand());
        } while (jeu[j] == 10);
        jeu[j] = 10;
    }
}

int AddIn_main(int isAppli, unsigned short OptionNum)
{
    int jeu[128];  // même si j'initialise tout à 0, ça ne change rien
    genererMinesTerrain(jeu);
}


Le compilateur ne m'anonce pas d'erreur mais lorsque je teste le programme j'ai un message qui vient du sdk qui me dit :
"Execution has stopped due to an error!
Nonexisting memory by data read access at 88A9F598"

Je vois bien qu'il y a un problème de mémoire mais je ne vois pas d'où il peut venir.
Merci de votre aide.
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 14/05/2014 21:25 | #


D'abord, est-ce que tu as bien inclus math.h pour utiliser floor() ? Enfin, puisque j est un int, la calculatrice tronque automatiquement le flottant, donc tu peux l'enlever.

Après, peut-être que c'est ton jeu qui foire.
Tu as essayé de l'allouer dynamiquement ?


aliegeois Invité

Citer : Posté le 14/05/2014 21:31 | #


Oui j'ai fait toutes les inclusions, et c'est vrai que floor() est inutile merci.
Pour allouer dynamiquement, c'est bien avec malloc() ?
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 14/05/2014 21:33 | #


Ou plus simplement, avec calloc() qui initialise en même temps.
jeu = calloc(128,sizeof(int));

dans ton cas.


aliegeois Invité

Citer : Posté le 14/05/2014 21:35 | #


Daccord, et j'utilise toujours free() pour libérer ?
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 14/05/2014 21:36 | #


La libération est indentique quelle que soit la fonction d'allocation.
Ne jamais oublier de libérer !


aliegeois Invité

Citer : Posté le 14/05/2014 21:42 | #


Je viens d'essayer, voici le code :

void genererMinesTerrain(int* jeu);
void genererMinesTerrain(int* jeu)
{
    int i, j;

    for (i = 1; i <= 10; i++)
    {
        do
        {
            j = 128 * rand();
        } while (jeu[j] == 10);
        jeu[j] = 10;
    }
}

int AddIn_main(int isAppli, unsigned short OptionNum)
{
    int* jeu = NULL;
    jeu = malloc(128 * sizeof(int));
    genererMinesTerrain(jeu);
}


Et ça me donne la même erreur...
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 14/05/2014 21:52 | #


Mais non !
128*rand()

rand est un entier entre +- 2147483647 !

Mets-moi
rand()%128

et tu peux récupérer le code d'origine.


aliegeois Invité

Citer : Posté le 14/05/2014 21:57 | #


MERCI !!
Quel c** j'ai confondu avec une autre fonction qui génère entre 0 et 1...
Ca marche enfin
Encore merci pour la rapidité des réponses je me relirait à 2 fois la prochaine fois avant de poster un message
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Lephenixnoir Hors ligne Administrateur Points: 22763 Défis: 149 Message

Citer : Posté le 14/05/2014 21:59 | #


Oui, moi aussi j'ai confondu.
D'ailleurs, je ne sais pas comment j'ai fait vu que cette fonction renvoit un int.

Enfin bref, si jamais tu as une autre question, n'hésite pas à nous la poser.
Aliegeois Hors ligne Membre Points: 75 Défis: 0 Message

Citer : Posté le 15/05/2014 20:16 | #


Rebonjour (au passage je me suis créé un compte )
J'ai aujourd'hui un problème d'une nature tout à fait différente, je voudrai stocker des données sur la calto, comme une liste de scores, ou la progression d'un joueur. J'ai cherché sur Google mais je n'ai rien trouvé qui pourrai m'aider (à mon niveau du moins). J'ai en effet trouvé quelques bribes d'information, comme le fait que 0xB4010000 correspond à la lecture/écriture de données mais ça ne représente rien pour moi...
Merci de votre aide.
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 15/05/2014 20:23 | #


Utilise les fonctions BFile

Ajouté le 15/05/2014 à 20:24 :
Ou alors Memory (quelque part ici : http://www.planet-casio.com/Fr/logiciels/voir_un_logiciel_casio.php?showid=86 )
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Aliegeois Hors ligne Membre Points: 75 Défis: 0 Message

Citer : Posté le 15/05/2014 20:43 | #


Merci pour les liens, MonochromeLib m(a en effet l'ai plutôt utilse, néanmoins je ne comprend pas comment me servir de Bfile_OpenFile, un petit exemple m'aiderait beaucoup.
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 15/05/2014 21:00 | #


Je te conseille d'utiliser Memory : http://www.planet-casio.com/Fr/logiciels/voir_un_logiciel_casio.php?logiciel=SDK_G85_-_Memory_and_Files_access_Snippets&showid=113 (j'attendais que tu clique à gauche sur le lien que je t'avais donné )
Dans la documentation fournie avec, tu devrais trouver des exemples
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Aliegeois Hors ligne Membre Points: 75 Défis: 0 Message

Citer : Posté le 17/05/2014 22:02 | #


Rebonjour,
J'ai encore un problème (décidément ), avec un tableau à 2 dimensions :
#include "fxlib.h"

void maFonction(int jeu[]);  // même avec (int* jeu) ça ne marche pas

void maFonction(int jeu[])
{
    int i, x, y;

    for (i = 1; i <= 10; i++)
    {
        do
        {
            x = rand() % 16;
            y = rand() % 8;
        } while (jeu[x][y] == 9);
        jeu[x][y] = 9;
    }
}

int AddIn_main(int isAppli, unsigned short OptionNum)
{
    int jeu[18][10] = {{0}};
    
    maFonction(jeu);
    
    return 1;
}


Et j'ai une belle erreur : "Illegal array reference" à la ligne "} while (jeu[x][y] == 9);"

Merci de me dire si je n'ai pas oublié quelque chose avec les pointeurs ou autre
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 17/05/2014 22:08 | #


C'est normal, tu passes en paramètre un tableau à une dimension, et ensuite tu l'utilise comme un tableau bidimensionnel
Aliegeois Hors ligne Membre Points: 75 Défis: 0 Message

Citer : Posté le 17/05/2014 22:11 | #


Je l'ai mis en commentaire, j'ai essayé avec (int* jeu), et si j'essaye avec (int jeu[][]) ça me donne : "Missing array size"
Calculatrice : CASIO GRAPH 95
Regardez mon lecteur de vidéo !
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 29, 30, 31, 32, 33, 34, 35 ··· 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 v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 47 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