#include #include #include #include #include #define HAUTEUR 40 #define LARGEUR 60 #define CYCLE 100000L #define SEGMENT 10 /* Enumeration des différentes directions possibles */ enum dir { UP = 2, DOWN = 3, LEFT = 0, RIGHT = 1 }; /* Structure pour stocker les coordonnées des segments du serpent */ typedef struct { int x,y; }SnakePoint; typedef struct { int posx, posy; } PommePoint; /* Fonction pour afficher le serpent */ void serpent(SnakePoint *snake, int taille) { for (int i = 0; i < taille; i++) { couleur s = CouleurParComposante(255, 255, 0); ChoisirCouleurDessin(s); RemplirRectangle(snake[i].x * SEGMENT, snake[i].y * SEGMENT, SEGMENT, SEGMENT); } } void pomme(SnakePoint *pommes){ /* Vérifie si le serpent a mangé la pomme à partir des coordonnées et génère une nouvelle pomme */ for (int i = 0; i < 5; i++) { pommes[i].x = rand() % LARGEUR; pommes[i].y = rand() % HAUTEUR; couleur p = CouleurParComposante(255,0, 0); ChoisirCouleurDessin(s); RemplirRectangle(pomme[i].x, pomme[i].y); } void MouvenmentTete(SnakePoint *){ for (int i = *taille - 1; i > 0; i--) { snake[i] = snake[i - 1]; } /* Déplace la tête en fonction de la direction */ if (*dir == LEFT) { snake[0].posx = (snake[0].posx - 1 + LARGEUR) % LARGEUR; } else if (*dir == RIGHT) { snake[0].posx = (snake[0].posx + 1) % LARGEUR; } else if (*dir == UP) { snake[0].posy = (snake[0].posy - 1 + HAUTEUR) % HAUTEUR; } else if (*dir == DOWN) { snake[0].posy = (snake[0].posy + 1) % HAUTEUR; }