#include #include #include #include "../include/grille.h" #include "../include/serpent.h" #include "../include/pomme.h" #include "../include/jeu.h" #include "../include/menu.h" #include "../include/timer.h" #include "../include/obstacle.h" void afficherScore(int score) { char scoreStr[20]; /* Efface l'ancien score */ ChoisirCouleurDessin(CouleurParComposante(0, 0, 0)); RemplirRectangle(178, 946, 130, 40); /* Convertit le score en chaîne de caractères */ snprintf(scoreStr, sizeof(scoreStr), "%d", score); /* Affiche le nouveau score */ ChoisirCouleurDessin(CouleurParComposante(255, 255, 255)); EcrireTexte(179, 976, scoreStr, 2); } void lancer_jeu1(void) { int fin = 1; Segment serpent[100]; int longueur = 10; int direction_x = 1; int direction_y = 0; int score = 0; char scoreStr[20]; Pomme pomme; int min, sec; initialiser_timer(&min, &sec); initialiserSerpent(serpent, &longueur); dessinerGrille(); pomme = creerPomme(); dessinerPomme(pomme); while (fin == 1) { update_timer(&min, &sec); gestionDeplacements(serpent, &direction_x, &direction_y); mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y); if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) { longueur++; score += 5; pomme = creerPomme(); dessinerPomme(pomme); } if (tuerSerpent(serpent, longueur)) { int choixGameOver; afficherMenuGameOver(); afficher_seconde(sec); afficher_minute(min); afficherScore(score); /* Attend le choix du joueur après le game over */ choixGameOver = attendreChoixGameOver(); } dessinerSerpent(serpent, &longueur); afficherScore(score); update_timer(&min, &sec); attendreSerpent(150000); } } void lancer_jeu2(void) { int i; Segment serpent[100]; int longueur = 10; int direction_x = 1; int direction_y = 0; unsigned long int vitesse = 200000; /*vitesse de base*/ int score = 0; char scoreStr[20]; Pomme pommes[5]; int min, sec; initialiser_timer(&min, &sec); initialiserSerpent(serpent, &longueur); dessinerGrille(); for (i = 0; i < 5; i++) { pommes[i] = creerPomme(); dessinerPomme(pommes[i]); } while (1) { gestionDeplacements(serpent, &direction_x, &direction_y); mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y); for (i = 0; i < 5; i++) { if (serpent[0].x == pommes[i].x && serpent[0].y == pommes[i].y) { longueur++; score += 5; pommes[i] = creerPomme(); dessinerPomme(pommes[i]); } } if (tuerSerpent(serpent, longueur)) { int choixGameOver; afficherMenuGameOver(); afficher_seconde(sec); afficher_minute(min); afficherScore(score); /* Attend le choix du joueur après le game over */ choixGameOver = attendreChoixGameOver(); } dessinerSerpent(serpent, &longueur); afficherScore(score); update_timer(&min, &sec); attendreSerpent(vitesse); /*Gère la vitesse*/ } } void lancer_jeu4(void) { int longueur = 10; int direction_x = 1; int direction_y = 0; int score = 0; unsigned long int vitesse = 300000; /*vitesse de base*/ char scoreStr[20]; Pomme pomme; Segment serpent[100]; int min, sec; initialiser_timer(&min, &sec); initialiserSerpent(serpent, &longueur); dessinerGrille(); pomme = creerPomme(); dessinerPomme(pomme); while (1) { gestionDeplacements(serpent, &direction_x, &direction_y); mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y); if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) { longueur++; score += 5; pomme = creerPomme(); dessinerPomme(pomme); /* Augmenter la vitesse à chaque pomme mangée*/ vitesse -= 5000; /* Réduire la durée d'attente (augmenter la vitesse)*/ } if (tuerSerpent(serpent, longueur)) { int choixGameOver; afficherMenuGameOver(); afficherScore(score); afficher_minute(min); afficher_seconde(sec); /* Attend le choix du joueur après le game over */ choixGameOver = attendreChoixGameOver(); } dessinerSerpent(serpent, &longueur); afficherScore(score); update_timer(&min, &sec); attendreSerpent(vitesse); } } void lancer_jeu3(void) { int i,j; int longueur = 10; int direction_x = 1; int direction_y = 0; int score = 0; unsigned long int vitesse = 100000; char scoreStr[20]; Pomme pomme; int nombreObstacles = 10; Obstacle *obstacles = malloc(nombreObstacles * sizeof(Obstacle)); Segment serpent[100]; int min, sec; initialiser_timer(&min, &sec); initialiserSerpent(serpent, &longueur); dessinerGrille(); pomme = creerPomme(); dessinerPomme(pomme); placerObstacle(obstacles, nombreObstacles, LARGEUR_GRILLE, HAUTEUR_GRILLE); while (1) { gestionDeplacements(serpent, &direction_x, &direction_y); mettreAJourSerpent(serpent, &longueur, &direction_x, &direction_y); if (serpent[0].x == pomme.x && serpent[0].y == pomme.y) { longueur++; score += 5; pomme = creerPomme(); dessinerPomme(pomme); vitesse -= 5000; } if (tuerSerpent(serpent, longueur)) { int choixGameOver; afficherMenuGameOver(); afficher_seconde(sec); afficher_minute(min); afficherScore(score); /* Attend le choix du joueur après le game over */ choixGameOver = attendreChoixGameOver(); } /*Vérifier la collision avec les obstacles*/ for (i = 0; i < nombreObstacles; i++) { if (estCollisionObstacle(obstacles[i], serpent, longueur)) { int choixGameOver; afficherMenuGameOver(); afficher_seconde(sec); afficher_minute(min); afficherScore(score); /* Attend le choix du joueur après le game over */ choixGameOver = attendreChoixGameOver(); if (choixGameOver == 1) { /*Réinitialiser le jeu*/ longueur = 10; score = 0; vitesse = 28000000; initialiserSerpent(serpent, &longueur); dessinerGrille(); pomme = creerPomme(); dessinerPomme(pomme); placerObstacle(obstacles, nombreObstacles, LARGEUR_GRILLE, HAUTEUR_GRILLE); } else if (choixGameOver == 2) { FermerGraphique(); } } } /*Dessiner le serpent et les obstacles*/ dessinerSerpent(serpent, &longueur); for (j = 0; j < nombreObstacles; j++) { dessinerObstacle(obstacles[j]); } afficherScore(score); update_timer(&min, &sec); /*Attendre en fonction de la vitesse actuelle*/ attendreSerpent(vitesse); } free(obstacles); }