Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.05 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement