daily pastebin goal
7%
SHARE
TWEET

Untitled

a guest Dec 19th, 2018 53 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  * main.c
  3.  *
  4.  *  Created on: 26 nov. 2018
  5.  *      Author: José Mennesson
  6.  */
  7.  
  8. #include "ressources.h"
  9. #include "game.h"
  10. #include "ghost.h"
  11. #include "pakuman.h"
  12.  
  13. //////////////////////////////////////////////////////////////////////////
  14. /////           IL FAUT MODIFIER CE FICHIER                         //////
  15. //////////////////////////////////////////////////////////////////////////
  16.  
  17. int main(int argc, char** argv){
  18.  
  19.     // Déclaration des variables
  20.     int direction=RIGHT;
  21.     SDL_Renderer *ren;
  22.     SDL_Window   *win;
  23.     int precTime = 0, currTime = 0;
  24.     int gameOver=0;
  25.     int mapWidth=19;
  26.     int mapHeight=21;
  27.     Game g;
  28.     int map[MAP_HEIGHT_MAX][MAP_WIDTH_MAX]={
  29.                 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
  30.                 {1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,1},
  31.                 {1,2,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,2,1},
  32.                 {1,3,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,3,1},
  33.                 {1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1},
  34.                 {1,2,1,1,2,1,2,1,1,1,1,1,2,1,2,1,1,2,1},
  35.                 {1,2,2,2,2,1,3,2,2,1,2,2,3,1,2,2,2,2,1},
  36.                 {1,1,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,1,1},
  37.                 {1,1,1,1,2,1,0,0,0,0,0,0,0,1,2,1,1,1,1},
  38.                 {1,1,1,1,2,1,0,1,1,0,1,1,0,1,2,1,1,1,1},
  39.                 {1,1,1,1,2,2,0,1,0,0,0,1,0,2,2,1,1,1,1},
  40.                 {1,1,1,1,2,1,0,1,1,1,1,1,0,1,2,1,1,1,1},
  41.                 {1,1,1,1,2,1,0,0,0,0,0,0,0,1,2,1,1,1,1},
  42.                 {1,1,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,1,1},
  43.                 {1,2,2,2,2,1,3,2,2,1,2,2,3,1,2,2,2,2,1},
  44.                 {1,2,1,1,2,1,2,1,1,1,1,1,2,1,2,1,1,2,1},
  45.                 {1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1},
  46.                 {1,3,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,3,1},
  47.                 {1,2,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,2,1},
  48.                 {1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,1},
  49.                 {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
  50.  
  51.     //////////////////////////////////// INITIALISATION
  52.  
  53.     // Initialisation du jeu
  54. g = init_game(&ren, &win, mapWidth, mapHeight);
  55.  
  56.     // Initialisation de la map du jeu
  57.  
  58.     g.myMap = initMAP(map, mapWidth, mapHeight);
  59.  
  60.     // Initialisation du pakuman et des fantomes du jeu
  61.  
  62.     g.PakuMan = pakumanInit(ELT_SIZE * 1, ELT_SIZE * 1, RIGHT, PAKU_SIZE);
  63.  
  64.     g.Ghost1 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
  65.     g.Ghost2 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
  66.     g.Ghost3 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
  67.     g.Ghost4 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
  68.  
  69.     displayStartPanel(g, ren);
  70.     pauseBloquante();
  71.  
  72.     //////////////////////////////////// DEBUT DU JEU
  73.     while (!gameOver){
  74.         // Récupérer le nombre de millisecondes depuis le lancement du programme dans le temps courant
  75.         currTime = getCurrentTimeMilliSec();
  76.         // Récupérer les actions de la souris et du clavier pour changer la direction du pacman
  77.         processKeyboardNMouse(&direction,&gameOver);
  78.         // Déplacement des personnages présents dans le jeu g suivant leur nouvelle direction
  79.         pakumanMove(&g.PakuMan, map, direction, g.screenWidth, g.screenHeight);
  80.         ghostMoveAleat(&g.Ghost1,map, g.screenWidth, g.screenHeight);
  81.         ghostMoveAleat(&g.Ghost2,map, g.screenWidth, g.screenHeight);
  82.         ghostMoveAleat(&g.Ghost3,map, g.screenWidth, g.screenHeight);
  83.         ghostMoveAleat(&g.Ghost4,map, g.screenWidth, g.screenHeight);
  84.  
  85.  
  86.         // On récupére la chose mangée éventuellement par le pakuman
  87.         pakumanEatSomething(g.PakuMan,map);
  88.         // Si c'est une Gum
  89.         if(pakumanEatSomething(g.PakuMan,map) == 1) {
  90.             // on incrémente le nombre de points en conséquence
  91.             g.score += 10;
  92.         }
  93.  
  94.         // Si c'est une BigGum
  95.         if(pakumanEatSomething(g.PakuMan,map) == 1) {
  96.             // on incrémente le nombre de points en conséquence
  97.             g.score += 50;
  98.         }
  99.  
  100.         // Si c'est une cerise
  101.         if(pakumanEatSomething(g.PakuMan,map) == 1) {
  102.             // on incrémente le nombre de points en conséquence
  103.             g.score += 100;
  104.         }
  105.  
  106.         // Si PakuMan meurt en rentrant en collision avec un des 4 fantomes,
  107.         if(pakumanGhostCollision(g.PakuMan,g.Ghost1)||pakumanGhostCollision(g.PakuMan,g.Ghost2)||pakumanGhostCollision(g.PakuMan,g.Ghost3)||pakumanGhostCollision(g.PakuMan,g.Ghost4)) {
  108.             //on décrémente les vies du pakuman de 1
  109.             g.life -= 1;
  110.             //on réinitialise le pakuMan et des fantomes
  111.             g.PakuMan = pakumanInit(ELT_SIZE * 1, ELT_SIZE * 1, RIGHT, PAKU_SIZE);
  112.  
  113.             g.Ghost1 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
  114.             g.Ghost2 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
  115.             g.Ghost3 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
  116.             g.Ghost4 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
  117.  
  118.         }
  119.  
  120.  
  121.         // Si le temps écoulé est supérieur à 1 seconde (1000 millisecondes)
  122.         if ((currTime-precTime)>1000) {
  123.             //On décrémente le compte à rebours de 1
  124.             g.countdown--;
  125.             //Le temps précédent devient le temps courant
  126.             precTime = currTime;
  127.             // Toutes les 30 secondes, on met aléatoirement une cerise sur le plateau
  128.             if(g.countdown%30 == 0){
  129.                 putRandomCherry(&g.myMap);
  130.             }
  131.         }
  132.  
  133.         //  vide le contenu du rendu
  134.         clearRenderer(ren);
  135.         // Mettre le panneau des scores dans le rendu
  136.         addScorePanelToRenderer(g,ren);
  137.         // Mettre la map dans le rendu
  138.         addMapToRenderer(g.myMap,ren);
  139.         // Mettre les personnages dans le rendu
  140.         addPakumanToRenderer(g.PakuMan,ren);
  141.  
  142.         addGhostToRenderer(g.Ghost1, 1, ren);
  143.         addGhostToRenderer(g.Ghost2, 2, ren);
  144.         addGhostToRenderer(g.Ghost3, 3, ren);
  145.         addGhostToRenderer(g.Ghost4, 4, ren);
  146.  
  147.         //On met à jour l'affichage à partir du rendu
  148.         updateDisplay(ren);
  149.         // Si le temps est écoulé ou si le nombre de vies de PakuMan est égal à 0
  150.         if (g.countdown == 0 || g.life == 0) {
  151.             // c'est la fin du jeu
  152.             gameOver = 1;
  153.         }
  154.  
  155.  
  156.         // On fait une micro pause de 10 millisecondes
  157.         pause(10);
  158.     }
  159.  
  160.     // on affiche l'écran de fin de jeu
  161.     displayEndPanel(g,ren);
  162.     // On libère la mémoire et on ferme la bibliothèque graphique
  163.     quitGame(&ren,&win);
  164.     return 0;
  165. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top