From 0dbff62274ae402d578e1e0cab5d63692483665f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?L=C3=A9na=C3=AFg=20Le=20Moigne?=
 <lenaig.le-moigne@insa-rennes.fr>
Date: Fri, 29 Apr 2016 18:20:24 +0200
Subject: [PATCH] =?UTF-8?q?Premi=C3=A8re=20=C3=A9bauche=20de=20la=20mise?=
 =?UTF-8?q?=20au=20point=20de=20l'=C3=A9cran=20d'accueil.=20A=20regarder?=
 =?UTF-8?q?=20par=20Henry?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ElderInternalIgnition/SDL_lena_pour_henry.c | 373 ++++++++++++++++++++
 1 file changed, 373 insertions(+)
 create mode 100644 ElderInternalIgnition/SDL_lena_pour_henry.c

diff --git a/ElderInternalIgnition/SDL_lena_pour_henry.c b/ElderInternalIgnition/SDL_lena_pour_henry.c
new file mode 100644
index 0000000..f089ddd
--- /dev/null
+++ b/ElderInternalIgnition/SDL_lena_pour_henry.c
@@ -0,0 +1,373 @@
+#include <stdlib.h>
+#include <SDL/SDL.h>
+#include "structures.h"
+#include "partie.h"
+#include "joueur.h"
+#include "joueurList.h"
+#include "personnage.h"
+#include "case.h"
+#include "deplacements.h"
+#include "SDL.h"
+#include "controleurSDL.h"
+
+
+/*!
+* \file SDL.c
+* \brief Fichier contenant le code des fonctions liees à l'affichage par la SDL.
+*/
+
+/*!
+ * \fn int main_SDL(char* Map)
+ * \brief fonction qui gère l'affichage
+ *
+ * \param la carte au format texte (une lettre = une case)
+ */
+
+int main_SDL(char* Map)
+{
+    int i,j,affichermenu;
+    SDL_Surface* ecran=NULL;
+    SDL_Event event;
+    SDL_Surface* guerrier=NULL;
+    SDL_Surface* mage=NULL;
+    SDL_Surface* voleur=NULL;
+    SDL_Surface* archer=NULL;
+    SDL_Surface* guerisseur=NULL;
+    SDL_Surface* plaine=NULL;
+    SDL_Surface* eau=NULL;
+    SDL_Surface* montagne=NULL;
+    SDL_Surface* foret=NULL;
+    SDL_Surface* bouton_entrer_royaume=NULL;
+    SDL_Surface* bouton_continuer=NULL;
+    SDL_Surface* bouton_quitter=NULL;
+    SDL_Surface* Case_brillante=NULL;
+    SDL_Surface* Guerrier_select=NULL;
+    SDL_Rect Position_Case[LARGEUR_CARTE*HAUTEUR_CARTE];
+    SDL_Rect Position_Perso[NB_PERSO];
+    SDL_Rect Position_Case_brillante;
+    SDL_Rect Position_Guerrier_select;
+    SDL_Rect pos_bouton_entrer_royaume;
+    SDL_Rect pos_bouton_continuer;
+    SDL_Rect pos_bouton_quitter;
+    int x_case_brillante;
+    int y_case_brillante;
+    int x_guerrier_select;
+    int y_guerrier_select;
+    int quitter=0;
+    affichermenu=0;
+    typedef enum{Accueil,Jeu}etat;
+    int Etat = Accueil;
+
+    if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
+    {
+        printf( "Unable to init SDL: %s\n", SDL_GetError() );
+        return 1;
+    }
+
+    ecran = SDL_SetVideoMode(LARGEUR_CARTE*(LARGEUR_CASE+1), HAUTEUR_CARTE*(HAUTEUR_CASE+2), 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
+    if (ecran == NULL) // Si l'ouverture a échoué, on le note et on arrête
+    {
+        fprintf(stderr, "Impossible de charger le mode vidéo : %s\n", SDL_GetError());
+        exit(EXIT_FAILURE);
+    }
+
+    SDL_WM_SetCaption("Elder Internal Ignition",NULL);
+
+    pos_bouton_entrer_royaume.x=(LARGEUR_CARTE*LARGEUR_CASE-LARGEUR_BOUTON)/2;
+    pos_bouton_quitter.x=(LARGEUR_CARTE*LARGEUR_CASE-LARGEUR_BOUTON)/2;
+    pos_bouton_continuer.x=(LARGEUR_CARTE*LARGEUR_CASE-LARGEUR_BOUTON)/2;
+    pos_bouton_entrer_royaume.y=(HAUTEUR_CARTE*HAUTEUR_CASE-HAUTEUR_BOUTON)/2+HAUTEUR_BOUTON;
+    pos_bouton_quitter.y=(HAUTEUR_CARTE*HAUTEUR_CASE-HAUTEUR_BOUTON)/2+HAUTEUR_BOUTON;
+    pos_bouton_continuer.y=(HAUTEUR_CARTE*HAUTEUR_CASE-HAUTEUR_BOUTON)/2-HAUTEUR_BOUTON;
+
+    guerrier = SDL_LoadBMP("../resources/Skins/guerrier.bmp");
+    if (!guerrier)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_SetColorKey(guerrier, SDL_SRCCOLORKEY, SDL_MapRGB(guerrier->format, 0, 0, 255));
+
+    bouton_entrer_royaume = SDL_LoadBMP("../resources/Skins/Entrer_Royaume.bmp");
+    if (!bouton_entrer_royaume)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+
+    bouton_continuer = SDL_LoadBMP("../resources/Skins/continuer.bmp");
+    if (!bouton_continuer)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+
+    bouton_quitter = SDL_LoadBMP("../resources/Skins/quitter.bmp");
+    if (!bouton_continuer)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+
+    mage = SDL_LoadBMP("../resources/Skins/mage.bmp");
+    if (!mage)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_SetColorKey(mage, SDL_SRCCOLORKEY, SDL_MapRGB(mage->format, 0, 0, 255));
+
+    voleur = SDL_LoadBMP("../resources/Skins/voleur.bmp");
+    if (!voleur)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_SetColorKey(voleur, SDL_SRCCOLORKEY, SDL_MapRGB(voleur->format, 0, 0, 255));
+
+
+    archer = SDL_LoadBMP("../resources/Skins/archer.bmp");
+    if (!archer)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_SetColorKey(archer, SDL_SRCCOLORKEY, SDL_MapRGB(archer->format, 0, 0, 255));
+
+    guerisseur = SDL_LoadBMP("../resources/Skins/guerisseur.bmp");
+    if (!guerisseur)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_SetColorKey(guerisseur, SDL_SRCCOLORKEY, SDL_MapRGB(guerisseur->format, 0, 0, 255));
+
+    plaine = SDL_LoadBMP("../resources/Skins/plaine.bmp");
+    if (!plaine)
+        {
+            printf("Unable to load bitmap: %s\n", SDL_GetError());
+            return 1;
+        }
+    SDL_SetColorKey(plaine, SDL_SRCCOLORKEY, SDL_MapRGB(plaine->format, 0, 0, 255));
+
+    eau = SDL_LoadBMP("../resources/Skins/eau.bmp");
+    if (!eau)
+        {
+            printf("Unable to load bitmap: %s\n", SDL_GetError());
+            return 1;
+        }
+    SDL_SetColorKey(eau, SDL_SRCCOLORKEY, SDL_MapRGB(eau->format, 0, 0, 255));
+
+    montagne = SDL_LoadBMP("../resources/Skins/montagne.bmp");
+    if (!montagne)
+        {
+            printf("Unable to load bitmap: %s\n", SDL_GetError());
+            return 1;
+        }
+    SDL_SetColorKey(montagne, SDL_SRCCOLORKEY, SDL_MapRGB(montagne->format, 0, 0, 255));
+
+    foret = SDL_LoadBMP("../resources/Skins/foret.bmp");
+    if (!foret)
+        {
+            printf("Unable to load bitmap: %s\n", SDL_GetError());
+            return 1;
+        }
+    SDL_SetColorKey(foret, SDL_SRCCOLORKEY, SDL_MapRGB(foret->format, 0, 0, 255));
+
+    Case_brillante = SDL_LoadBMP("../resources/Skins/case_brillante.bmp");
+                    if (!Case_brillante)
+                    {
+                        printf("Unable to load bitmap: %s\n", SDL_GetError());
+                        return 1;
+                    }
+    SDL_SetColorKey(Case_brillante, SDL_SRCCOLORKEY, SDL_MapRGB(Case_brillante->format, 0, 0, 255));
+
+    Guerrier_select = SDL_LoadBMP("../resources/Skins/guerrier_select.bmp");
+                    if (!Guerrier_select)
+                    {
+                        printf("Unable to load bitmap: %s\n", SDL_GetError());
+                        return 1;
+                    }
+    SDL_SetColorKey(Guerrier_select, SDL_SRCCOLORKEY, SDL_MapRGB(Guerrier_select->format, 0, 0, 255));
+
+    for(i=0;i<LARGEUR_CARTE;i+=2)
+    {
+        for(j=0;j<HAUTEUR_CARTE;j++)
+            {
+                Position_Case[j*LARGEUR_CARTE+i].x=LARGEUR_CASE*i;
+                Position_Case[j*LARGEUR_CARTE+i].y=HAUTEUR_CASE*j;
+            }
+    }
+    for(i=1;i<LARGEUR_CARTE;i+=2)
+    {
+        for(j=0;j<HAUTEUR_CARTE;j++)
+            {
+                Position_Case[j*LARGEUR_CARTE+i].x=LARGEUR_CASE*i;
+                Position_Case[j*LARGEUR_CARTE+i].y=HAUTEUR_CASE*j+(HAUTEUR_CASE/2);
+            }
+    }
+
+    init_controleur(Position_Case);
+
+    while(quitter==0)
+    {
+        switch(Etat){
+        case Accueil:
+        SDL_WaitEvent(&event);
+        switch(event.type) /* Test du type d'événement */
+            {
+                case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
+                    quitter=1;
+                    break;
+                case SDL_MOUSEBUTTONDOWN:
+                    if(pos_bouton_entrer_royaume.y<event.button.y&&event.button.y<pos_bouton_entrer_royaume.y+LARGEUR_BOUTON){
+                        Etat = 1;;
+                    }
+                    break;
+                case SDL_KEYDOWN:/* Si c'est un événement de type "touche pressée" */
+                    switch(event.key.keysym.sym){
+                        case SDLK_ESCAPE:
+                            affichermenu=0;
+                            break;
+                        default:
+                            quitter=0;
+                    }
+                break;
+            }
+        SDL_BlitSurface(bouton_entrer_royaume,NULL,ecran,&pos_bouton_entrer_royaume);
+        SDL_Flip(ecran);
+
+        break;
+        case Jeu:
+        SDL_WaitEvent(&event);
+        if(affichermenu==1){
+            switch(event.type) /* Test du type d'événement */
+            {
+                case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
+                    quitter=1;
+                    break;
+                case SDL_MOUSEBUTTONDOWN:
+                    if(pos_bouton_continuer.x<event.button.x&&event.button.x<pos_bouton_continuer.x+LARGEUR_BOUTON){
+                        if(pos_bouton_continuer.y<event.button.y&&event.button.y<pos_bouton_continuer.x+HAUTEUR_BOUTON){
+                            affichermenu=0;
+                        }
+                        if(pos_bouton_quitter.y<event.button.y&&event.button.y<pos_bouton_quitter.x+HAUTEUR_BOUTON){
+                            quitter=1;
+                        }
+                    }
+                    break;
+                case SDL_KEYDOWN:/* Si c'est un événement de type "touche pressée" */
+                    switch(event.key.keysym.sym){
+                        case SDLK_ESCAPE:
+                            affichermenu=0;
+                            break;
+                        default:
+                            quitter=0;
+                    }
+                break;
+            }
+        }
+        else{
+            switch(event.type) /* Test du type d'événement */
+            {
+                case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
+                    quitter=1;
+                    break;
+                case SDL_MOUSEBUTTONDOWN:
+                    deplacement_personnage(event.button.x,event.button.y);
+                    break;
+                case SDL_MOUSEMOTION:
+                    if(event.motion.x<LARGEUR_CARTE*LARGEUR_CASE&&event.motion.y<HAUTEUR_CARTE*HAUTEUR_CASE)
+                    {
+                        x_case_brillante = get_position_case_x(deplacement_brillance(event.motion.x,event.motion.y));
+                        y_case_brillante = get_position_case_y(deplacement_brillance(event.motion.x,event.motion.y));
+                    }
+                    break;
+                case SDL_KEYDOWN:/* Si c'est un événement de type "touche pressée" */
+                    switch(event.key.keysym.sym){
+                        case SDLK_n:
+                            persosuivant();
+                            break;
+                        case SDLK_ESCAPE:
+                            affichermenu=1;
+                            break;
+                        default:
+                            quitter=0;
+                    }
+                break;
+            }
+        }
+
+        for(i=0;i<NB_PERSO;i++){
+            Position_Perso[i].x=get_position_perso_x(i);
+            Position_Perso[i].y=get_position_perso_y(i);
+        }
+
+        Position_Case_brillante.x=x_case_brillante;
+        Position_Case_brillante.y=y_case_brillante;
+        x_guerrier_select = get_position_case_x(&Position_Perso[persoactuel()]);
+        y_guerrier_select = get_position_case_y(&Position_Perso[persoactuel()]);
+        Position_Guerrier_select.x=x_guerrier_select;
+        Position_Guerrier_select.y=y_guerrier_select;
+        SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
+        if(affichermenu==0)
+        {
+           for(i=0;i<LARGEUR_CARTE*HAUTEUR_CARTE;i++)
+            {
+                switch(Map[i])
+                {
+                    case 80: //"P" en ASCII
+                        SDL_BlitSurface(plaine,NULL,ecran,&Position_Case[i]);
+                        break;
+                    case 70: //"F" en ASCII
+                        SDL_BlitSurface(foret,NULL,ecran,&Position_Case[i]);
+                        break;
+                    case 69: //"E" en ASCII
+                        SDL_BlitSurface(eau,NULL,ecran,&Position_Case[i]);
+                        break;
+                    case 77: //"M" en ASCII
+                        SDL_BlitSurface(montagne,NULL,ecran,&Position_Case[i]);
+                        break;
+                    default:
+                        quitter=0;
+                }
+
+            }
+            for(i=0;i<NB_PERSO;i++)
+            {
+                SDL_BlitSurface(guerrier,NULL,ecran,&Position_Perso[0]);
+                SDL_BlitSurface(mage,NULL,ecran,&Position_Perso[1]);
+                SDL_BlitSurface(archer,NULL,ecran,&Position_Perso[2]);
+            }
+            SDL_BlitSurface(Guerrier_select,NULL,ecran,&Position_Guerrier_select);
+            SDL_BlitSurface(Case_brillante,NULL,ecran,&Position_Case_brillante);
+        }else{
+            SDL_BlitSurface(bouton_continuer,NULL,ecran,&pos_bouton_continuer);
+            SDL_BlitSurface(bouton_quitter,NULL,ecran,&pos_bouton_quitter);
+        }
+
+        SDL_Flip(ecran);
+
+        break;
+
+        default:
+         break;
+    }
+    }
+    quitter=0;
+    SDL_FreeSurface(guerrier);
+    SDL_FreeSurface(Case_brillante);
+    SDL_FreeSurface(Guerrier_select);
+    SDL_FreeSurface(plaine);
+    SDL_FreeSurface(mage);
+    SDL_FreeSurface(voleur);
+    SDL_FreeSurface(archer);
+    SDL_FreeSurface(guerisseur);
+    SDL_FreeSurface(eau);
+    SDL_FreeSurface(montagne);
+    SDL_FreeSurface(foret);
+    SDL_Quit();
+    return 0;
+}
+
+
-- 
GitLab