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 ··· 30, 31, 32, 33, 34, 35, 36 ··· 40 ··· 46, 47, 48 Suivante
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 !
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

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


ben en fait, il ne connais pas la taille en x de ton tableau, donc il ne peut pas y accéder

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:14 | #


Effectivement c'était ça, merci
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:23 | #


Non, car si tu écris ça tu ne donnes pas la taille du tableau mais la valeur de la dernière case.
Tu dois mettre "tableau", tout simplement, car en fait je me suis trompé : ce n'est même pas un tableau à une dimension que tu envoies, mais une valeur.
Le prototype de ta fonction devrait être comme ça :
void maFonction (int **jeu, char taille_x, char taille_y);


Édit : zut, apparament tu as modifié ton message
Aliegeois Hors ligne Membre Points: 75 Défis: 0 Message

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


Je ne vois pas comment le compilateur peut savoir la taille du tableau que j'envoi avec des "char taille_x", comment sait-il à quoi correspond cette variable ? Et puis la taille de mon tableau n'est pas vouée à changer alors il ne devrait pas y avoir de problème.
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:43 | #


Il ne peut pas, c'est à toi d'adapter ta fonction pour qu'elle puisse gérer toutes les tailles possibles avec ces paramètres (si j'ai bien compris ce dont Dark Storm voulait parler)
Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

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


Bonjour,

Quelqu'un a t'il déjà eu le problème que me SDK interprète PrintMini en le mettant en Y,X au lieu de X,Y sur ecran ?
1337
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 18/05/2014 09:45 | #


Non, c'est possible?
Dark storm Hors ligne Labélisateur Points: 11571 Défis: 176 Message

Citer : Posté le 18/05/2014 12:04 | #


Bon, petit cours sur les tableaux en 2D

