Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] Snake ... oooooO a

Pour ceux qu'on pas compris le dessin c'est un serpent :s

    10 mai 2006 à 21:44:47

    Salut a tous !!!
    </span></span></span>

    De passage sur le forum et apres avoir lu le tuto de M@teo sur la gestion du temps avec la SDL, il m'a pris l'envie de coder un jeu de serpent comme il le suggerait.

    Aussitôt dit, aussitôt fait, je me suis attelé cette apres-midi à la tâche et je viens finalement vous presenter en exclusivité (vous vous rendez pas compte de la chance que vous avez mdr :D ) de la version 1.00 du jeu SNAKE (vous pouvez remarquer l'originalité du nom :p ).

    Voila sans plus attendre un lien pour le telecharger.
    Pour pouvoir le telecharger, il faut faire un don de 25€ à la compagnie NiCoSoft. Non je deconne, ce jeu est évidemment gratuit et libre de droits.

    Telecharger Snake v1.00 (~710Ko)

    Pour ce qui est des sources, elles sont libres. Vous pouvez les améliorer ou les recopier. Si vous copiez des parties entieres du programme, svp mentionnez juste mon nom quelque part, merci d'avance.

    He bien je vous laisse tester ça tout de suite.
    Dites moi ce que vous en pensez ;)

    + !NiCo!
    • Partager sur Facebook
    • Partager sur Twitter
      10 mai 2006 à 22:42:19

      Heuresement que tu fais pas payer !!! :lol:
      SNAKE, c'est a Nokia, pas à toi !! ;) lol

      JJ'essaierais quand j'aurais un PC sous la main..
      • Partager sur Facebook
      • Partager sur Twitter
        11 mai 2006 à 17:53:32

        Non c'est clair que c'est encore heureux que je ne fasse pas payer^^ manquerait plus que ca.

        Par contre, Snake n'est absolument pas a Nokia. Ca existait bien avant. Nokia n'a fait que le mettre sur ses portables.

        +!NiCo!
        • Partager sur Facebook
        • Partager sur Twitter
          11 mai 2006 à 17:57:23

          Ah ? Eh bien, excuse moi alors :)
          • Partager sur Facebook
          • Partager sur Twitter
            11 mai 2006 à 19:00:59

            Sympa, mais ça manque d'options :
            _pause
            _pommes spéciales bonus appraissant aléatoirement.
            _créer des niveaux plus originaux avec des murs....
            _.....etc
            • Partager sur Facebook
            • Partager sur Twitter
              11 mai 2006 à 19:12:00

              Ouais je sais. Ca viendra dans les versions futures. Pour l'instant c'est que la 1.00 .
              Je voulais la coder en une apres midi top chrono, ce que j'ai fait. La j'ai pas mal d'idées pour faire un jeu un peu plus original que le snake normal ;)

              !NiCo!
              • Partager sur Facebook
              • Partager sur Twitter
                12 mai 2006 à 8:43:18

                Voila, apres un pti moment de travail, je vous presente la version 1.2 du Snake.
                Rien de bien palpitant en plus. J'ai juste rajouté la gestion des scores et la pause pendant le jeu avec la touche espace (puis n'importe quelle touche pour reprendre).

                Lien vers la derniere version: Snake v1.2 (~740 Ko)

                Amusez vous bien ^^.

                +!NiCo!
                • Partager sur Facebook
                • Partager sur Twitter
                  12 mai 2006 à 17:11:52

                  Si tu fais du C++, ne mets pas les .h !

                  Voici ton header modifié :
                  #include <cstdlib>
                  #include <iostream>
                  #include <ctime>
                  #include <SDL/SDL.h>


                  De plus, tu utilise font.bmp alors pourquoi à tu besoin de SDL_ttf ? :-°
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 mai 2006 à 17:55:18

                    Ah lol j'ai mis la dll sdl_ttf sans faire expres ^^. C'est parce que j'ai un dossier ou je mets tous les fichiers que j'ajoute aux projets et j'ai tout copier sans faire gaffe.
                    Vous pouvez les supprimer si vous voulez ;)
                    +!NiCo!
                    • Partager sur Facebook
                    • Partager sur Twitter
                      12 mai 2006 à 22:08:49

                      Je trouve ton jeu tres sympathique.
                      Vivement que tu codes les ameliorations suggérées plus haut.
                      Bonne continuation ;)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 mai 2006 à 22:17:30

                        Eh bien justement, voila une nouvelle version arrivant.

                        ReBonjour a tous
                        </span></span>

                        Apres plusieurs heures de travail acharné, je suis fier de vous présenter la version 2 de mon jeu :

                        "Snake II : FreeStyle"

                        Vous ourrez decouvrir de nouvelles possibilités grace a un tout nouveau gameplay.

                        Etant donné que je viens de tout detailler dans un fichier .txt inclus dans le dossier du jeu, je ne vais pas m'amuser a tout retaper.
                        Voila donc les informations concernant le jeu :
                        ******** Le jeu, les regles, les touches ********

                        Le jeu "Snake II : Freestyle" est un "dérivé" du celebre jeu du Serpent.
                        Le but est simple. Il faut manger les pommes avec le serpent que vous
                        controlez. Chaque pomme mangée rapporte des points mais fait également
                        grandir votre serpent. Plus votre score sera élevé, plus votre serpent
                        prendra de place et plus il sera dur de ne pas perdre.

                        "Snake II : Freestyle" innove en proposant un nouveau gameplay:
                        Les croisements.
                        Les habitués du seprents savent que si leur serpent se cogne contre
                        une partie de son propre corps, il perdent. Cette regle n'existe plus.
                        A present, lorsque vous croisez une partie de votre corps, cette partie
                        sera sectionnée et se transformera en mur.
                        Lorsque vous sectionnez une partie de votre corps, vous gagnez des points
                        Plus cette partie sectionnée est longue, plus vous gagnez de points
                        (ex: vous sectionnez 3 boules de votre serpent, vous gagnez 12 pts. Alors
                        que si vous sectionnez 6 boules de votre corps, vous gagnez 42 pts.

                        Le but devient alors de faire grandir le maximum votre serpent sans perdre
                        puis d'en sectionner une grande partie. Vous recolterez ainsi de nombreux
                        points. Attention toutefois a la place qu'il vous restera apres que cette
                        partie sectionnée se soit transformée en mur. Vous pouvez bien entendu
                        continuer a manger les pommes pour gagner des points.

                        De plus, vous pouvez inverser la direction de votre serpent en appuyant
                        sur la touche 0 du clavier numerique (keypad). Cela vous permettra par
                        exemple de vous sortir d'une impasse ou vous vous seriez engagé.

                        Enfin, afin de corser l'affaire, a partir du niveau 6, en plus de la
                        vitesse qui augmente, des murs sont disposés par défaut dans le niveau.

                        * Résumé des touches : *

                        Fleches directionneles : Diriger le serpent
                        Echap : Quitter
                        Espace : Pause
                        KeyPad 0 : Inverser le sens de deplacement


                        Sur ce, bon jeu ;)


                        Sans plus attendre, voila un lien pour telecharger la version 2:
                        Snake II : FreeStyle (~730Ko)

                        Je vous propose de repondre sur ce sujet en mettant les scores atteint dans le jeu (sans tricher s'il vous plait ;) ).

                        Sur ce, je vous souhaite un tres bon jeu a tous.
                        + !NiCo!
                        • Partager sur Facebook
                        • Partager sur Twitter
                          12 mai 2006 à 22:46:44

                          Salut !
                          J'aime bien ton petit snake. Et la regle de la queue qui devient mur est assez bien trouvée.
                          Juste un petit bemol, j'ai un pc portable...sans keypad donc. Ca serait pas mal de pouvoir utiliser une autre touche.
                          Je te donne pas mon score qui est...ridicule, oui c'est le mot.

                          Bon courage pour la suite !
                          • Partager sur Facebook
                          • Partager sur Twitter
                            12 mai 2006 à 22:51:11

                            Je n'avais pas pensé au cas des pc portables ^^.
                            Je m'occupe de ce petit detail demain.
                            Je pense que je remplacerai la touche par Ctrl Droite.
                            Sinon, merci pour les encouragements.

                            + !NiCo!
                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 mai 2006 à 10:32:02

                              Vraiment cool la nouvelle version. Pour l'inversement du serpent, le mieux serait d'utiliser les touches directionnelles, questions de maniabilité, si le serpent va à gauche, alors on inverse avec la touche droite.

                              Ca va vite, c'est dur, c'est bien :) 175 pt.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                13 mai 2006 à 11:32:28

                                Lol merci pour les compliments et les suggestions.
                                J'ai modifié les touches pour inverser le sens de deplacement du serpent.
                                Maintenant, on peut changer de sens en appuyant sur Ctrl ou en appuyant sur la fleche opposée a la direction du serpent.

                                Lien pour telecharger la derniere version : SnakeII : FreeStyle

                                Par contre voila aussi un lien vers un autre post du forum dans lequel j'essaie de resoudre un probleme. Si vous pouviez passer jeter un coup d'oeil ce serait sympa ;)http://www.siteduzero.com/forum-83-40608-p1-impossibilite-de-supprimer-un-fichier.html

                                Probleme resolu ^^ grace a Kayl. Merci

                                !NiCo!

                                PS: Score Max -> 532
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  13 mai 2006 à 20:50:54

                                  Je dis un grand bravo.
                                  Je trouve ta 2eme version tres divertissante. De plus , le systeme de croisement est vraiment original (pour une fois qu'on trouve un jeu qui innove un peu ;) ).
                                  Bonne continuation.
                                  RuntimE
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    13 mai 2006 à 22:06:35

                                    Eh mais Snake ! Je l'ai codé, moi aussi !
                                    Secret (cliquez pour afficher)

                                    #include <stdlib.h>
                                    #include <stdio.h>
                                    #include <string.h>
                                    #include <SDL/SDL.h>
                                    #include <SDL/SDL_ttf.h>
                                    #define MAX_ENNEMIS 201
                                    #define L_FENETRE 640
                                    #define H_FENETRE 480
                                    #define VALUE_PROIE 2
                                    #define VALUE_BONUS 5
                                    #define ECART 4

                                    /* Objectif : création d'un jeu vidéo basique (SNAKE)
                                    Auteur : Naji Mammeri */


                                    enum typeProie
                                    {
                                            PROIE, BONUS
                                    };

                                    /* Variables globales */
                                    int     ennemisBouffes = 1,
                                            score = 0,
                                            i = 0,
                                            j = 0,
                                            k = 0;
                                    enum typeProie typeProie = PROIE;


                                    /* Vérification de la proximité de la proie / du bonus */
                                    void approxVerif(struct SDL_Rect * positionProie,
                                                                    struct SDL_Rect * positionSnake,
                                                                    enum typeProie typeproie)
                                    {
                                            /* Si le serpent passe près de la proie / du bonus, on considère ça comme un succès */
                                     for(k = 0; k <= ennemisBouffes; k++)
                                     {
                                      for(i = 0 - ECART ; i <= ECART ; i++)
                                      {
                                         if(positionSnake->x + i == positionProie->x)
                                         { /* Test abscisse */
                                             for(j = 0 - ECART ; j <= ECART ; j++)
                                             {
                                                   if(positionSnake->y + j == positionProie->y)
                                                   { /* Test ordonnée */
                                                                                           ennemisBouffes++;
                                                                                                if (positionnerProie(positionProie) != 1)
                                                                                                    fprintf(stderr, "positionnerProie() incorrectly loaded");
                                                                                                   
                                                                                                    switch(typeproie)
                                                                                                    {
                                                                                                    case PROIE: score += VALUE_PROIE; break;
                                                                                                    case BONUS: score += VALUE_BONUS; break;
                                                                                                    }
                                                   } /* Fin test ordonnée */
                                             }
                                         } /* Fin test abscisse */
                                      }
                                     }
                                      /* Fin de la boucle du test de proximité de la proie */
                                    }


                                    /* Fonction qui positionne la proie */
                                    int positionnerProie(struct SDL_Rect * proie_position)
                                    {
                                             srand(time(NULL)); /* initialisation du rand() */
                                         proie_position->x = (rand() % ( (L_FENETRE-20) - 20 + 1) ) + 20;
                                         proie_position->y = (rand() % ( (H_FENETRE-20) - 20 + 1) ) + 20;
                                             return 1;
                                    }

                                    /* Enumération qui fixe les directions possibles */
                                    enum direction
                                    {
                                         UP, DOWN, LEFT, RIGHT
                                    };

                                    /* Fonction servant à faire avancer les personnages dans la direction voulue */
                                    void move(enum direction direction, int avancement, struct SDL_Rect * positionSnake)
                                    {
                                            switch(direction)
                                            {
                                        case UP:    positionSnake->y -= avancement; break;
                                            case DOWN:      positionSnake->y += avancement; break;
                                            case LEFT:      positionSnake->x -= avancement; break;
                                            case RIGHT:     positionSnake->x += avancement; break;
                                        }
                                    }

                                    /* DEBUT MAIN() */

                                    int main(int argc, char *argv[])
                                    {
                                        /* Déclaration du fichier HighScore qui contiendra les meilleurs scores */
                                    FILE * HighScore = NULL;

                                            /* Déclaration des variables "primitives" (compteurs généralement) */
                                    int continuer = 1,
                                        avancementHauteur = 0,
                                            avancementLargeur = 0,
                                        tempsDebut = 0,
                                        tempsFin = 0,
                                        tempsEcoule = 0,
                                        HAUTEUR_SNAKE = 0,
                                        LARGEUR_SNAKE = 0;
                                    char sscore[200] = "";
                                    enum direction direction;
                                    direction = RIGHT;
                                           
                                            /* La vidéo et le timer son initalisés */
                                    if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER) == -1)
                                    {
                                            fprintf(stderr, "Couldn't initialize SDL : %s\n", SDL_GetError());
                                            exit(EXIT_FAILURE);
                                    }

                                            /* Lors de l'arrêt, SDL_Quit() s'éxecutera */
                                    atexit(SDL_Quit);


                                            /* Initialisation de la librairie SDL_TTF */
                                    if (TTF_Init() < 0)
                                    {
                                            printf("Could'nt initialize TTF Library. Exiting.\n");
                                            exit(EXIT_FAILURE);
                                    }

                                    TTF_Font *policeTexte = TTF_OpenFont("./Vera.ttf", 12);

                                    if(!policeTexte)
                                    {
                                            printf("Couldn't initialize TTF Font");
                                            return EXIT_SUCCESS;
                                    }

                                    atexit(TTF_Quit);

                                            /* Déclaration des surfaces SDL et position */
                                    SDL_Event event;
                                    SDL_Surface *ecran = NULL,
                                                            *snake[MAX_ENNEMIS+1] = {NULL},
                                                            *proie = NULL,
                                                            *bonus = NULL,
                                                            *surfaceTexte = NULL;
                                    SDL_Rect positionSnake[MAX_ENNEMIS+1], positionProie, positionTexte, positionBonus;
                                    SDL_Color couleurTexte;

                                    couleurTexte.r = 255;
                                    couleurTexte.g = 0;
                                    couleurTexte.b = 0;

                                            /* Ouverture d'un mode vidéo en 32 bits - chargement matériel, double
                                            buffering, mise à niveau du format si le 32 bits n'est pas supporté */

                                    ecran = SDL_SetVideoMode(L_FENETRE, H_FENETRE, 32, SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_ANYFORMAT);

                                            /* Vérification de l'ouverture du mode vidéo */
                                    if (ecran == NULL)
                                    {
                                            fprintf(stderr, "Couldn't set Video Mode : %s\n", SDL_GetError());
                                            return EXIT_FAILURE;
                                    }

                                            /* Titre de la fenêtre */
                                    SDL_WM_SetCaption("Snake", NULL);

                                            /* Initialisation des personnages */
                                    for(i = 0; i <= (MAX_ENNEMIS - 1); i++)
                                    {
                                    snake[i] = SDL_LoadBMP("./snake.bmp");
                                    positionSnake[i].x = ecran->w / 2 - snake[i]->w / 2;
                                    positionSnake[i].y = ecran->h / 2 - snake[i]->h / 2;
                                            if (snake[i] == NULL)
                                        {
                                            fprintf(stderr, "Couldn't load snake.bmp at %d iteration : %s\n", i, SDL_GetError());
                                            return EXIT_FAILURE;
                                            }
                                    }

                                    LARGEUR_SNAKE = snake[0]->w;
                                    HAUTEUR_SNAKE = snake[0]->h;
                                    avancementLargeur = LARGEUR_SNAKE / 2;
                                    avancementHauteur = HAUTEUR_SNAKE / 2;

                                            /* Chargement de l'image de la proie */
                                    proie = SDL_LoadBMP("./proie.bmp");
                                    if (proie == NULL)
                                    {
                                            fprintf(stderr, "Couldn't load proie.bmp : %s\n", SDL_GetError());
                                            return EXIT_FAILURE;
                                    }

                                            /* Chargement de l'image du bonus */
                                    bonus = SDL_LoadBMP("./bonus.bmp");
                                    if (bonus == NULL)
                                    {
                                            fprintf(stderr, "Couldn't load bonus.bmp : %s\n", SDL_GetError());
                                            return EXIT_FAILURE;
                                    }

                                            /* Gestion de la transparence de la proie */
                                    SDL_SetColorKey(proie, SDL_SRCCOLORKEY, SDL_MapRGB(proie->format, 255, 0, 0));
                                    SDL_SetColorKey(bonus, SDL_SRCCOLORKEY, SDL_MapRGB(bonus->format, 255, 0, 0));

                                            /* Positionnement aléatoire de la proie */
                                    if (positionnerProie(&positionProie) != 1)
                                    {
                                            fprintf(stderr, "positionnerProie() incorrectly loaded");
                                    }

                                            /* Positionnement aléatoire du bonus */
                                    if (positionnerProie(&positionBonus) != 1)
                                    {
                                            fprintf(stderr, "positionnerProie() incorrectly loaded");
                                    }

                                        /* Démarrage du compteur temporel */
                                    tempsDebut = SDL_GetTicks();

                                            /* DEBUT BOUCLE PRINCIPALE */
                                    while (continuer && (ennemisBouffes < MAX_ENNEMIS))
                                    {

                                    /* Attente d'un évènement */
                                    SDL_PollEvent(&event);
                                           
                                    switch(event.type) /* Gestion des évènements */
                                    {
                                    case SDL_QUIT: continuer = 0; break;
                                    case SDL_KEYDOWN:
                                         switch(event.key.keysym.sym)
                                         {
                                         case SDLK_UP:        if(direction != DOWN)
                                                                                 direction = UP;
                                                                                break;
                                             case SDLK_DOWN:  if(direction != UP)
                                                                                    direction = DOWN;
                                                                                break;
                                             case SDLK_LEFT:  if(direction != RIGHT)
                                                                                    direction = LEFT;
                                                                                break;
                                             case SDLK_RIGHT: if(direction != LEFT)
                                                                                    direction = RIGHT;
                                                                                break;
                                         case SDLK_ESCAPE:  continuer = 0; break;
                                         } break;
                                    }

                                            typeProie = PROIE;
                                            approxVerif(&positionProie, &positionSnake[0], typeProie);

                                            if((ennemisBouffes-1) % 5 == 0 && ennemisBouffes-1 != 0)
                                            {
                                                    typeProie = BONUS;
                                                    approxVerif(&positionBonus, &positionSnake[0], typeProie);
                                            }

                                            /* Chaque personnage prend la position de celui qui le précéde */
                                            for(i = ennemisBouffes; i >= 1; i--)
                                            {
                                            positionSnake[i].x = positionSnake[i-1].x;
                                            positionSnake[i].y = positionSnake[i-1].y;
                                            }
                                           
                                           
                                            /* On bouge le premier personnage dans la direction qui convient, les autres suivront. */
                                        if(direction == UP || direction == DOWN)
                                                    move(direction, avancementHauteur, &positionSnake[0]);
                                            else
                                                    move(direction, avancementLargeur, &positionSnake[0]);
                                         
                                            /* Si la tête touche le corps, la boucle se termine */
                                            for(i = 1; i<=ennemisBouffes; i++)
                                            {
                                                    if(     positionSnake[0].x == positionSnake[i].x &&
                                                            positionSnake[0].y == positionSnake[i].y )
                                                    {
                                                            continuer = 0;
                                                    }
                                            }
                                           
                                            /* Si la tête (ou autre partie) sort de l'écran, il réapparait de l'autre côté */
                                            for(i = 0; i<=ennemisBouffes; i++)
                                            {
                                                    switch(positionSnake[i].x)
                                                    {
                                                            case 0:                 positionSnake[i].x = L_FENETRE - LARGEUR_SNAKE; break;
                                                            case L_FENETRE: positionSnake[i].x = 0 + LARGEUR_SNAKE; break;       
                                                    }
                                                   
                                                    switch(positionSnake[i].y)
                                                    {
                                                            case 0:   positionSnake[i].y = H_FENETRE - HAUTEUR_SNAKE; break;
                                                            case H_FENETRE: positionSnake[i].y = 0 + HAUTEUR_SNAKE; break;
                                                    }
                                            }

                                    /* Actualisation de la chaîne "sscore" */
                                    sprintf(sscore, "Score : %d", score, ennemisBouffes-1);
                                           
                                    /* Effaçage de l'écran */
                                    SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 127, 227, 165));   
                                           
                                    /* Blit du texte */
                                    surfaceTexte = TTF_RenderText_Solid(policeTexte, sscore, couleurTexte);
                                    positionTexte.x = L_FENETRE - surfaceTexte->w;
                                    positionTexte.y = H_FENETRE - surfaceTexte->h;
                                    SDL_BlitSurface(surfaceTexte, NULL, ecran, &positionTexte);
                                           
                                    /* Blit de la proie */
                                    SDL_BlitSurface(proie, NULL, ecran, &positionProie);
                                           
                                    /* On blitte les serpents un par un */
                                    for(i = 0; i <= ennemisBouffes; i++)
                                    {
                                            SDL_BlitSurface(snake[i], NULL, ecran, &positionSnake[i]);
                                    }

                                    /* Blit du bonus si bonus il y a */
                                    if((ennemisBouffes-1) % 5 == 0 && ennemisBouffes-1 != 0)
                                    {
                                            SDL_BlitSurface(bonus, NULL, ecran, &positionBonus);
                                    }

                                    /* Switch des buffers (écrans) */
                                    SDL_Flip(ecran);
                                    }
                                    /* FIN BOUCLE PRINCIPALE */

                                    /* Calcul du temps écoulé */
                                    tempsFin = SDL_GetTicks();
                                    tempsEcoule = (tempsFin - tempsDebut) / 1000;

                                    /* Libération des surfaces */
                                    SDL_FreeSurface(surfaceTexte);
                                    TTF_CloseFont(policeTexte);
                                    SDL_FreeSurface(proie);
                                            for (i=0; i<=MAX_ENNEMIS; i++)
                                            {
                                    SDL_FreeSurface(snake[i]);
                                            }
                                           
                                    TTF_Quit();
                                    SDL_Quit();

                                    HighScore = fopen("highscore.txt", "a+");
                                    if (HighScore == NULL)
                                    {
                                                  printf("highscore.txt n'a pu être ouvert");
                                                  return EXIT_FAILURE;
                                    }
                                    fprintf(HighScore, "Score : %d points -- Temps : %d s", score, tempsEcoule);
                                    fclose(HighScore);

                                    return EXIT_SUCCESS;
                                    }
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      14 mai 2006 à 18:48:05

                                      Euh, je chercherai un linuxien qui me compilerai une version pour linux svp.
                                      Si vous pouvez vous en occuper, envoyez moi un mp.
                                      Merci d'avance.

                                      +!NiCo!
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        15 mai 2006 à 5:26:32

                                        maintenant tu devrais esseyer de le faire en 3d avec le tuto de kayl :o
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          15 mai 2006 à 14:06:14

                                          Ah ouais, clair, je vois bien ce jeu à la premier personne :p

                                          Mais c'est vrai que ça pourrais etre sympa en 3D.
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          [SDL] Snake ... oooooO a

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown