historique

This commit is contained in:
Tropicananass 2016-05-05 17:24:39 +02:00
parent cfb9a0739f
commit b679c9b7a5
11 changed files with 89 additions and 5 deletions

BIN
bin/hex

Binary file not shown.

3
launcher.sh Normal file
View File

@ -0,0 +1,3 @@
#! /bin/sh
bin/hex

BIN
ressources/.east/Boom.mp3 Normal file

Binary file not shown.

BIN
ressources/.east/Boom.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 KiB

BIN
ressources/.east/Boom.wav Normal file

Binary file not shown.

View File

@ -12,6 +12,7 @@
#include "globals.h"
#include "affichage_menu_principal.h"
#include "sound.h"
#include "SDL/SDL_mixer.h"
void deplacement_menu_mouse (menu_t m, const SDL_Event* event)
{
@ -125,6 +126,73 @@ void deplacement_menu_key (menu_t m, SDLKey key)
play_clik();
}
void boom (SDL_Surface* window)
{
SDL_Surface* tmp = IMG_Load ("ressources/.east/Boom.png");
SDL_Surface* boom = rotozoomSurface(tmp, .0, fmin(window->h / (float)tmp->h, window->w / (float)tmp->w), 1);
SDL_Rect p = {(window->w - boom->w) / 2, (window->h - boom->h) / 2};
SDL_Surface* lum = SDL_CreateRGBSurface (SDL_HWSURFACE, window->w, window->h, window->format->BitsPerPixel, 0, 0, 0, 0);
SDL_FreeSurface(tmp);
tmp = SDL_CreateRGBSurface (SDL_HWSURFACE, window->w, window->h, window->format->BitsPerPixel, 0, 0, 0, 0);
SDL_BlitSurface (window, NULL, tmp, NULL);
Mix_Chunk* boomS = Mix_LoadWAV("ressources/.east/Boom.wav");
Mix_VolumeChunk (boomS, .1 * MIX_MAX_VOLUME);
if (boomS == NULL)
fprintf (stderr, "ressources/.east/Boom.mp3 : %s\n", SDL_GetError());
Mix_PlayChannel(0, boomS, 0);
bool end = false;
int i = 255;
while (i >= 0)
{
if (!(SDL_GetTicks() % 40))
{
SDL_FillRect (window, NULL, SDL_MapRGB (window->format, 0, 0, 0));
SDL_BlitSurface (boom, NULL, window, &p);
Uint32 white = SDL_MapRGB (window->format, 255, 255, 255);
SDL_FillRect (lum, NULL, white);
SDL_SetAlpha(lum, SDL_SRCALPHA, i);
SDL_BlitSurface (lum, NULL, window, NULL);
SDL_Flip (window);
i -= 4;
}
}
Uint32 black = SDL_MapRGB (window->format, 0, 0, 0);
SDL_FillRect (lum, NULL, black);
SDL_SetAlpha(lum, SDL_SRCALPHA, 1);
while (i < 256)
{
if (!(SDL_GetTicks() % 10))
{
SDL_BlitSurface (lum, NULL, window, NULL);
SDL_Flip (window);
i += 1;
}
}
while (!end)
{
SDL_Event e;
SDL_PollEvent (&e);
if (e.type == SDL_QUIT || (e.type == SDL_KEYDOWN && e.key.keysym.sym == SDLK_ESCAPE))
end = true;
}
SDL_BlitSurface (tmp, NULL, window, NULL);
SDL_FreeSurface(tmp);
SDL_FreeSurface(boom);
SDL_FreeSurface(lum);
Mix_FreeChunk (boomS);
}
bool selection_menu (menu_t m, int* r)
{
switch (10 * m->cur.x + m->cur.y)
@ -140,6 +208,7 @@ bool selection_menu (menu_t m, int* r)
*r = M_HEX;
if (m->c == 15)
{
boom (m->window);
m->c = 0;
}
else

View File

@ -14,18 +14,20 @@ int selection (plateau_t p, curseur_t c)
if (0 <= c.x && c.x < NBSIDE && 0 <= c.y && c.y < NBSIDE && p->grid [c.x * NBSIDE + c.y] == 0)
{
p->grid [c.x * NBSIDE + c.y] = PLAYER(p->player);
p->hist [p->nb_coups++] = c.x * NBSIDE + c.y;
p->player = !p->player;
Affiche_hexagon(p, c.x, c.y, PLAYER(p->player));
return testGagne (p->grid, PLAYER(!p->player));
}
return 0;
/*for (int x = 0; x < NBSIDE; ++x)
{
for (int y = 0; y < NBSIDE; ++y)
printf ("%d ", p->grid [y * NBSIDE + x]);
printf ("%d ", p->hist [y * NBSIDE + x]);
printf ("\n");
}
printf ("\n");*/
return 0;
}
void deplacement (plateau_t p, SDL_Event* event, curseur_t* c)

View File

@ -435,6 +435,9 @@ void banane (SDL_Surface* window)
end = true;
}
SDL_BlitSurface (erase, NULL, window, &p);
SDL_Flip (window);
for (int i = 0; i < 8; ++i)
{
SDL_FreeSurface (gif [i]);

View File

@ -125,9 +125,13 @@ plateau_t init_plateau (SDL_Surface* window)
{
plateau_t p = malloc (sizeof (struct s_plateau));
p->grid = malloc (sizeof (int) * NBSIDE * NBSIDE);
for (int x = 0; x < NBSIDE; ++x)
for (int y = 0; y < NBSIDE; ++y)
p->grid [x * NBSIDE + y] = 0;
p->hist = malloc (sizeof (int) * NBSIDE * NBSIDE);
for (int x = 0; x <= NBSIDE * NBSIDE; ++x)
{
p->grid [x] = 0;
p->hist [x] = 0;
}
p->nb_coups = 0;
p->window = window;
p->player = false;
define_rayon(p);

View File

@ -41,6 +41,7 @@ void en_jeu (SDL_Surface* window)
end = selection (plateau, c);
else if (SDLK_UP <= event.key.keysym.sym && event.key.keysym.sym <= SDLK_LEFT)
deplacement(plateau, &event, &c);
east1 (window, event.key.keysym.sym);
break;
case SDL_MOUSEBUTTONUP:
end = selection (plateau, c);

View File

@ -55,6 +55,8 @@ typedef struct s_plateau {
int marge_hori;
SDL_Surface* window;
int *grid;
int *hist;
int nb_coups;
bool player;
}* plateau_t;