Lorsque vous déclarez ceci (voir-ci dessous), le compilo alloue une zone de mémoire de 5*8 = 40 octets succincts (je travaille sur des char, mais pour les int c'est pareil en 4 fois plus grand). Le code de la deuxième ligne effectue exactement la même chose.
char monTableau[5][8]; // création d'un "tableau" à 5 lignes et 8 colonnes
char monTableau2[40]; //

Toutefois, lorsque vous voulez accéder à une case en particulier, vous pouvez dans le premier cas utiliser les doubles crochets, et dans le deuxième cas faire comme si on avait des lignes :
monTableau[ligne][colonne] = 0;
monTableau2[ligne*8 + colonne] = 0; // *8 car il y a 8 colonnes par lignes

Jusque là, il ne devrait pas y avoir de problèmes

On en arrive à la notion de fonction qui doit avoir comme paramètre un pointeur sur un tableau : si on le passe normalement, le compilateur ne sais pas combien il y a de colonnes dans le tableau, si c'est un pointeur sur un tableau 2D. On est donc obligé de passer "manuellement" les arguments, par exemple pour modifier une valeur dans un tableau (ici on va faire des tables de multiplication :
void main()
{
     int monTableau[5][8]; // déclaration d'un tableau de 5 lignes et 8 colonnes

     initialiser_tableau(monTableau, 5, 8);
}

void initialiserTableau(int* tableau, int lignes, int colonnes)
{
    int i, j;

    for(i=0; i<lignes; i++)
    {
        for(j=0; j<colonnes; j++)
        {
            tableau[ i * colonnes + j ] = i*j; // on accède comme pour un tableau 1D
        }
    }
}


Sinon, vous pouvez utiliser le memcpy(), si la taille de votre tableau est fixe :
void main()
{
     int monTableau[5][8]; // déclaration d'un tableau de 5 lignes et 8 colonnes

     initialiser_tableau(monTableau);
}

void initialiserTableau(int* tableau)
{
    int i, j;
    int tableau_tmp[5][8];

    for(i=0; i<5; i++)
    {
        for(j=0; j<8; j++)
        {
            tableau_tmp[ i ][ j ] = i*j; // on accède comme pour un tableau 2D, le compilo connait sa taille
        }
    }

    memcpy(tableau, tableau_tmp, 8 * 5 * sizeof(int)); // on copie le tableau temporaire dans le tableau passé en argument
}


Une autre solution consiste à déclarer en global le tableau, mais ça peut vite devenir problématique, au niveau du nom des variables et de la vitesse d'execution.

En tout cas, pour plus d'infos, consultez le Site du Zéro
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Astus Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 02/06/2014 15:22 | #


Bonjour,

Je dois vous posez une question stupide mais nécessaire :

Comment afficher sur la calculatrice une variable en Printmini() ?

En C on utilise %d mais là ça marche pas
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 02/06/2014 15:45 | #


Justement si.
Plutôt que d'utiliser printf(), on déclare une chaîne de caractères et on écrit dedans, avec sprintf() :

#include <stdio.h>

char ch[20];
int x = 2934;
sprintf(ch,"x = %d",x);
PrintMini(1,1,(cont unsigned char *)ch,0);

Il y a juste un paramètre avant le format, la chaîne dans laquelle on veut écrire.
Astus Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 02/06/2014 21:05 | #


Si j'ai bien compris là tu crées une chaine de caractère, tu initialises un nombre, puis tu donnes à la chaine ch la "valeur" x = %d (qui est x) avant d'écrire le tout ?

Cela donne, si j'ai bien tout compris : "2934 = 2934"

J'essaye et si ça marche merci beaucoup
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 02/06/2014 21:49 | #


Non, on aura "x = 2934". En fait, le '%' indique qu'il y a quelque chose à remplacer et le 'd' que c'est un entier. S'il n'y a pas de '%', le texte est écrit tel quel.
Tu peux facilement trouver sur Internet comment ça fonctionne, en cherchant pour printf() (c'est pareil, juste le premier paramètre et le 's' ).
Je voudrais pas te dire "RTFM", mais c'est très long à expliquer.
Astus Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 03/06/2014 06:45 | #


Oui ok, j'avais pas vu sur le coup le premier x n'était pas remplacer

En tout cas merci beaucoup à toi

Xavier59 Hors ligne Membre de CreativeCalc Points: 1337 Défis: 12 Message

Citer : Posté le 03/06/2014 22:01 | #


http://pastebin.com/LYUcpX7R
Bonjour,

L'erreur se situe autour de la ligne 902
Pas de problème, j'ai build has successfull, seulement quand je demarre le programme etc, des que j'arrive sur case 0, l'add in s'arrete :/ Je ne sais pas pourquoi, je ne sais pas comment.
Surtout que tant que j'avais pas ce case 0 et que ma variable continent était définit au début, tout marchais parfaitement..

Si vous ne comprenais pas ce que je veux dire .... je comprends parfaitement
1337
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 03/06/2014 22:09 | #


Il y a un truc qui saute aux yeux bien que surprenant... pourquoi est-ce que tu as toutes ces images vides ?

Ajouté le 03/06/2014 à 22:25 :
C'est bizarre... je ne vois qu'une chose, c'est que le volume de locales que tu as dépasse 8192 octets... essaie de réduire la taille de tes images pour les placer autrement qu'en (0;0). Là, il y a plein de blanc sur les bords
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 04/06/2014 14:33 | #


as tu mis un breakpoint à cette endroit là?
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 07/06/2014 21:08 | #


J'ai un gros problème avec le S.D.K., mais dans le genre bizarre...
En fait il n'est plus capable d'effectuer de compilation complète : je clique sur Build, il commence à compiler, et il s'arrête en plein milieu (ou au début, ça dépend...).
Je n'ai donc plus qu'à cliquer sur "Stop Building", auquel cas l'U.C. utilisée grimpe à 100% et l'ordinateur se met à ramer monstrueusement. Et même lorsque je provoque l'extinction du programme, l'U.C. utilisée reste de 100% tant que je n'ai pas fermé ma session
J'ai réinstallé le S.D.K., sans succès...et je ne sais plus quoi faire. Qu'avez-vous à me proposer ?
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 07/06/2014 21:09 | #


Vérifier que ton disque C ne soit pas saturé.
J'ai eu ce problème pendant très longtemps, un peu de nettoyage et ce fut réglé.
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 07/06/2014 21:11 | #


J'ai environ 50% d'espace libre sur le disque C:, donc ça ne doit pas être la source du problème.
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 07/06/2014 21:22 | #


Avec le gestionnaire des tâches, tu verras que la compilation continue lorsque tu fermes le SDK, c'est indépendant.
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 30, 31, 32, 33, 34, 35, 36 ··· 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 100 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