#include "display.h" #include "function.h" #include #include #include #include #include #include #include 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) { printf ("%c ", element[tab[i][j]]); } puts (""); } } void screenDisplaySDL (unsigned short int **tab, dis *display_user) { 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) { 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); } 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 } 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); } 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); }