Skip to content
Snippets Groups Projects
Commit 9f2a3d1c authored by Montjoie Henri's avatar Montjoie Henri
Browse files

carte en SDL

parent 3e84113c
No related branches found
No related tags found
No related merge requests found
Pipeline #
Showing
with 331 additions and 1 deletion
......@@ -4,4 +4,6 @@ doc
*.depend
*.layout
*.cbp
src/bin
src/obj
No preview for this file type
resources/Cases terrain/eau.bmp

20.3 KiB

resources/Cases terrain/foret1.bmp

20.3 KiB

resources/Cases terrain/foret2.bmp

20.3 KiB

resources/Cases terrain/montagnes-neige.bmp

20.3 KiB

resources/Cases terrain/montagnes-nuages.bmp

20.3 KiB

resources/Cases terrain/montagnes1.bmp

20.3 KiB

resources/Cases terrain/montagnes2.bmp

20.3 KiB

resources/Cases terrain/normal1.bmp

20.3 KiB

resources/Cases terrain/normal2.bmp

20.3 KiB

resources/normal2.bmp

15.2 KiB

resources/personnage.bmp

11.2 KiB

src/SDL.c 0 → 100644
#include <stdlib.h>
#include <SDL/SDL.h>
#define LARGEUR_CARTE 16
#define HAUTEUR_CARTE 10
#define LARGEUR_CASE 53
#define HAUTEUR_CASE 71
#define NB_PERSO 1
int main_SDL()
{
int i;
int j;
SDL_Event event;
SDL_Surface* ecran=NULL;
SDL_Surface* perso[NB_PERSO]={NULL};
SDL_Surface* Case=NULL;
SDL_Rect Position_Case[LARGEUR_CARTE*HAUTEUR_CARTE];
SDL_Rect Position_Perso[NB_PERSO];
int quitter=0;
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 arrte
{
fprintf(stderr, "Impossible de charger le mode vido : %s\n", SDL_GetError());
exit(EXIT_FAILURE);
}
SDL_WM_SetCaption("Elder Internal Ignition",NULL);
SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
perso[0] = SDL_LoadBMP("../resources/personnage.bmp");
if (!perso[0])
{
printf("Unable to load bitmap: %s\n", SDL_GetError());
return 1;
}
SDL_SetColorKey(perso[0], SDL_SRCCOLORKEY, SDL_MapRGB(perso[0]->format, 0, 0, 255));
Case = SDL_LoadBMP("../resources/normal2.bmp");
if (!Case)
{
printf("Unable to load bitmap: %s\n", SDL_GetError());
return 1;
}
SDL_SetColorKey(Case, SDL_SRCCOLORKEY, SDL_MapRGB(Case->format, 0, 0, 255));
for(i=0;i<LARGEUR_CARTE;i+=2)
{
for(j=0;j<HAUTEUR_CARTE;j++)
{
Position_Case[i*HAUTEUR_CARTE+j].x=LARGEUR_CASE*i;
Position_Case[i*HAUTEUR_CARTE+j].y=HAUTEUR_CASE*j;
}
}
for(i=1;i<LARGEUR_CARTE;i+=2)
{
for(j=0;j<HAUTEUR_CARTE;j++)
{
Position_Case[i*HAUTEUR_CARTE+j].x=LARGEUR_CASE*i;
Position_Case[i*HAUTEUR_CARTE+j].y=HAUTEUR_CASE*j+(HAUTEUR_CASE/2);
}
}
Position_Perso[0]=Position_Case[0];
while(quitter==0)
{
SDL_WaitEvent(&event);
switch(event.type) /* Test du type d'vnement */
{
case SDL_QUIT: /* Si c'est un vnement de type "Quitter" */
quitter=1;
break;
case SDL_KEYDOWN:/* Si c'est un vnement de type "touche presse" */
switch(event.key.keysym.sym){
case SDLK_KP7:
if(Position_Perso[0].y>0&&Position_Perso[0].x>0)
{Position_Perso[0].y-=HAUTEUR_CASE/2;
Position_Perso[0].x-=LARGEUR_CASE;}
break;
case SDLK_KP8:
if(Position_Perso[0].y>0)
Position_Perso[0].y-=HAUTEUR_CASE;
break;
case SDLK_KP9:
if((Position_Perso[0].y>0)&&(Position_Perso[0].x<LARGEUR_CASE*(LARGEUR_CARTE-1)))
{Position_Perso[0].y-=HAUTEUR_CASE/2;
Position_Perso[0].x+=LARGEUR_CASE;}
break;
case SDLK_KP1:
if(Position_Perso[0].y<HAUTEUR_CASE*(HAUTEUR_CARTE-1)&&Position_Perso[0].x>0)
{Position_Perso[0].y+=HAUTEUR_CASE/2;
Position_Perso[0].x-=LARGEUR_CASE;}
break;
case SDLK_KP2:
if(Position_Perso[0].y<HAUTEUR_CASE*(HAUTEUR_CARTE-1))
Position_Perso[0].y+=HAUTEUR_CASE;
break;
case SDLK_KP3:
if(Position_Perso[0].y<HAUTEUR_CASE*(HAUTEUR_CARTE-1)&&Position_Perso[0].x<LARGEUR_CASE*(LARGEUR_CARTE-1))
{Position_Perso[0].y+=HAUTEUR_CASE/2;
Position_Perso[0].x+=LARGEUR_CASE;}
break;
case SDLK_ESCAPE:
quitter=1;
break;
default:
quitter=0;
}
break;
}
SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
for(i=0;i<LARGEUR_CARTE*HAUTEUR_CARTE;i++)
{
SDL_BlitSurface(Case,NULL,ecran,&Position_Case[i]);
}
SDL_BlitSurface(perso[0],NULL,ecran,&Position_Perso[0]);
SDL_Flip(ecran);
}
quitter=0;
SDL_FreeSurface(Case);
SDL_FreeSurface(perso[0]);
SDL_Quit();
return 0;
}
int main_Open_Classrooms ()
{
int i;
SDL_Event event;
int continuer=0;
SDL_Surface* ecran=NULL;
SDL_Surface* rectangle=NULL;
SDL_Surface* image=NULL;
SDL_Rect position_image;
SDL_Rect position[256];
for(i=0;i<256;i++)
{
position[i].x=0;
position[i].y=i;
}
SDL_Surface* degrade[256]={NULL};
// initialize SDL video
if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
printf( "Unable to init SDL: %s\n", SDL_GetError() );
return 1;
}
// create a new window
ecran = SDL_SetVideoMode(800, 256, 16,SDL_HWSURFACE|SDL_DOUBLEBUF);
if (ecran == NULL) // Si l'ouverture a chou, on le note et on arrte
{
fprintf(stderr, "Impossible de charger le mode vido : %s\n", SDL_GetError());
exit(EXIT_FAILURE);
}
SDL_WM_SetCaption("fenetre de test",NULL);
SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,200,89,3));
SDL_Flip(ecran);
while(continuer==0)
{
SDL_WaitEvent(&event);
switch(event.type) /* Test du type d'vnement */
{
case SDL_QUIT: /* Si c'est un vnement de type "Quitter" */
SDL_Quit();
exit(0);
break;
case SDL_KEYDOWN:
continuer=1;
break;
}
}
continuer=0;
rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE,400,256,16,0,0,0,0);
SDL_FillRect(rectangle,NULL,SDL_MapRGB(ecran->format,0,127,255));
SDL_BlitSurface(rectangle,NULL,ecran,&position[0]);
SDL_Flip(ecran);
while(continuer==0)
{
SDL_WaitEvent(&event);
switch(event.type) /* Test du type d'vnement */
{
case SDL_QUIT: /* Si c'est un vnement de type "Quitter" */
SDL_FreeSurface(rectangle);
SDL_Quit();
exit(0);
break;
case SDL_KEYDOWN:
continuer=1;
break;
}
}
continuer=0;
for(i=0;i<256;i++)
{
degrade[i]=SDL_CreateRGBSurface(SDL_HWSURFACE,800,1,16,0,0,0,0);
SDL_FillRect(degrade[i],NULL,SDL_MapRGB(ecran->format,i,i,i));
}
for(i=0;i<256;i++)
{
SDL_BlitSurface(degrade[i],NULL,ecran,&position[i]);
}
SDL_Flip(ecran);
while(continuer==0)
{
SDL_WaitEvent(&event);
switch(event.type) /* Test du type d'vnement */
{
case SDL_QUIT: /* Si c'est un vnement de type "Quitter" */
for(i=0;i<256;i++)
{
SDL_FreeSurface(degrade[i]);
}
SDL_FreeSurface(rectangle);
SDL_Quit();
exit(0);
break;
case SDL_KEYDOWN:
continuer=1;
break;
}
}
continuer=0;
for(i=0;i<256;i++)
{
SDL_FreeSurface(degrade[i]);
}
SDL_FreeSurface(rectangle);
// load an image
image = SDL_LoadBMP("montagnes1.bmp");
if (!image)
{
printf("Unable to load bitmap: %s\n", SDL_GetError());
return 1;
}
SDL_BlitSurface(image,NULL,ecran,&position[0]);
SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,120,250,120));
position_image=position[0];
SDL_Flip(ecran);
SDL_EnableKeyRepeat(10, 10);
while(1)
{
SDL_WaitEvent(&event);
switch(event.type) /* Test du type d'vnement */
{
case SDL_QUIT: /* Si c'est un vnement de type "Quitter" */
SDL_FreeSurface(image);
SDL_Quit();
exit(0);
break;
case SDL_MOUSEBUTTONDOWN:
position_image.x=event.button.x;
position_image.y=event.button.y;
break;
case SDL_KEYDOWN:/* Si c'est un vnement de type "touche presse" */
switch(event.key.keysym.sym){
case SDLK_UP:
if(position_image.y>0)
position_image.y--;
break;
case SDLK_DOWN:
if(position_image.y<256)
position_image.y++;
break;
case SDLK_LEFT:
if(position_image.x>0)
position_image.x--;
break;
case SDLK_RIGHT:
if(position_image.x<800)
position_image.x++;
break;
case SDLK_ESCAPE:
SDL_FreeSurface(image);
SDL_Quit();
exit(0);
break;
default:
;
}
break;
}
SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,120,250,120));
SDL_BlitSurface(image,NULL,ecran,&position_image);
SDL_Flip(ecran);
}
return 0;
}
File added
#ifndef SDL_H_INCLUDED
#define SDL_H_INCLUDED
int main_SDL();
int main_Open_Classrooms ();
#endif
#include <stdio.h>
#include <stdlib.h>
#include "TerrainsXML.h"
Case* Remplir_Terrains(FILE* Terrains_XML_log, const char *filename) /* Remplit le tableau de cases partir du fichier XML */
......
......@@ -4,6 +4,7 @@
#include "classe.h"
#include "case.h"
#include "terrain.h"
#include "SDL.h"
int init_jeu(){ /* cre les diffrents types de terrains, de classes et d'attaques en lisant dans un fichier */
FILE *fichier;
......@@ -17,6 +18,8 @@ int init_jeu(){ /* cr
int main()
{
main_SDL();
/* --------------------------- Test de lecture XML Classes ------------------------------------------------- */
/*
int i = 0;
......@@ -33,7 +36,7 @@ int main()
/* --------------------------- Test de lecture XML Cases ------------------------------------------------- */
Librairie_Terrains("Terrains.xml");
Librairie_Terrains("../resources/Terrains.xml");
/*
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment