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 » Problème addin
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Problème addin

Posté le 09/12/2013 13:45

voila, je suis en train de préparer quelques graphisme pour mon prochain jeu et il y a un problème. mon programme peut afficher des lignes mais dès que je mets un GetKeyWait, mon écran est blanc. Comment faire pour que les traits restent pendant que le GetKeyWait fonctionne?

PS, mon programme est en fichier joint

Fichier joint


Précédente 1, 2, 3 ··· 8, 9, 10, 11, 12, 13, 14 ··· 18, 19, 20 Suivante
Dark storm En ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 13/03/2014 22:13 | #


Oups, mea culpa
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 16/03/2014 10:26 | #


Dodormeur a écrit :
Oui, c'est des opérations bit a bit. C'est tres utile pour l'optimisation, mais il faut savoir s'en servir.
Dans le meme style, il y a | & ^ , qui permettent de comparer deux nombres bit a bit.
011001 | 101101 = 111101
011001 & 101101 = 001001
011001 ^ 101101 = 110100


En fait
011001 | 101101 = 111101 // le | sert si 2 bits sont égaux, il renvoit 0 ou 1(selon la valeur des bits) et 1 si les bits sont différents
011001 & 101101 = 001001 // le & sert si 2 bits sont égaux, il renvoit 0 ou 1(selon la valeur des bits) et 0 si les bits sont différents
011001 ^ 101101 = 110100 // le ^ sert si 2 poids sont égaux, il renvoit 0 et 1 si les poids sont différents
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 16/03/2014 10:35 | #


Exact

& 1 0
1 1 0
0 0 0

| 1 0
1 1 1
0 1 0

^ 1 0
1 0 1
0 1 0

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 19/03/2014 19:30 | #


Pour charger le fichier monstre.csv, je me sert de cette fonction

   int recuphandle = 0;
    char *buffer = NULL;
    char buffer2[40]={0};
    int type = 0;
    int curseur = 0;
    int curseur2 = 0;
    int tailleFichier;
    int monstre = 0;
int mode=0;

    FONTCHARACTER PathName[]={'\\','\\','f','l','s','0','\\','M','O','N','S','T','R','E','S','.','c','s','v',0};

    recuphandle = Bfile_OpenFile(PathName,_OPENMODE_READ);
    
    ML_clear_vram();

    PopUpWin(5);
    ML_rectangle(11,20,115,30,1,ML_BLACK,ML_TRANSPARENT);
    ML_display_vram();

    tailleFichier = Bfile_GetFileSize(recuphandle); // on récupère la taille du fichier
    
    buffer = (void*)malloc(tailleFichier); // on copie le fichier dans le buffer
    Bfile_ReadFile(recuphandle, buffer, tailleFichier, 0);
Bfile_CloseFile(recuphandle);

    while(curseur < tailleFichier)
    {
    curseur++;
        if(buffer[curseur] == ';'||buffer[curseur]=='\n') // si on tombe sur un ; ou un retour à la ligne
        {
            memset(buffer2, 0, 40 * sizeof(char)); // on réinitialise le buffer2
            memcpy(buffer2, &buffer[curseur2], (curseur - curseur2) * sizeof(char)); // on copie ce qu'il y a entre deux points virgules
            
            switch(mode)
            {
                case 0 : // si on est sur l'ID
                    stockage[0+monstre*15] = char2int(buffer2); // on copie la valeur au bon endroit
                    break;

                case 1 : // si on est sur le nom
                    memcpy(&(stockage[1+monstre*15]), buffer2, 40 * sizeof(char)); // on copie le nom dans le tableau
                    break;

                case 2 : // si on est sur l'attaque
                    stockage[12+monstre*15] = char2int(buffer2); // on copie la valeur au bon endroit
                    break;

                case 3 : // si on est sur la défense
                    stockage[13+monstre*15] = char2int(buffer2); // on copie la valeur au bon endroit
                    break;

                case 4 : // si on est sur le niveau
                    stockage[14+monstre*15] = char2int(buffer2); // on copie la valeur au bon endroit
                    break;
            }
            memset(buffer2, 0, 40 * sizeof(char)); // on réinitialise le buffer2
            curseur2 = curseur + 1; // et la position du dernier curseur

            mode++;
            if(mode > 5) mode = 0; // on change le type de donnée
        }

        if(buffer[curseur] == '\n') monstre++; // on change de monstre

        ML_rectangle(12, 20, monstre + 11, 30, 1, ML_BLACK, ML_BLACK); // pour la barre de progression
        ML_display_vram();
    }

    free(buffer); // on libère la mémoire

    locate(1,1);
    Print((char*)"succes");
ML_display_vram();


Mais ça met 5sec à charger pour 105 monstre. est ce qu'il existe une fonction qui cherche un caractère dans une chaine et renvoie sa position???
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 19/03/2014 19:37 | #


Le plus simple, c'est d'avoir une taille fixe pour chaque monstre : tu dis que chaque monstre dispose de 10 caracteres pour le nom, 30 pour la description, 2 pour l'attaque, etc., et comme ca, pour avoir l'emplacement d'un monstre, tu n'as qu'as faire tableau[ID*TailleMonstre], plutot que de faire une recherche
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 !
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 19/03/2014 19:41 | #


non, mon problème c'est de charger les monstres du fichier vers le tableau. la fonction va bien mais elle est lente.

En fait, je charge le fichier dans un tableau que je trie pour mettre les infos dans un tableau ordonnée. mais quand je cherche dans le tableau où est chargé le fichier je cherche ";" caractère par caractère. Donc je cherche une fonction qui me dira où est ";" en m'inidquant sa position
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 19/03/2014 19:49 | #


Justement, c'est pour éviter de devoir rechercher, tu saura directement ou se trouve tel ou tel monstre, sans recherche.
Si c'est pour charger un fichier que tu as des problèmes, il ne faut surtout pas mettre le chargement de fichier dans une boucle, mais avoir un tableau qui retiendra le fichier, car les fonction B_file sont très lentes.
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 !
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 19/03/2014 19:56 | #


Dodormeur a écrit :
mais avoir un tableau qui retiendra le fichier,


Ben ,c'est sa que fait ma fonction, mais c'est quand je cherche dans ce tableau que c'est lent, car je recherche caractère par caractère.

quand je tombe sur ";", je copie (avec memcpy) dans le tableau (où le fichier a été copié) ce qu'il y a entre les deux ";" et je le mets dans le grand tableau qui a les données des monstres et dont je vais me servir
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 19/03/2014 20:55 | #


Il faut que tes données aies des tailles définies.
Par exemple, l'attaque est écrite sur 2 octets (jusqu'à 65536, ça devrait suffire ).
Donc, quand tu veux lire l'attaque, tu as:

short attaque;
Bfile_ReadFile(handle,(void *)(&attaque),2,-1);

Et ce pour toutes les valeurs.
Ainsi, la fonction est beaucoup accélérée.

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 20/03/2014 19:41 | #


en fait, je ne cherche pas directement dans le fichier. Je fais comme dodormeur a dit. dans mon fichier yugioh.csv, chaque valeur est séparé par des ";"

Ex:
ID;nomdumonstre;attaque;defense;niveau;
1;Abysse Etincelante;1600;1880;4;
2;Agrippe Forme;1200;1700;5;
3;Aitsu;100;100;5;
etc...


je copie l'intégralité du fichier dans un tableau en char puis je cherche ,caractère par caractère, le caractère ";" pour copier ce qu'il y a entre 2 ";" avec strcpy. je le passe de char* en int(pas le nom bien sur). puis je mets l'info dans un autre tableau bien structuré

|1|Abysse etincelante|1600|1880|4|
|2|Agrippe Forme |1200|1700|4|
|3|Aitsu |100 |100 |5|

c'est cette fonction qui s'occupe du travail
int recuphandle = 0;
    char *buffer = NULL;
    char buffer2[40]={0};
    int type = 0;
    int curseur = 0;
    int curseur2 = 0;
    int tailleFichier;
    int monstre = 0;
int mode=0;

    FONTCHARACTER PathName[]={'\\','\\','f','l','s','0','\\','M','O','N','S','T','R','E','S','.','c','s','v',0};

    recuphandle = Bfile_OpenFile(PathName,_OPENMODE_READ);
    
    ML_clear_vram();

    PopUpWin(5);
    ML_rectangle(11,20,115,30,1,ML_BLACK,ML_TRANSPARENT);
    ML_display_vram();

    tailleFichier = Bfile_GetFileSize(recuphandle); // on récupère la taille du fichier
    
    buffer = (void*)malloc(tailleFichier); // on copie le fichier dans le buffer
    Bfile_ReadFile(recuphandle, buffer, tailleFichier, 0);
Bfile_CloseFile(recuphandle);

    while(curseur < tailleFichier)
    {
    curseur++;
        if(buffer[curseur] == ';'||buffer[curseur]=='\n') // si on tombe sur un ; ou un retour à la ligne
        {
            memset(buffer2, 0, 40 * sizeof(char)); // on réinitialise le buffer2
            memcpy(buffer2, &buffer[curseur2], (curseur - curseur2) * sizeof(char)); // on copie ce qu'il y a entre deux points virgules
            
            switch(mode)
            {
                case 0 : // si on est sur l'ID
                    stockage[0+monstre*15] = char2int(buffer2); // on copie la valeur au bon endroit
                    break;

                case 1 : // si on est sur le nom
                    memcpy(&(stockage[1+monstre*15]), buffer2, 40 * sizeof(char)); // on copie le nom dans le tableau
                    break;

                case 2 : // si on est sur l'attaque
                    stockage[12+monstre*15] = char2int(buffer2); // on copie la valeur au bon endroit
                    break;

                case 3 : // si on est sur la défense
                    stockage[13+monstre*15] = char2int(buffer2); // on copie la valeur au bon endroit
                    break;

                case 4 : // si on est sur le niveau
                    stockage[14+monstre*15] = char2int(buffer2); // on copie la valeur au bon endroit
                    break;
            }
            memset(buffer2, 0, 40 * sizeof(char)); // on réinitialise le buffer2
            curseur2 = curseur + 1; // et la position du dernier curseur

            mode++;
            if(mode > 5) mode = 0; // on change le type de donnée
        }

        if(buffer[curseur] == '\n') monstre++; // on change de monstre

        ML_rectangle(12, 20, monstre + 11, 30, 1, ML_BLACK, ML_BLACK); // pour la barre de progression
        ML_display_vram();
    }

    free(buffer); // on libère la mémoire

    locate(1,1);
    Print((char*)"succes");
ML_display_vram();


Mais elle met quand même 5sec à charger 105monstres dans le tableau. Donc je me demande si il existe une fonction qui recherche 1 caractère particulier et qui renvoie sa position dans le tableau.


PS il y a char* strchr(const char* chaine, int caractereARechercher); mais elle ne recherche que le 1ère caractère alors que moi je cherche une fonction qui cherche le caractère à partir d'un point précis(exemple je veux qu'elle cherche à partir de tableau[10], ce qu'il y a avant de m'intéresse pas)
Dodormeur Hors ligne Ancien rédacteur Points: 3965 Défis: 84 Message

Citer : Posté le 20/03/2014 19:49 | #


Mis a part chercher caractère par caractère (ce que tu fais), il n'y a pas moyen.
Je t'ai vraiment dis de faire un système comme cela? Ça me semble un peu bizarre, vu que c'est une fonction assez lourde... omg
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: 24572 Défis: 170 Message

Citer : Posté le 20/03/2014 20:02 | #


Mais va-t-on réussir à t'expliquer ?

La méthode la plus rapide est de coder, non pas sur les caractères, mais sur les octets.
Par exemple, le niveau d'un monstre sera codé sur 1 octet, mais ce ne sera pas un caractère imprimable.
Par exemple, l'octet contiendra 00000110, soit 6. Le caractère ASCII dont le code est 6 n'est pas imprimable, mais ce n'est pas notre problème.
Lorsque tu vas lire
Bfile_ReadFile(handle,(void *)(&niveau),1,-1);

Tu vas lire un octet et le mettre à l'adresse de la varaible niveau. Ainsi cette dernière contiendra ta valeur.

De cette manière, une caractéristique est toujours stockée sur le même nombre d'octets. Par exemple, l'attaque et la défense sur deux octets, l'ID de la carte sur 1 seul (s'il y a moins de 256 cartes), le niveau sur 1 octet, etc... et le nom sur 20 octets, par exemple.
Du coup il te suffit de lire le nombre d'octets correpondant à ta donnée sans avoir besoin de chercher des séparateurs.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 20/03/2014 20:17 | #


@lephenixnoir j'ai un peu compris mais
une caractéristique est toujours stockée sur le même nombre d'octets a écrit :


Si il y a plus de 256 monstres, je coderais sur 2 octet mais est ce que ça changera quelque chose sur les monstres dont l'ID sera inférieur à 256?

et
Bfile_ReadFile(handle,(void *)(&niveau),1,-1);
ça risque pas de prendre les séparateur avec ?
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 20/03/2014 20:22 | #


Il n'y aura plus de séparateurs ! C'est ça l'intérêt !
Il ne sert à rien de mettre des séparateurs si les données ont des tailles constantes.

Bfile_ReadFile(handle,(void *)(&niveau),1,-1);
Bfile_ReadFile(handle,(void *)(&attaque),2,-1);
Bfile_ReadFile(handle,(void *)name,20,-1);


