#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) { unsigned int display_game = display_user->size_window - display_user->size_menu; int size = display_game / display_user->size_box; unsigned int marge = display_user->size_menu /2; unsigned 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 + marge, 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 (dis display_user) { 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 (); int minus_mod = (result-50) % display_user.size_box; //printf("DIS :%d, size : %d ,mod : %d\n",result, size_box,minus_mod); return (result - 50 - minus_mod); // 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); }