encore meilleur
This commit is contained in:
162
display.c
162
display.c
@@ -10,108 +10,110 @@
|
||||
|
||||
void screenDisplay (unsigned short int **tab, int size)
|
||||
{
|
||||
// puts("0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ");
|
||||
char element[7] = { ' ', '#', 'S', '.', '*', '@', '+' };
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
for (int j = 0; j < size; ++j)
|
||||
// puts("0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 ");
|
||||
char element[7] = { ' ', '#', 'S', '.', '*', '@', '+' };
|
||||
for (int i = 0; i < size; ++i)
|
||||
{
|
||||
printf ("%c ", element[tab[i][j]]);
|
||||
for (int j = 0; j < size; ++j)
|
||||
{
|
||||
printf ("%c ", element[tab[i][j]]);
|
||||
}
|
||||
puts ("");
|
||||
}
|
||||
puts ("");
|
||||
}
|
||||
}
|
||||
|
||||
void screenDisplaySDL (unsigned short int **tab, dis *display_user)
|
||||
{
|
||||
int size = display_user->size_window / display_user->size_box;
|
||||
int i, j;
|
||||
int size = display_user->size_window / display_user->size_box;
|
||||
int i, j;
|
||||
|
||||
for (i = 0; i < display_user->size_box; ++i)
|
||||
{
|
||||
for (j = 0; j < display_user->size_box; ++j)
|
||||
for (i = 0; i < display_user->size_box; ++i)
|
||||
{
|
||||
SDL_Surface *img;
|
||||
SDL_Texture *texture;
|
||||
vect pos = { i * size, j * size };
|
||||
switch (tab[j][i])
|
||||
{
|
||||
case EMPTY:
|
||||
img = IMG_Load ("empty.png");
|
||||
break;
|
||||
case WALL:
|
||||
img = IMG_Load ("wall.png");
|
||||
break;
|
||||
case PLAYER:
|
||||
img = IMG_Load ("player.png");
|
||||
break;
|
||||
case TARGET:
|
||||
img = IMG_Load ("target.png");
|
||||
break;
|
||||
case BOX:
|
||||
img = IMG_Load ("box.png");
|
||||
break;
|
||||
case BOX_ON_TARGET:
|
||||
img = IMG_Load ("box_on_target.png");
|
||||
break;
|
||||
case PLAYER_ON_TARGET:
|
||||
img = IMG_Load ("player_on_target.png");
|
||||
break;
|
||||
}
|
||||
texture = SDL_CreateTextureFromSurface (display_user->renderer, img);
|
||||
displayImage (display_user->renderer, texture, pos, size);
|
||||
SDL_FreeSurface (img);
|
||||
SDL_DestroyTexture (texture);
|
||||
for (j = 0; j < display_user->size_box; ++j)
|
||||
{
|
||||
SDL_Surface *img;
|
||||
SDL_Texture *texture;
|
||||
vect pos = { i * size, j * size };
|
||||
switch (tab[j][i])
|
||||
{
|
||||
case EMPTY:
|
||||
img = IMG_Load ("empty.png");
|
||||
break;
|
||||
case WALL:
|
||||
img = IMG_Load ("wall.png");
|
||||
break;
|
||||
case PLAYER:
|
||||
img = IMG_Load ("player.png");
|
||||
break;
|
||||
case TARGET:
|
||||
img = IMG_Load ("target.png");
|
||||
break;
|
||||
case BOX:
|
||||
img = IMG_Load ("box.png");
|
||||
break;
|
||||
case BOX_ON_TARGET:
|
||||
img = IMG_Load ("box_on_target.png");
|
||||
break;
|
||||
case PLAYER_ON_TARGET:
|
||||
img = IMG_Load ("player_on_target.png");
|
||||
break;
|
||||
}
|
||||
texture
|
||||
= SDL_CreateTextureFromSurface (display_user->renderer, img);
|
||||
displayImage (display_user->renderer, texture, pos, size);
|
||||
SDL_FreeSurface (img);
|
||||
SDL_DestroyTexture (texture);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SDL_RenderPresent (display_user->renderer);
|
||||
SDL_RenderPresent (display_user->renderer);
|
||||
}
|
||||
|
||||
int getMaxSize ()
|
||||
{
|
||||
SDL_Init (SDL_INIT_VIDEO); // init if error
|
||||
SDL_DisplayMode display;
|
||||
SDL_GetCurrentDisplayMode (0, &display); // get dim display user
|
||||
int result = 0;
|
||||
if (display.w <= display.h)
|
||||
{
|
||||
result = display.w;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = display.h;
|
||||
}
|
||||
SDL_Quit ();
|
||||
return (result - 50); // margin
|
||||
SDL_Init (SDL_INIT_VIDEO); // init if error
|
||||
SDL_DisplayMode display;
|
||||
SDL_GetCurrentDisplayMode (0, &display); // get dim display user
|
||||
int result = 0;
|
||||
if (display.w <= display.h)
|
||||
{
|
||||
result = display.w;
|
||||
}
|
||||
else
|
||||
{
|
||||
result = display.h;
|
||||
}
|
||||
SDL_Quit ();
|
||||
return (result - 50); // margin
|
||||
}
|
||||
|
||||
void initSDL (dis *display_user)
|
||||
{
|
||||
SDL_Init (SDL_INIT_VIDEO);
|
||||
display_user->window = SDL_CreateWindow (
|
||||
"Sokoman", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
|
||||
display_user->size_window, display_user->size_window, SDL_WINDOW_SHOWN);
|
||||
if (!display_user->window)
|
||||
{
|
||||
SDL_Quit ();
|
||||
perror ("Window null");
|
||||
exit (-1);
|
||||
}
|
||||
SDL_Init (SDL_INIT_VIDEO);
|
||||
display_user->window
|
||||
= SDL_CreateWindow ("Sokoman", SDL_WINDOWPOS_CENTERED,
|
||||
SDL_WINDOWPOS_CENTERED, display_user->size_window,
|
||||
display_user->size_window, SDL_WINDOW_SHOWN);
|
||||
if (!display_user->window)
|
||||
{
|
||||
SDL_Quit ();
|
||||
perror ("Window null");
|
||||
exit (-1);
|
||||
}
|
||||
|
||||
display_user->renderer
|
||||
= SDL_CreateRenderer (display_user->window, -1, SDL_RENDERER_SOFTWARE);
|
||||
if (!display_user->renderer)
|
||||
{
|
||||
SDL_Quit ();
|
||||
perror ("Renderer null");
|
||||
exit (-1);
|
||||
}
|
||||
display_user->renderer
|
||||
= SDL_CreateRenderer (display_user->window, -1, SDL_RENDERER_SOFTWARE);
|
||||
if (!display_user->renderer)
|
||||
{
|
||||
SDL_Quit ();
|
||||
perror ("Renderer null");
|
||||
exit (-1);
|
||||
}
|
||||
}
|
||||
|
||||
void displayImage (SDL_Renderer *renderer, SDL_Texture *texture, vect pos,
|
||||
int size)
|
||||
{
|
||||
SDL_Rect rect = { pos.x, pos.y, size, size };
|
||||
SDL_RenderCopy (renderer, texture, NULL, &rect);
|
||||
SDL_Rect rect = { pos.x, pos.y, size, size };
|
||||
SDL_RenderCopy (renderer, texture, NULL, &rect);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user