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 ··· 23, 24, 25, 26, 27, 28, 29, 30 ··· 40 ··· 46, 47, 48 Suivante
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 06/04/2014 17:18 | #


Tu veux passer un pointeur, soit un tableau de pointeurs sur des structures ?

Ce sera un paramètre de type Structure **, et pour l'envoyer, tu peux mettre
Structure *tab[...];
fonction(tab);


Ajouté le 06/04/2014 à 17:20 :
Ton erreur est que tu envoies face_cube, qui est de type Face_3D *, et tu le reçois en Face_3D *[] = Face_3D **.
Dark storm Hors ligne Labélisateur Points: 11579 Défis: 176 Message

Citer : Posté le 06/04/2014 18:20 | #


Je me disais aussi, j'ai tilté y'a 10 minutes
Du coup c'est bon ça marche
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 06/04/2014 18:24 | #


Ben oui, c'est bête si on échange les niveaux de pointeurs
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 08/04/2014 13:21 | #


quelqu'un aurait un exemple de code pour montrer le fonctionnement de la fonction realloc en C++? a chaque fois que je veux l'utiliser dans mon minecraft, le sdk me crashe gentiment a la figure (et cela même en ayant précisé que c'est une fonction C et ayant bien inclus la bonne lib)
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 08/04/2014 16:49 | #


unsigned char *ptr;
ptr = malloc(100);
ptr = realloc(ptr,200);


En fait, ça va simplement refaire un malloc. En revanche, si ça ne fonctionne pas, tu reçois un NULL, donc tu perds l'adresse de la zone mémoire allouée précédemment.
De manière générale, il vaut mieux faire une copie pour garder l'ancienne zone mémoire si la réallocation échoue.

Je ne sais pas si, lorsque la réallocation réussit, la zone mémoire originelle est libérée.
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 08/04/2014 17:04 | #


heu, lephenixnoir, dans ton exemple, utiliser realloc est totalement inutile, et ça ne correspond pas a la syntaxe que j'ai trouvé sur le site Cplusplus.com (il y a deux paramètres: le pointeur vers le block a ré-allouer, et le taille de la nouvelle allocation). j'ai trouvé un exemple pour le C, mais je pense que le pb ne vient pas de l'utilisation de realloc au final, car quand j'ai tenté des trucs avec le code qui ne voulait pas fonctionner, je me suis rendu compte que ça n'a pas l'air de fonctionner correctement pour les classes (le compilo refuse de me passer un void* en un pointeur sur classe)
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 08/04/2014 17:06 | #


Désolé, erreur de ma part, j'oublie toujours ce paramètre.
Je corrige.

Par contre, le cast d'un pointeur qui ne passe pas au compilateur... je n'ai jamais vu ça
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 08/04/2014 18:10 | #


et en passant, ce n'est pas le seul truc étrange que j'ai avec les pointeurs sur classe: quand j'utilise un delete sur un pointeur sur classe, une fois sur deux j'ai une erreur de lecture de mémoire, alors qu'avec une struct imitant la même classe je n'ai pas de problème (ce qui fait que j'ai du transformer certaines classes de mon minecraft en structures pour stopper les problèmes de mémoire dynamique)
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 08/04/2014 18:11 | #


Ce n'est pas un problème de mémoire non libérée ?
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

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


non, c'est une erreur d’accès a la mémoire, ce qui est impossible normalement lors de l'utilisation d'un delete... (en gros, ça me dit que la calto veut toucher a une zone de mémoire a la quelle elle n'est pas censé toucher normalement, mais vu que c'est un delete, le pointeur est forcément bon, sinon j'aurais eut l'erreur au new et non pas au delete des dizaines de lignes plus bas)
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 08/04/2014 18:16 | #


D'accord
En fait c'est comme les EBR... aléatoire
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 08/04/2014 18:16 | #


et les classes en question n'utilisent pas de pointeur en elles mêmes, il ne peut pas y avoir de perte de mémoire dû a des zone de mémoire non utilisée mais réservées

Ajouté le 08/04/2014 à 18:19 :
heureusement, ça ne m'a fait cette erreur que sur des classes très simples (les Points3D et Points2D, que j'ai remplacé par des structures contenant réspectivement 3 fix et 2 fix pour les coordonnées), si ça me l'avait fait sur les classes de modèles ou même de la classe monde, j'aurais dû recommencer mon minecraft pour la 22ème fois
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 08/04/2014 18:20 | #


Décidément, ce SDK nous réserve bien des surprises, et pas toujours des meilleures.

Au fait, tu saurais m'expliquer pourquoi il faut toujours définir le contenu des méthodes virtuelles d'une classe dès que l'on définit le code d'une des autres méthodes ?
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 08/04/2014 18:23 | #


je suis pas très a l'aise avec le virtuel en C++, je vais pas pouvoir t'aider pour le moment (ça fait plusieurs mois que je programme en C++, mais j'ai encore du mal avec tout ces nouveaux concepts, je suis trop habitué au C)
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

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


Pas grave, merci
Positon Hors ligne Rédacteur Points: 2396 Défis: 57 Message

Citer : Posté le 13/04/2014 19:42 | #


J'ai un problème inexplicable avec une fonction qui sert à générer des éléments dans une map. J'ai une carte de 10*5.

Le code :
#define CARTE(x,y) carte[y*largeur+x-1]

...

//appel de la fonction :
for(i=0;i<(largeur*hauteur)/10;i++)
{
    ecosysteme[i]=creation_etre(largeur,hauteur,alea(1,4),carte);
}

...

//la fonction :
Etre creation_etre(int largeur,int hauteur,enum Element type,char *carte)
{
    Etre element;
    do
    {    
        element.x=alea(1,largeur);
        element.y=alea(1,hauteur);
    }while(CARTE(element.x,element.y));
    
    element.type=type;
    CARTE(element.x,element.y)=type; //à chaque appel de la fonction, je modifie la valeur d'UNE seule case !
    element.objectif=NULL;
    
    return element;
}


Sans s'attarder en détail sur la fonction, vous êtes d'accord qu'elle est censée générer 5 éléments ?
Et pourtant, voilà à quoi ressemble la map lorsque j'affiche chacune de ses valeurs à l'écran (sachant qu'une case vide vaut 0):

Les tests ont révélé que chaque valeur est bien enregistrée dans la bonne case. Malheureusement, toute la diagonale bas-gauche/haut-droite à laquelle appartient cette case se voit affecter la valeur.

J'ai relu mon code des dizaines de fois et je ne vois pas ce qui cloche, si quelqu'un a la solution je suis preneur...
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

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


bon bah, une semaine plus tard et je n'ai toujours pas réussi a mettre au pas mes foutus pointeurs...

a tout hasard, je vous met la classe qui refuse de fonctionner correctement, j'offre un chocolat a celui qui me dit pourquoi les lignes en rouge ne fonctionnent pas (le reste de la classe marche parfaitement comme je le veux, mais il y a ces 3 deletes qui refusent de marcher, ce qui produit des fuites de mémoires très chiantes)

Cliquez pour découvrir
Cliquez pour recouvrir

class MC_World {
public:
    MC_World() : vram(ML_vram_adress())
    {
        unsigned int debug0[6]={0,0,0,0,0,0};
        nbPoints=0;
        nbFaces=0;
        nbCubeModels=1;
        nbBlockModels=1;
        nbLoadded=0;
        cubeModels=new MC_CubeModel[nbCubeModels];
        blockModels=new MC_BlockModel[nbBlockModels];
        blockModels[0]=MC_BlockModel(0,debug0,cubeModels);
        loaddedBlocks=0;
        points=0;
        points2D=0;
        faces=0;
    }

    ~MC_World() {delete points;delete faces;delete blockModels;delete cubeModels;}

    void testLoaddChunk(MC_Chunk chunk,Point3D c)
    {
        //faudra faire le test de visibilité l'hors du parcours
        for(int x=0;x<16;++x)
            for(int z=0;z<16;++z)
                for(int y=0;y<16;++y)
                    if(chunk.getBlock(x,y,z)>0) generateBlock(chunk.getBlock(x,y,z)-1,c/*.move(x<<1,y<<1,z<<1)*/,chunk.getOcclusion(x,y,z));
    }

    void generateBlock(unsigned int ID,Point3D pos,unsigned char occ)
    {
        MC_LoaddedBlock *tmp0=new MC_LoaddedBlock[nbLoadded+1];
        for(unsigned int i=0;i<nbLoadded;++i) tmp0[i]=loaddedBlocks[i];
        delete(loaddedBlocks);
        loaddedBlocks=tmp0;

        loaddedBlocks[nbLoadded].IDBlockModel=ID;
        unsigned int nbP=cubeModels[blockModels[ID].getCubeModelID()].getNbPoints();
        unsigned int nbF=cubeModels[blockModels[ID].getCubeModelID()].getNbFaces();
        loaddedBlocks[nbLoadded].refPoints=new unsigned int[nbP];
        loaddedBlocks[nbLoadded].refFaces=new unsigned int[nbF];
        //resize(points,nbPoints,nbPoints+nbP);
        //points=new Point3D[8];
        //points2D=new Point2D[8];
        //points=(Point3D*)realloc(points,(nbPoints+nbP)*sizeof(Point3D));
        //points2D=(Point2D*)realloc(points2D,(nbPoints+nbP)*sizeof(Point2D));

        Point3D *tmp1=new Point3D[nbPoints+nbP];
        for(unsigned int i=0;i<nbPoints;++i) tmp1[i]=points[i];
        [red]delete(points);[/red]
        points=tmp1;

        Point2D *tmp2=new Point2D[nbPoints+nbP];
        for(unsigned int i=0;i<nbPoints;++i) tmp2[i]=points2D[i];
        [red]delete(points2D);[/red]
        points2D=tmp2;

        //resize(faces,nbFaces,nbFaces+nbF);
        //faces=new MC_Lface[6];
        //faces=(MC_Lface*)realloc(faces,(nbFaces+nbF)*sizeof(MC_Lface));

        MC_Lface *tmp3=new MC_Lface[nbFaces+nbF];
        for(unsigned int i=0;i<nbFaces;++i) tmp3[i]=faces[i];
        [red]delete(faces);[/red]
        faces=tmp3;

        for(unsigned int i=0;i<nbP;++i)
        {
            //a optimiser (calcul des points commun aux objets)
            points[nbPoints+i]=(cubeModels[blockModels[ID].getCubeModelID()].getPoint(i))+pos;
            loaddedBlocks[nbLoadded].refPoints[i]=nbPoints+i;
        }
        for(unsigned int i=0;i<nbF;++i)
    if(occ&(1<<i))
        {
            //éventuellement optimiser directement a la création des blocs la gestion des points des faces inutiles par proximité
            MC_Cface tmp=cubeModels[blockModels[ID].getCubeModelID()].getFace(i);
            faces[nbFaces+i].A=tmp.A+nbPoints;
            faces[nbFaces+i].B=tmp.B+nbPoints;
            faces[nbFaces+i].C=tmp.C+nbPoints;
            faces[nbFaces+i].D=tmp.D+nbPoints;
            faces[nbFaces+i].IDT=blockModels[ID].getFaceID(i);
            faces[nbFaces+i].Z=0;
            loaddedBlocks[nbLoadded].refFaces[i]=nbFaces+i;
        }
        nbPoints+=nbP;
        nbFaces+=nbF;
        ++nbLoadded;
    }

    void brutRenderWorld(unsigned char rx,unsigned char ry,unsigned char rz) //rendu de débuggage
    {
        Matrix<float> rot(matrix3D(rx,ry,rz));
        for(unsigned int i=0;i<nbPoints;++i) points2D[i]=to2D(rot.multiply(points[i]));
        vram.fillBuffer(0);
        for(unsigned int j=0;j<nbFaces;++j)
        {
            if(((points2D[faces[j].A].x-points2D[faces[j].B].x)*(points2D[faces[j].C].y-points2D[faces[j].B].y)-(points2D[faces[j].A].y-points2D[faces[j].B].y)*(points2D[faces[j].C].x-points2D[faces[j].B].x))>0)
            {
                //faces[i].Z=
                //test direct vers le buffer
                vram.line(points2D[faces[j].A],points2D[faces[j].B],1);
                vram.line(points2D[faces[j].B],points2D[faces[j].C],1);
                vram.line(points2D[faces[j].C],points2D[faces[j].D],1);
                vram.line(points2D[faces[j].D],points2D[faces[j].A],1);
            }
        }
//        delete(points2D);
    }

protected:
    Point3D *points;
    Point2D *points2D;
    unsigned int nbPoints;
    MC_Lface *faces;
    unsigned int nbFaces;
    MC_BlockModel *blockModels;
    unsigned int nbBlockModels;
    MC_CubeModel *cubeModels;
    unsigned int nbCubeModels;
    MC_LoaddedBlock *loaddedBlocks;
    unsigned int nbLoadded;
    Buffer vram;
};

Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 15/04/2014 12:59 | #


Il n'y a pas deux delete points ? Avec celui dans le destructeur.
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

Citer : Posté le 15/04/2014 13:02 | #


si, mais vu que realloc ne marche pas, j'ai fais une version brute de realloc: je fais une copie temporaire des points dans une liste que j'alloue avec une taille supérieure a points, je supprime points et je donne le pointeur de la liste temporaire a points (le problème est que le delete ne marchant pas, je me retrouve avec une liste en trop dans la mémoire)
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Lephenixnoir Hors ligne Administrateur Points: 22880 Défis: 149 Message

Citer : Posté le 15/04/2014 16:43 | #


Je n'ai peut-être pas tout vu, mais:
MCWorld::MCWorld()
{
  ...
  points = 0;
  ...
}

Ce n'est pas avec cette valeur que le delete va te répondre gentiment.
Limachi Hors ligne Youtuber Points: 2798 Défis: 67 Message

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


désolé de te rembarrer encore une fois, mais le problème ne viens pas de là, delete(0) ne produit pas d'erreur, et j'ai déjà tenté en préallouant un point inutile a la création de la classe, ça n'a pas marché non plus.
Mes Programmes
Cliquer pour enrouler
-en basic: un programme nommé PICFMLIM convertissant une picture en code basic.
-en C:
-Un pong.
-Un projet en pause. Je compte le reprendre de temps en temps: Summer Cursed


-mon tuto sur les Str


Mes calto: G25+, G75
Mon minecraft en dévelopement


Projets et Programmes que je soutiens (sur une idée de Marmotti)
Cliquer pour enrouler
-Pokemon Jade de Dodormeur
-Portal2D de JavierXD
-CalCraft de Wime
-GeekBros du groupe GeekBrothers (Eiyeron,Siapran,KevKevVTT,Adbook,LIMachi)
Précédente 1, 2, 3 ··· 10 ··· 20 ··· 23, 24, 25, 26, 27, 28, 29, 30 ··· 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 - 2023 | Il y a 56 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