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 ··· 25, 26, 27, 28, 29, 30, 31 ··· 40 ··· 46, 47, 48 Suivante
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 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.
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

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


Si je me souviens bien, le long long est forcément de 64 bits, alors que le long est au minimum de 32 bits (cela dépend des compilo)
Bon de toute façon c'est pas grave, au pire il y aura un peu moins de précision
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 En ligne Administrateur Points: 22772 Défis: 149 Message

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


Seulement le type long n'est qu'un unsigned int.
Pour autant que je sache, long est un nom de type et non pas un "statut" comme unsigned, const, register ou static.
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 26/04/2014 14:37 | #


Non, sur le SDK casio le long = int (et pas unsigned), mais sur d'autre il y a une différence, l'int est plus petit alors que le long reste de 32 bits. par contre, le long long est bel et bien de 64 bits. (faut bien se dire que normalement on devrait écrire long int et pas long, mais que le compilo accepte quand même)
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 En ligne Administrateur Points: 22772 Défis: 149 Message

Citer : Posté le 26/04/2014 14:52 | #


Ce que je ne comprends pas, c'est qu'une déclaration de variables se fait avec deux types d'identifieurs, un ou plusieurs "statuts" et un type de données.
Si tu déclares un long long, soit il y a deux types, ce qui est interdit (c'est comme si je te mettais int int), soit aucun. Alors long est-il un type ou un statut ?
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

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


@lephénixnoir ça aurait pas un rapport avec ça ?
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

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


Si, merci. Mais pour s'en servir il suffit d'écrire
long l = 4294967296ULL;

Je ne vois pas pourquoi vous voulez y mettre deux long, alors que seul le type est nécessaire.
Drac0300 Hors ligne Membre Points: 839 Défis: 39 Message

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


C'est sûrement une convention.
Dans Z/1Z, 42==666
Coïncidence ? Je ne pense pas.
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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


Petit problème, j'ai créé une fonction qui prend en argument un char contenant le nom d'un fichier, ensuite j'aimerai mettre ce nom à la fin d'un autre chaîne pour créer le fichier mais ça ne marche pas:
void createFile(char *name){
    int create=-1,i;
    int handle;
    int size=15+strlen(name);
    char adresse[size]="\\\\fls0\\COF\\";
    for (i = 0; i < strlen(name); ++i)
    {
            adresse[i+15]=name[i];
    }
    create=memory_createfile(name,4);
}
Et le compilateur:
SDK a écrit :
Illegal array size
Too many initializers
Des idées?
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

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


#include <stdio.h>
#include <string.h>

void createFile(char *name)
{
  char adresse[strlen(name)+15];
  sprintf(adr,"\\\\fls0\\%s",name);

  memory_createfile(adresse,4);
}

Bien plus simple.
Pourquoi est-ce que personne ne connaît les fonctions de formatage de la bibliothèque standard ?

Je pense que ton erreur venait du fait que tu aies oublié l'inclusion du header string.h ?
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 26/04/2014 18:02 | #


Par contre char adresse[strlen(name)+15]; ne passe pas: "Illegal array size" mais sinon ça a l'air de marcher

Ajouté le 26/04/2014 à 18:06 :
Du coup j'ai mis char adresse[27];
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

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


Ah oui, c'est parce qu'il veut absolument des constantes. Peut-être qu'il les remplace à la compilation ?
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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


J'ai essayé de caster en const: char adresse[(const int)strlen(name)+15]; mais il n'est veut pas
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

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


D'abord il faudrait mettre des vraies parenthèses.
char adresse[(const int)(strlen(name)+15)]

Parce que là il n'y a que le strlen(name) qui est casté en constant.
Mais de toute manière, je ne pense pas que ça fonctionne, le compilateur est très tatillon sur les constantes.
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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


Effectivement ça ne marche pas, enfin bon, avec char adresse[27]; ça marche donc je n'y touche pas.

Ajouté le 26/04/2014 à 19:41 :
Je viens de me rendre compte que je pouvais faire char *adresse=malloc(sizeof(char)*(strlen(name)+15)) en tout cas ici ça ne m'intéresse pas mais ça va me servir pour autre chose, pour avoir une chaîne de caractères de la taille voulue, j'ai fais char *chaine=malloc(max*sizeof(char)); et ça a l'air de passer (dites moi si je fais une erreur)
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

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


Non, pas d'erreur.
En revanche, n'oublie pas le free à la fin de la fonction (je le fais souvent):
void fonction()
{
  char *adresse = malloc(strlen(name)+15);
  ...
  free(adresse);
}

Au fait, sizeof(char)=1 tout le temps, tu ne peux pas te tromper, et ça t'évite des appels à call et ret inutiles.
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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


Ok, merci. Par contre si je fais un return d'une variable que j'ai alloué dynamiquement, je fais comment pour le free?
Smashmaster Hors ligne Ancien modérateur Points: 4561 Défis: 253 Message

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


Tu le free dans la fonction parent.
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

Citer : Posté le 26/04/2014 20:43 | #


Ah ok, c'est à dire:
int main(){
   int a;
   a=test();
   free(a);
}
int test(){
   int b=malloc(sizeof(int));
   return b;
}
?
Lephenixnoir En ligne Administrateur Points: 22772 Défis: 149 Message

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


Oui, c'est ça.
Un pointeur alloué dynamiquement "traîne" son allocation jusqu'à ce qu'il soit libéré.
Alphacreator Hors ligne Membre Points: 1464 Défis: 43 Message

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


Ok, merci
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 25, 26, 27, 28, 29, 30, 31 ··· 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 113 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