Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * main.c
- *
- * Created on: 26 nov. 2018
- * Author: José Mennesson
- */
- #include "ressources.h"
- #include "game.h"
- #include "ghost.h"
- #include "pakuman.h"
- //////////////////////////////////////////////////////////////////////////
- ///// IL FAUT MODIFIER CE FICHIER //////
- //////////////////////////////////////////////////////////////////////////
- int main(int argc, char** argv){
- // Déclaration des variables
- int direction=RIGHT;
- SDL_Renderer *ren;
- SDL_Window *win;
- int precTime = 0, currTime = 0;
- int gameOver=0;
- int mapWidth=19;
- int mapHeight=21;
- Game g;
- int map[MAP_HEIGHT_MAX][MAP_WIDTH_MAX]={
- {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
- {1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,1},
- {1,2,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,2,1},
- {1,3,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,3,1},
- {1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1},
- {1,2,1,1,2,1,2,1,1,1,1,1,2,1,2,1,1,2,1},
- {1,2,2,2,2,1,3,2,2,1,2,2,3,1,2,2,2,2,1},
- {1,1,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,1,1},
- {1,1,1,1,2,1,0,0,0,0,0,0,0,1,2,1,1,1,1},
- {1,1,1,1,2,1,0,1,1,0,1,1,0,1,2,1,1,1,1},
- {1,1,1,1,2,2,0,1,0,0,0,1,0,2,2,1,1,1,1},
- {1,1,1,1,2,1,0,1,1,1,1,1,0,1,2,1,1,1,1},
- {1,1,1,1,2,1,0,0,0,0,0,0,0,1,2,1,1,1,1},
- {1,1,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,1,1},
- {1,2,2,2,2,1,3,2,2,1,2,2,3,1,2,2,2,2,1},
- {1,2,1,1,2,1,2,1,1,1,1,1,2,1,2,1,1,2,1},
- {1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1},
- {1,3,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,3,1},
- {1,2,1,1,2,1,1,1,2,1,2,1,1,1,2,1,1,2,1},
- {1,2,2,2,2,2,2,2,2,1,2,2,2,2,2,2,2,2,1},
- {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
- //////////////////////////////////// INITIALISATION
- // Initialisation du jeu
- g = init_game(&ren, &win, mapWidth, mapHeight);
- // Initialisation de la map du jeu
- g.myMap = initMAP(map, mapWidth, mapHeight);
- // Initialisation du pakuman et des fantomes du jeu
- g.PakuMan = pakumanInit(ELT_SIZE * 1, ELT_SIZE * 1, RIGHT, PAKU_SIZE);
- g.Ghost1 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
- g.Ghost2 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
- g.Ghost3 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
- g.Ghost4 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
- displayStartPanel(g, ren);
- pauseBloquante();
- //////////////////////////////////// DEBUT DU JEU
- while (!gameOver){
- // Récupérer le nombre de millisecondes depuis le lancement du programme dans le temps courant
- currTime = getCurrentTimeMilliSec();
- // Récupérer les actions de la souris et du clavier pour changer la direction du pacman
- processKeyboardNMouse(&direction,&gameOver);
- // Déplacement des personnages présents dans le jeu g suivant leur nouvelle direction
- pakumanMove(&g.PakuMan, map, direction, g.screenWidth, g.screenHeight);
- ghostMoveAleat(&g.Ghost1,map, g.screenWidth, g.screenHeight);
- ghostMoveAleat(&g.Ghost2,map, g.screenWidth, g.screenHeight);
- ghostMoveAleat(&g.Ghost3,map, g.screenWidth, g.screenHeight);
- ghostMoveAleat(&g.Ghost4,map, g.screenWidth, g.screenHeight);
- // On récupére la chose mangée éventuellement par le pakuman
- pakumanEatSomething(g.PakuMan,map);
- // Si c'est une Gum
- if(pakumanEatSomething(g.PakuMan,map) == 1) {
- // on incrémente le nombre de points en conséquence
- g.score += 10;
- }
- // Si c'est une BigGum
- if(pakumanEatSomething(g.PakuMan,map) == 1) {
- // on incrémente le nombre de points en conséquence
- g.score += 50;
- }
- // Si c'est une cerise
- if(pakumanEatSomething(g.PakuMan,map) == 1) {
- // on incrémente le nombre de points en conséquence
- g.score += 100;
- }
- // Si PakuMan meurt en rentrant en collision avec un des 4 fantomes,
- if(pakumanGhostCollision(g.PakuMan,g.Ghost1)||pakumanGhostCollision(g.PakuMan,g.Ghost2)||pakumanGhostCollision(g.PakuMan,g.Ghost3)||pakumanGhostCollision(g.PakuMan,g.Ghost4)) {
- //on décrémente les vies du pakuman de 1
- g.life -= 1;
- //on réinitialise le pakuMan et des fantomes
- g.PakuMan = pakumanInit(ELT_SIZE * 1, ELT_SIZE * 1, RIGHT, PAKU_SIZE);
- g.Ghost1 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
- g.Ghost2 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
- g.Ghost3 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
- g.Ghost4 = ghostInit(9 * ELT_SIZE, 10 * ELT_SIZE, UP, GHOST_SIZE);
- }
- // Si le temps écoulé est supérieur à 1 seconde (1000 millisecondes)
- if ((currTime-precTime)>1000) {
- //On décrémente le compte à rebours de 1
- g.countdown--;
- //Le temps précédent devient le temps courant
- precTime = currTime;
- // Toutes les 30 secondes, on met aléatoirement une cerise sur le plateau
- if(g.countdown%30 == 0){
- putRandomCherry(&g.myMap);
- }
- }
- // vide le contenu du rendu
- clearRenderer(ren);
- // Mettre le panneau des scores dans le rendu
- addScorePanelToRenderer(g,ren);
- // Mettre la map dans le rendu
- addMapToRenderer(g.myMap,ren);
- // Mettre les personnages dans le rendu
- addPakumanToRenderer(g.PakuMan,ren);
- addGhostToRenderer(g.Ghost1, 1, ren);
- addGhostToRenderer(g.Ghost2, 2, ren);
- addGhostToRenderer(g.Ghost3, 3, ren);
- addGhostToRenderer(g.Ghost4, 4, ren);
- //On met à jour l'affichage à partir du rendu
- updateDisplay(ren);
- // Si le temps est écoulé ou si le nombre de vies de PakuMan est égal à 0
- if (g.countdown == 0 || g.life == 0) {
- // c'est la fin du jeu
- gameOver = 1;
- }
- // On fait une micro pause de 10 millisecondes
- pause(10);
- }
- // on affiche l'écran de fin de jeu
- displayEndPanel(g,ren);
- // On libère la mémoire et on ferme la bibliothèque graphique
- quitGame(&ren,&win);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement