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 ··· 24, 25, 26, 27, 28, 29, 30 ··· 40 ··· 46, 47, 48 Suivante
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 15/04/2014 18:22 | #


désolé de te rembarrer encore une fois, mais le problème ne viens pas de là, delete(0) ne produit pas d'erreur, et j'ai déjà tenté en préallouant un point inutile a la création de la classe, ça n'a pas marché non plus.
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 Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 15/04/2014 18:32 | #


Mais non, tu ne me rembarres pas.
C'est aussi une occasion pour moi d'en apprendre plus.

Allez, je m'y mets sérieusement, je lis tout comme il faut et je te dis si j'ai une question.

Ajouté le 15/04/2014 à 18:44 :
J'ai une idée.
Point3D *tmp1=[b]new Point3D[nbPoints+nbP][/b];
for(unsigned int i=0;i<nbPoints;++i) tmp1[i]=points[i];
[b]delete(points)[/b];
points=tmp1;


Normalement (je ne sais pas si ça passe différement), les variables allouées avec [] dans new doivent également être utilisées dans delete avec.

ptr = new unsigned short[100];
delete [] ptr;

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 15/04/2014 18:49 | #


omg, si c'est ça, je me pends XD (en tout cas, je me souviens pas avoir lu qu'il fallait ajouter [] aux delete)
je change ça et te dis si ça a corrigé quelque chose

Ajouté le 15/04/2014 à 18:53 :
bon bah, il me reste plus qu'a me pendre... car apparemment, ça vient biens de là... merci en tout cas d'avoir pris le temps de regarder le code (je n'aurais jamais pensé a ça, il va me falloir re-jeter un coup d'oeuil aux cours pour m'assurer que je n'ai pas fait d'autres erreurs dans le même genre, j'ai l'habitude d'utiliser delete comme un free)
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 Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 15/04/2014 18:55 | #


C'est moi qui suis content d'avoir pu t'aider.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 16/04/2014 09:19 | #


