**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 22/06/2014 22:02 | #
Mais ce code, tu ne l'exécutes qu'une fois ? Parce que XPatternA==112, ça arrive pas souvent
Citer : Posté le 22/06/2014 22:05 | #
oui bien sur par contre je me suis trompé, à la place de -4 théoriquement c'est PatternAff[2][1], je modifie .
et en fait XPatternA c'est les abscisse d'un truc qui se déplace vers la droite
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 22/06/2014 22:06 | #
Oui, quand ça commence par un X en général c'est pas aux ordonnées.
Sinon ta boucle, elle se termine quand ?
Citer : Posté le 22/06/2014 22:07 | #
Ben jamais, enfin si quand le perso touche le truc qui se déplace, mais ça bugue dès le premier tour de boucle, enfin, tu sais c'est l'erreur bizarre que j'ai mis en image tout à l'heure
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 22/06/2014 22:09 | #
Tiens, c'est bizarre ça. L'erreur est-elle provoquée par la copie ou l'affichage ?
Citer : Posté le 22/06/2014 22:11 | #
Si je remplace "PatternAff[2][1]" par "(-4)" (la valeur contenu), ça marche
Ajouté le 22/06/2014 à 22:29 :
Bon voila l'initialisation des tableaux (+ celui du sprite dessiné on sait jamais )
{0x60,0x78,0xf8,0xf0,0x30},
{0x30,0xf0,0xf8,0x78,0x60},
{0xd8,0xf8,0x70,0xf8,0xd8}};
const short Pattern1[3][6]={
{10,5,15,5,15,10},
{29,35,35,41,41,47},
{6,0}};
const short Pattern2[3][4]={
{15,10,0,-5},
{23,29,47,52},
{4,-4}};
short PatternAff[3][18];
Ajouté le 22/06/2014 à 22:57 :
Bon, si j'enlève ce bout de code ça marche omg
"for(Z=0;Z!=PatternAff[2][0];Z++)ML_bmp_or(Obstacles[Anim/8],PatternAff[0][Z]+XPatternA,PatternAff[1][Z],5,5);"
Ajouté le 22/06/2014 à 23:07 :
What, j'ai fait quelques tests pour voir ou était le problème, puis j'ai tout remis comme avant et maintenant ça marche
Pourras-tu survivre plus de 20 secondes dans ce fameux tunnel appelé Graviton
Rebondis entre les murs en évitant les piques dans SpikeBird
Pourras-tu éviter de te faire écraser dans FallBlocs (élu Jeu Du Mois)
La version 2048 tactile amélioré au plus haut point : 2048 Delux !
Pars à la recherche des morceaux d'étoile dans Lumyce (élu Jeu Du Mois)
Citer : Posté le 28/06/2014 21:52 | #
Je ne comprend pas du tout pourquoi ça ne marche pas
Même si mon data[13] est inférieure à data[14] au carré, ben la condition est quand même validé, je comprends pas pourquoi Vous voyez l'erreur ?
Citer : Posté le 28/06/2014 21:54 | #
Ben, les parenthèses autour de "data[13] > = data[14]*10" forcent ce calcul à être effectué avant, et le membre et donc remplacé par 0 ou 1.
Si c'est 0, toute la condition est infirmée. Si c'est 1, toute la condition est validée tant que data[14] n'est pas nul.
Citer : Posté le 28/06/2014 21:59 | #
Ne marche pas mieux
Citer : Posté le 28/06/2014 21:59 | #
Juste, le carré de data[14] c'est data[14]*data[14], pas data[14]*data[14]*100...
Citer : Posté le 28/06/2014 22:04 | #
Oui mais bon.
Admettons que data[14] = 3
Je veux calculer un prix, mais je vais pas faire juste 3² vu que ce serait trop peu chère.
Donc je fais ça pour augmenter le prix.
Citer : Posté le 28/06/2014 22:05 | #
Mais alors vérifie que data[13] >= data[14]²*100, et pas juste data[13] >= data[14]²
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
merci a tout le monde pour son soutien
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 !Citer : Posté le 28/06/2014 22:05 | #
Vu que la du coup je me retrouve avec un data[13] négatif puisque mes achats sont validés, je comprends pas pourquoi -_-
Citer : Posté le 28/06/2014 22:06 | #
Mais c'est quoi ce bordel ? Si tu veux augmenter le prix, augmente data[14], sinon le fait que data[13] soit inférieur au carré de data[14] comme tu le dis au début n'a aucun sens...
Citer : Posté le 28/06/2014 22:06 | #
@Dodormeur : Dans tous les cas c'est tout le calcul qui est faux, car même quand mon data[13] est négatif, je peux acheter !!
Citer : Posté le 28/06/2014 22:07 | #
Explique nous un peu plus ton problème, parce que la...
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
merci a tout le monde pour son soutien
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 !Citer : Posté le 28/06/2014 22:07 | #
Non je ne peux pas augmenter data[14] car c'est le Level de l'amélioration qui est dedans,et en fonction du Level comme ça je fait le prix
Ajouté le 28/06/2014 à 22:09 :
Un peu plus, en voici, en voilà :
http://pastebin.com/A3gkVv4i
PS : Ligne 193
Citer : Posté le 29/06/2014 12:03 | #
Tu utilises Bdisp_clearvram alors que tu as monochromelib
Citer : Posté le 29/06/2014 15:56 | #
Astuce : oublier les fonctions graphiques de fxlib pour adopter celles de MonochromeLib. Premier geste que je fais quand j'crée un projet. Le gain de vitesse est juste fantastique...
Citer : Posté le 10/08/2014 13:46 | #
Bon, j'ai un problème avec une fonction qui est censée retourner la largeur en pixels d'un texte donné :
{
short caracteres[]=
{'i',0,-2,'n','K','r',0,1,'m','M','N','Q','w','W',0,2,'!'};
int taille_texte=-1;
char i,j;
for(i=0;texte[i];i++)
{
taille_texte+=4;
for(j=0;caracteres[j]!='!';j++)
{
if(texte[i]==caracteres[j]); //bug ici
{
while(caracteres[j])j++;
j++;
taille_texte+=caracteres[j];
}
if(!caracteres[j])j+=2;
}
}
return taille_texte;
}
Cette fonction parcourt mon texte lettre par lettre et incrémente la variable taille_texte, et la change à nouveau si le caractère ne fait pas 3 pixels de large.
Lorsque j'envoie un texte de test "22W22", il y a un bug à la ligne indiquée, dès le premier caractère. Le programme considère que le premier "2" à la même valeur que le "i" du tableau de caractères, et entre donc dans la condition.
J'ai essayé d'introduire d'autres variables pour connaître les valeurs de texte et de caracteres[j] à ce moment-là, et j'obtiens... (Value not available)
Bref, je suis coincé.
Citer : Posté le 10/08/2014 14:58 | #
Ya une virgule en trop je sais pas si c'est fait exprès a la fin de ta condition.
Sinon combien valent i et j quand ça buggue ?
Et t'es sur que la comparaison d'un short et d'un char est autorisée ?