#include "fxlib.h"
#include "stdio.h"
unsigned int key;
int caractere, caractere2;
char chaine[21];
char ident[21];
char domaine[30];
char mdp[30];
char destinataire[40];
char sujet[30];
char corps[50];
int AddIn_main(int isAppli, unsigned short OptionNum){
Bdisp_AllClr_DDVRAM();
demmarage();
identif();
return 1;
}
demmarage(){
int key;
Bdisp_AllClr_DDVRAM();
PrintMini(80,58,"Version 1.0",0);
Bdisp_DrawLineVRAM(10,10,10,50);
Bdisp_DrawLineVRAM(10,50,117,50);
Bdisp_DrawLineVRAM(117,50,117,10);
Bdisp_DrawLineVRAM(10,10,117,10);
Bdisp_DrawLineVRAM(10,10,63,25);
Bdisp_DrawLineVRAM(117,10,63,25);
locate(7,5);
Print("Messagerie");
do{
GetKey(&key);
} while(key != 30004);
Bdisp_AllClr_DDVRAM();
}
identif(){
Bdisp_AllClr_DDVRAM();
locate(1,1);
Print("Identifiant:");
locate(1,2);
Print("+------------------+");
locate(1,3);
Print("| |");
locate(1,4);
Print("+------------------+");
remplichaine();
caractere2=0;
do{
caractere2++;
ident[caractere2] = chaine[caractere2];
} while(caractere2+1 != caractere);
========================== > ICI < ========
locate(2,3);
Print(ident);
do{
GetKey(&key);
} while(key != 30004);
}
remplichaine(){
caractere=0;
do{
caractere++;
======================= > ET ICI < ========
locate(2,3);
Print(chaine);
GetKey(&key);
//==========Conversion==========
if (key==48)key= 71;
if (key==46)key= 61;
if (key==15)key= 51;
if (key==135)key= 41;
if (key==30004)key= 31;
if (key==49)key= 72;
if (key==50)key= 62;
if (key==51)key= 52;
if (key==137)key= 42;
if (key==153)key= 32;
if (key==52)key= 73;
if (key==53)key= 63;
if (key==54)key= 53;
if (key==169)key= 43;
if (key==185)key= 33;
if (key==55)key= 74;
if (key==56)key= 64;
if (key==57)key= 54;
if (key==30025)key= 44;
if (key==30015)key= 34;
if (key==187)key= 75;
if (key==30046)key= 65;
if (key==40)key= 55;
if (key==41)key= 45;
if (key==44)key= 35;
if (key==14)key= 25;
if (key==30001)key= 76;
if (key==149)key= 66;
if (key==133)key= 56;
if (key==129)key= 46;
if (key==130)key= 36;
if (key==131)key= 26;
if (key==30007)key= 77;
if (key==205)key= 67;
if (key==168)key= 57;
if (key==30002)key= 47;
if (key==30023)key= 37;
if (key==30021)key= 27;
if (key==30006)key= 78;
if (key==30008)key= 68;
if (key==30016)key= 58;
if (key==30020)key= 38;
if (key==30018)key= 28;
if (key==30009)key= 79;
if (key==30010)key= 69;
if (key==30011)key= 59;
if (key==30012)key= 49;
if (key==30013)key= 39;
if (key==30014)key= 29;
//==============================
if(key==31)caractere=19;
if(key==76)chaine[caractere]='a';
if(key==66)chaine[caractere]='b';
if(key==56)chaine[caractere]='c';
if(key==46)chaine[caractere]='d';
if(key==36)chaine[caractere]='e';
if(key==26)chaine[caractere]='f';
if(key==75)chaine[caractere]='g';
if(key==65)chaine[caractere]='h';
if(key==55)chaine[caractere]='i';
if(key==45)chaine[caractere]='j';
if(key==35)chaine[caractere]='k';
if(key==25)chaine[caractere]='l';
if(key==74)chaine[caractere]='m';
if(key==64)chaine[caractere]='n';
if(key==54)chaine[caractere]='o';
if(key==73)chaine[caractere]='p';
if(key==63)chaine[caractere]='q';
if(key==53)chaine[caractere]='r';
if(key==43)chaine[caractere]='s';
if(key==33)chaine[caractere]='t';
if(key==72)chaine[caractere]='u';
if(key==62)chaine[caractere]='v';
if(key==52)chaine[caractere]='w';
if(key==42)chaine[caractere]='x';
if(key==32)chaine[caractere]='y';
if(key==71)chaine[caractere]='z';
if(key==61)chaine[caractere]='.';
if(key==57)chaine[caractere]='@';
} while(caractere!=19);
if(key==31)chaine[caractere]='\0';
if(key!=31)chaine[caractere+1]='\0';
}
#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
Citer : Posté le 27/03/2014 06:28 | #
Mon code était beaucoup plus optimisé
Je te déconseille de faire ça, parce que ton nombre de coup va tomber à 0
int nbCoups = log (Coups);
for(Z=0;Z<nbCoups+1;Z++)
{
ML_bmp_and(Chiffres[Coups%10],92+(nbCoups-Z)*6,11,7,7);
ML_bmp_and(Chiffres[Coups%10],92+(nbCoups-Z)*6,11,7,7);
Coups /= 10;
}
Là, tu continues de diviser Coups par 10, mais où le sauvegardes-tu ?
Citer : Posté le 28/03/2014 09:53 | #
Hey Lephénix, mon code centre les chiffres
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/03/2014 19:12 | #
Là, tu continues de diviser Coups par 10, mais où le sauvegardes-tu ?
Si ce bout de code se trouve dans un fonction ce n'est pas grave
Si un moment donné Coup vaut 0, alors on sort de la boucle, car dans ce cas Z=nombreCoup.
Citer : Posté le 28/03/2014 20:17 | #
Hey LePhenixNoir mon code centre les chiffres
Citer : Posté le 30/03/2014 13:01 | #
ouai...
Dans tous les cas je suis content d'avoir trouvé un code que je comprend , les votre je ne les comprenais pas trop ...
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 30/03/2014 14:15 | #
int z;
for(z=92;n;z-=6)
{
ML_mbp(Chiffres[n%10],z,11,7,7);
n /= 10;
}
Je m'explique.
À chaque instant, n%10 te donne le dernier chiffre.
Donc tu affiches Chiffres[n%10].
Ensuite tu divises n par 10. Comme n est un int, la partie décimale (qui représente le chiffre que tu viens d'afficher) disparaît. Du coup, tous tes chiffres sont "décalés vers la droite" et n%10 représente le chiffre suivant (10 fois plus grand).
Du coup, on boucle "tant que n", c.a.d "tant que n différent de 0", puisqu'une fois le dernier chiffre atteint, la division par 10 fait tomber à 0.
Pour l'affichage, on part de x=92 (le maximum diminué de la taille d'un chiffre) et on le diminue de 6 à chaque chiffre. Du coup, on évite les chiffres qui se superposent (merci Dodormeur).
Ce code semble plus optimisé puisqu'il évite des appels à log() et à pow(), qui ne sont pas des fonctions rapides.
Pour centrer le nombre
On centre en 80. (int)(log(n)) correspond au nombre de chiffres, on le multiplie donc par 3 pour obtenir la longueur de la moitié du texte (puisqu'un chiffre fait 6 pixels). Dernière subtilité, le chiffre est écrit à droite de la coordonnée, donc on décale de 3px (la moitié de sa largeur) pour le centrer.
Citer : Posté le 30/03/2014 14:43 | #
Ok maintenant j'ai tout compris et je vais modifier ma fonction . Merci.
Ajouté le 30/03/2014 à 16:18 :
Edit : pour centre c'est plutôt
Enfin bref, ce sujet est clôt, car cela fonctionne
Ajouté le 30/03/2014 à 16:58 :
Bon, il me reste une dernière étape avant de finir le moteur du jeu, celle de l'apparition aléatoire .
J'ai lu le tuto de Dark Storm mais j'ai pas trop compris ou je dois mettre les bouts de code (ceux au début du tuto) ...
Mais j'utilise aussi la librairie "usefull" et il y a une fonction plus pratique il me semble ("time_getTicks()"), mais je ne sais pas trop l'utiliser .
En gros je voudrais que mon code me génère 2 chiffres au hasard entre 0 et 3 (pour l'apparition aléatoire d'un chiffre sur une grille 4*4).
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 30/03/2014 17:02 | #
Citer : Posté le 30/03/2014 17:09 | #
Utilise la fonction srand(time_getTicks()); au début de la fonction main.
Citer : Posté le 30/03/2014 17:11 | #
Hum le "srand" je le met au début ? c'est ce que j'ai fais et ça fonctionne pas ça fait une erreur de compilation...
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 30/03/2014 17:12 | #
Tu as bien inclus stdlib.h et les syscalls ?
Citer : Posté le 30/03/2014 17:14 | #
Non c'est bon, je l'ai mis un peu plus loin et ça fonctionne parfaitement .
Encore merci Lephénixnoir .
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 30/03/2014 17:53 | #
http://www.planet-casio.com/Fr/forums/topic12685-2-[Tutoriel],L,aleatoire,en,C,C++.html
Ça génère pas entre 0 et 2147483647, mais plutôt entre 0 et 4
Citer : Posté le 30/03/2014 17:56 | #
x = rand()%4; génère effectivement un nombre entre 0 et 3 (le 4 n'est pas inclus), mais ce que le phénix a voulu dire, c'est que rand(); tout seul retourne un nombre entre 0 et 2147483647
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 30/03/2014 18:26 | #
J'ai ma variable Score, c'est un int, mais lorsque le score dépasse 255, elle reviens à 0
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 30/03/2014 18:29 | #
Tu es sur de ne pas l'avoir déclaré comme un unsigned char? Ou, lors de la fonction d'affichage, copiée dans un unsigned char?
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 30/03/2014 18:30 | #
Mais bien sur je le copie dans un char pour ma fonction .
Merci Dodormeur
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 30/03/2014 18:32 | #
De rien
En général, mis à part de grands tableaux, utilise toujours des int, c'est plus lisible et sécurisé, et ce n'est pas pour quelques octet de RAM que cela va faire une grand différence
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 30/03/2014 18:35 | #
J'utilise des char pour les petit nombre, genre les coordonnées de l'affichage, des booléens, des boucles pour parcourir des tableaux, etc...
Et des int pour les variables qui ne cesse d'augmenter
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 30/03/2014 18:58 | #
Je rejoins l'avis de Dodormeur, si ta variable ne contient pas un caractère, utilise de préférence un int ou un short à la place d'un char, c'est une convention à respecter.
Citer : Posté le 30/03/2014 19:06 | #
Ok si c'est une convention
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)