Bon, je vois que vous séchez sur mon problème mais c'est pas grave.
J'avais décidé de remettre sa correction à pus tard et de m'occuper d'autre chose. Et devinez quoi ? J'ai modifié mon code pour mettre en place une liste chaînée et maintenant ça marche, comme par miracle, alors que je n'ai touché à rien de ce côté-là
(enfin si, j'ai modifé la fonction Creation_etre en utilisant un pointeur sur une structure, mais de toute façon je vois pas en quoi ça aurait pu résoudre le problème)

Merci quand même à ceux qui ont cherché
Astus08 Hors ligne Membre Points: 1 Défis: 0 Message

Citer : Posté le 17/04/2014 16:26 | #


Bonjour,

Je débute en programmation sur le SDK de casio (je sais programmer en C). Et j'ai quelques soucis.

Comment faire un random ?
Oui j'ai cherché, oui j'ai trouve, non ca ne marche pas. Enfin,en tout cas je ne sais pas utiliser ce qu'il est ecrit.

Bebe-vador a écrit :
srand((unsigned)RTCReadSecond);
[...]
oui d'ailleur il ne faut pas oublier de l'inclure et aussi de mettre ça au début du programme:
RTCStart();


Je ne sais pas comment utiliser ça
Où met-on le nombre maximum et le nombre minimum ?
Et comment utilise t-on cette fonctions car quand je tape :
RTCStart();

J'obtiens une erreur.


J'ai aussi un problème avec mes fonction.
void plateForme()
{
    Print(plateForme1);
    Print(plateForme2);
    Print(plateForme2);
    Print(plateForme3);
}

Quand je tape cette fonction (et celle-ci uniquement) j’obtiens une erreur ((327) : C2500 (E) Illegal token "void").

Autre (et dernière) erreur, qui je pense est liée à celle ci-dessus.
Le code générer contient une partie à ne pas modifier :
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
#pragma section

Or, le compilateur m'indique plusieurs erreurs DANS cette partie.
Lorsque je compile sans ce fameux code, il ne m'indique pas d'erreur.

Donc ma question est : puis-je supprimer ce bout de code ou pas ?

Cordialement
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 17/04/2014 16:36 | #


tout d'abord, pour l'aléatoire va voir ici http://www.planet-casio.com/Fr/programmation/tutoriels.php?id=

pour RTCStart, je vois pas, je sais pas si ça existe en tout cas Simlo n'en parle pas dans sa doc

avec tes fonctions, il me faut le code complet(mais je pense que c'est du au fait que les variables ont un nom similaire)

sinon, le bout de code n'est absolument pas à modifier
met ça à la place(normalement il marche sinon il faudra réinstaller le SDK)
#pragma section _BR_Size
unsigned long BR_Size;
#pragma section


#pragma section _TOP

//****************************************************************************
//  InitializeSystem
//
//  param   :   isAppli   : 1 = Application / 0 = eActivity
//              OptionNum : Option Number (only eActivity)
//
//  retval  :   1 = No error / 0 = Error
//
//****************************************************************************
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}

#pragma section

quelles erreurs te met il?(propane,méthylpropane )
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 17/04/2014 17:14 | #


Selon le tutoriel de Dark Storm, il suffit d'avoir ce code au début du programme principal pour faire de l'aléatoire.
#include <stdlib.h>

static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
static int (*SysCall)(int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;

int RTC_getTicks()
{
  return (*SysCall)(0, 0, 0, 0, 0x3B);
}


Ensuite, au début du programme
srand(RTC_getTicks());

Et pour générer un nombre aléatoire:
rand();

qui retourne un entier entre 0 et 2'147'483'647.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Astus Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 19/04/2014 00:01 | # | Fichier joint


J'ai essayer le random, mais ca ne marche toujours pas
J'ai essayer aussi de renommer la fonction mais ca ne marche pas non plus

Je vous passe donc le fichier en téléchargement.

Ps : Le programme n'est pas fini, je suis entrain de recopier celui qui se trouve sur ma calculatrice.
Dark storm Hors ligne Labélisateur Points: 11634 Défis: 176 Message

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


Astus a écrit :
ça ne marche pas

Qu'est-ce qui ne marche pas : la compilation, l'utilisation de la fonction, les valeurs retournées pas rand() ?
Une question claire et précise entraîne souvent une réponse claire et précise

Le mieux pour nous, c'est de nous fournir la liste des erreurs si la compilation foire
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Astus Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 19/04/2014 00:49 | # | Fichier joint


Eh bien en fait, le compilateur m'indique un erreur sur la ligne :
srand(RTC_getTicks());

Ainsi que sur une des mes fonctions et sur le bout de code à ne pas modifier, voici les erreurs :

(6) : C2500 (E) Illegal token "("
(6) : C2131 (E) No type nor storage class
(6) : C2139 (E) No parameter type
(6) : C2118 (E) Prototype mismatch "srand"
(6) : C2500 (E) Illegal token ")"
(338) : C2500 (E) Illegal token "int"
(338) : C2500 (E) Illegal token "int"
(339) : C2500 (E) Illegal token "{"
(340) : C2305 (E) Void function returns value
(340) : C2225 (E) Undeclared name "max"
(340) : C2225 (E) Undeclared name "min"
(343) : C2500 (E) Illegal token "void"
(344) : C2500 (E) Illegal token "{"
(351) : C2709 (E) Illegal section name declaration
(352) : C2500 (E) Illegal token "unsigned"
(352) : C2225 (E) Undeclared name "BR_Size"
(353) : C2709 (E) Illegal section name declaration
(356) : C2709 (E) Illegal section name declaration
(367) : C2500 (E) Illegal token "int"
(367) : C2500 (E) Illegal token "int"
(368) : C2500 (E) Illegal token "{"
(369) : C2305 (E) Void function returns value
(369) : C2225 (E) Undeclared name "isAppli"
(369) : C2225 (E) Undeclared name "OptionNum"
(372) : C2709 (E) Illegal section name declaration
(372) : C2500 (E) Illegal token ""

Les code utilisé est le même que dans le fichier texte joint à ce message.

Je réinstallerais quand même le SDK demain, trop fatigué pour le faire ce soir
Smashmaster Hors ligne Ancien modérateur Points: 4561 Défis: 253 Message

Citer : Posté le 19/04/2014 02:38 | #


Salut, tu dois mettre srand (RTC_getTicks()); dans ton main ;).

Ajouté le 19/04/2014 à 02:40 :
int AddIn_main(int isAppli, unsigned short OptionNum)
{
  srand (RTC_getTicks ());
...
...
}

Astus Hors ligne Membre Points: 7 Défis: 0 Message

Citer : Posté le 19/04/2014 23:58 | #


Merci beaucoup, cela ne m'indique plus d'erreur au niveau du random !

En revanche, le compilateur m'indique toujours des erreurs au niveau des troisième et quatrième fonctions.

J'ai les fonctions :
main (aucune erreur)
jeu (aucune erreur)
structure ((349) : C2709 (E) Illegal section name declaration)
random ((338) : C2305 (E) Void function returns value (alors que j'ai bien mis int)
(338) : C2225 (E) Undeclared name "max"
(338) : C2225 (E) Undeclared name "min"
(341) : C2500 (E) Illegal token "void"

La réinstallation du SDK n'a rien changer au problème
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 20/04/2014 00:23 | #


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?
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 26/04/2014 11:01 | #


J'ai un problème avec les caractères spéciaux, je voudrais afficher la flèche qui va vers le haut (code: 0xE692) avec la fonction PrintXY:
    unsigned char arrowT[2]={0xE692,0};
    if(pos>0)PrintXY(123,8,arrowT,0);
Mais je n'obtient rien Des solutions? La doc de casio n'explique pas comment faire

Ajouté le 26/04/2014 à 11:03 :
Non, en fait c'est bon, j'avais mal lu, le code c'est
unsigned char arrowT[3]={0xE6,0x92,0};
    if(pos>0)PrintXY(123,8,arrowT,0);
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 26/04/2014 11:53 | #


Tu te casses la tête.
Il y a en C un moyen d'insérer n'importe quel octet dans une chaîne de caractères à l'aide d'une séquence d'échappement. Il suffit de mettre un '\' suivi du code en octal du caractère, que je te conseille de toujours écrire sur 3 caractères.
Par exemple, en octal, 0xE6 donne 346 et 0x92 donne 222. Donc simplement:

PrintXY(1,1,(const unsigned char *)"\346\222 Cliquez ici !",0);

C'est simple, standard et ça fonctionne avec n'importe quel caractères, sans tableau externe ni fonction, et surtout ça se met à n'importe quel endroit de n'importe quelle chaîne de caractères.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 26/04/2014 11:57 | #


Ah, merci je ne savais pas... En tout cas ça marche
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 26/04/2014 12:13 | #


Ce moment quand tu découvre que le SDK ne sait pas utiliser des entiers de 64 bits
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

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


Oui et non. Les processeurs SH4 sont équipés d'un coprocesseur arithmétique de 128 bits et calculent en flottants sur 64.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 26/04/2014 12:38 | #


En tout cas, quand j'essaye de déclarer un unsigned long long, il me met un chouette erreur du style (0) : C4000 (-) Internal error: DWARF2_make_tag_base_int_type:bad base type
Pokemon !!!!!! => pokemon stadium/battle

mes meilleurs jeux
Cliquer pour enrouler
un jeu avec des niveaux de gris mais compatible SH4 (mais en monochrome pour les SH4) => bomberman
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2

projets
Cliquer pour enrouler

pokemon
Cliquer pour enrouler



encodage des données de combat (sprite, attaques et nom)
   100%

systeme de combat
   100%

encodage des données de pokemon (niveau d'apprentisage et evolution)
   100%


moteur de la carte
   50%

level design
   1%

finition de pokemon jade
   42%

merci a tout le monde pour son soutien


projets que je soutiens
Cliquer pour enrouler
minecraft de limachi
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm (dont je connais le nom, mais pas vous ) Arcuz !
Lephenixnoir Hors ligne Administrateur Points: 24228 Défis: 170 Message

Citer : Posté le 26/04/2014 13:21 | #


Un unsigned long long ? Ce ne serait pas un peu comme déclaration ?
Puisque le long est déjà long ?
Ou alors tu te débrouilles avec des pointeurs, ou tu est foutu si tu veux utiliser des opérations arithmétiques, puisque la taille des registres du SH4 est de 32 bits. Inutile donc d'aller voir celle du SH3.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 24, 25, 26, 27, 28, 29, 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 93 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