**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.
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 ?
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.
Citer : Posté le 05/05/2012 13:45 | #
ça peut donc venir d'un pointeur ?
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 !!!
Citer : Posté le 05/05/2012 15:28 | #
C'est un pointeur!
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
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
Citer : Posté le 12/05/2012 22:54 | #
if(nombre == floor(nombre))
ou
if(nombre == (int)nombre)
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: )
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 )
Citer : Posté le 13/05/2012 14:26 | #
Exemple :
nombre = 36.9 (int)nombre = 37
Ben non.
Citer : Posté le 13/05/2012 18:47 | #
ok merci
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
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
Citer : Posté le 14/05/2012 10:22 | #
Floor = Intg en Basic (si vous voulez tester la différence !)
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
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):
Fichier metrosib.c (main)
{
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
{
// 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;
}
Citer : Posté le 17/05/2012 21:55 | #
La fonction menu retourne un char
Escape prison
Bloxorz
Free wheel
QR code
Nombre en or
RayCasting Engine
Mario Party
Zelda
et Planète Casio
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
Citer : Posté le 17/05/2012 22:13 | #
La fonction menu retourne un char
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.
Citer : Posté le 17/05/2012 22:20 | #
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.
Citer : Posté le 02/06/2012 19:10 | #
je suis assez perplexe
j'ai écrit ceci
{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"
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
Citer : Posté le 02/06/2012 19:16 | #
Change de fonction rand().
Escape prison
Bloxorz
Free wheel
QR code
Nombre en or
RayCasting Engine
Mario Party
Zelda
et Planète Casio
Citer : Posté le 02/06/2012 19:33 | #
euh c'est à dire?
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