S'il y a plus de 256 monstres, ceux dont l'ID sera inférieur auront un octet vide.
Au passage, "30000", ça prend 5 octets à écrire, mais la valeur en elle-même tient sur deux octets, donc ne t'inquiète pas sur la taille ; au contraire, tu en économiseras (puisque les séparateurs auront sauté).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 21/03/2014 13:23 | #


donc je peux faire

int handle=0;
int buffer[105][15]={0};
FONTCHARACTER PathName[]={'\\','\\','f','l','s','0','\\','M','O','N','S','T','R','E','S','.','c','s','v',0};

handle = Bfile_OpenFile(PathName,_OPENMODE_READ);

Bfile_ReadFile(handle,(void *)&buffer[monstre][0],1,-1);//on stocke l'ID
Bfile_ReadFile(handle,(void *)&buffer[monstre][1],20,-1);//on stocke le nom
Bfile_ReadFile(handle,(void *)&buffer[monstre][12],2,-1);//on stocke l'ATK
Bfile_ReadFile(handle,(void *)&buffer[monstre][13],2,-1);//on stocke la DEF
Bfile_ReadFile(handle,(void *)&buffer[monstre][14],1,-1);//on stocke le niveau


avec dans le fichier yugioh.csv
1Abysse Etincelante160018804
2Agrippe Forme120017005
3Aitsu1001005
etc...


Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 21/03/2014 14:33 | #


Sauf que les valeurs ne sont pas écrites en texte mais dans les octets
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 21/03/2014 17:29 | #


Et pour lire, je fais comment après?

Printv (10, 10,buffer[monstre][0]);

Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 21/03/2014 19:51 | #


Ben, la lecture se fait, dans le fichier, par la commande
Bfile_ReadFile(handle,(void *)(&variable),length,-1);

Ensuite pour l'afficher (je zappe ta commande printv car je ne sais pas comment elle fonctionne)
sprintf(ch,"%d",variable);
PrintXY(1,1,(const unsigned char *)ch,0);

La modification se fait comme d'habitude.

Seulement puisque tes données sont écrites dans le octets, il est hors de question d'éditer ton fichier avec un bête éditeur de texte, il faut soit les coder avec un programme (opération inverse de la lecture, il s'agit de la meilleure solution 8) ), soit avec un éditeur hexadécimal.
Parce que du coup la valeur 65 ne s'écrit plus "65" mais "A". Il s'agit du caractère correspondant dans la table ASCII.

Dans ton exemple, chaque donnée doit avoir une taille bien définie, donc ce serait plutôt:
.Abysse Etincelante  ..... // no.1
.Agrippe Forme       ..... // no.2
.Aitsu               ..... // no.3
// etc
ADragon Blanc        ..... // no.65


Les "." représentant des octets non imprimables ou indéterminés (je n'ai pas fait le calcul de séparation des attaque et défense).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 21/03/2014 20:15 | #


okay, mais comme j'utilise excel pour taper les monstres dans un .csv, comment le transformer en hexadecimal

Au fait, comment on met à 0 une case d'un tableau de structure
typedef struct Card Card;
struct Card
{
    int type;
    int id;
    int tinvoc;
    int attack;
    int switchstate;
    int effect;
    Phase timeffect;
};

fonction{
Card tableau[5][4]={0};

tableau[2][2].id=24;
tableau.id=??? //ici je ne sait pas mettre la case à 0(càd que toutes les variables dans la case sont égales à 0)
}
Lephenixnoir En ligne Administrateur Points: 24572 Défis: 170 Message

Citer : Posté le 21/03/2014 20:20 | #


Si j'ai bien compris, tu veux mettre à 0 un élément de chaque structure de ton tableau de structures ?
Il n'y a guère qu'une boucle pour faire ça.
for(i=0;i<max;i++) tableau[i].id = 0;

Au passage, tu peux m'expliquer pourquoi tu as un tableau à deux dimensions ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Intelligide Hors ligne Membre de CreativeCalc Points: 49 Défis: 5 Message

Citer : Posté le 21/03/2014 20:26 | #


en fait je voudrais mettre tout les éléments de la structure à 0
en gros
tableau[2][2].type=0;
tableau[2][2].id=0;
tableau[2][2].tinvoc=0;
tableau[2][2].attack=0;
...


mais tableau[2][2]={0}; ne marche pas et je voudrais une solution pas trop longue
Précédente 1, 2, 3 ··· 8, 9, 10, 11, 12, 13, 14 ··· 18, 19, 20 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 106 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