SDL 2 рдкрд╛рда: рдкрд╛рда 3 - рдШрдЯрдирд╛рдПрдБ

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдпрд╣ рдПрд╕рдбреАрдПрд▓ 2 рдореЗрдВ рддреАрд╕рд░рд╛ рдкрд╛рда рд╣реИред рдЗрд╕ рд╕реНрд░реЛрдд рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд▓реА рдЧрдИ рд╣реИред рдореИрдВ Lasy Foo 'рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦреВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд╕рд╛рдордЧреНрд░реА рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИ ред

рдФрд░ рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдкрд╛рда рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ

рдШрдЯрдирд╛рдУрдВ


рдЖрдЬ рд╣рдо рдЬреЙрди рдХреА рдорджрдж рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рд┐рдЦрд╛рдПрдВрдЧреЗред

рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдПрд╕рдбреАрдПрд▓ 2 рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ рдФрд░ 3 рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдФрд░ 2 рд╕реНрдерд┐рд░рд╛рдВрдХ рдмрдирд╛рдПрдВред

#include <SDL2/SDL.h> const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; SDL_Window *win = NULL; SDL_Surface *scr = NULL; SDL_Surface *john = NULL; 

рдЕрдЧрд▓рд╛, рд╣рдо рдкрд┐рдЫрд▓реЗ рдкрд╛рда рд╕реЗ рдЬреНрдЮрд╛рдд 3 рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

Init
 int init() { if (SDL_Init(SDL_INIT_VIDEO) != 0) { std::cout << "Can't init: " << SDL_GetError() << std::endl; system("pause"); return 1; } win = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (win == NULL) { std::cout << "Can't create window: " << SDL_GetError() << std::endl; system("pause"); return 1; } scr = SDL_GetWindowSurface(win); return 0; } 

рднрд╛рд░
 int load() { john = SDL_LoadBMP("john.bmp"); if (john == NULL) { std::cout << "Can't load image: " << SDL_GetError() << std::endl; system("pause"); return 1; } return 0; } 

рдЫреЛрдбрд╝рдирд╛
 int quit() { SDL_FreeSurface(john); SDL_DestroyWindow(win); SDL_Quit(); return 0; } 


рдзреНрдпрд╛рди рджреЗрдВ (!), рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реЗ рдкрд╛рда рд╕реЗ рдХреЛрдб рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореБрд╕реНрдХрд╛рди рдХреЛ рдЬреЙрди рдореЗрдВ рдмрджрд▓рдирд╛ рди рднреВрд▓реЗрдВред

рдпрд╣ рд╕рдм рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдореИрдВрдиреЗ рдЖрд░рдВрднреАрдХрд░рдг рдФрд░ рдЫрд╡рд┐ рд▓реЛрдбрд┐рдВрдЧ рдЪрд░рдг рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рддреЛ, рдЪрд▓реЛ рдЬрд╛рд░реА рд░рдЦреЗрдВред рдореБрдЦреНрдп рдЦреЛрд▓реЗрдВ рдФрд░ Init рдФрд░ Load рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВред

 int main (int argc, char ** args) { if (init() == 1) { return 1; } if (load() == 1) { return 1; } } 

рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо (Google Chrome, Paint, Minecraft) рдореЗрдВ рдПрдХ рдореБрдЦреНрдп рд▓реВрдк рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрдИ рдмрд╛рд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рдпрд╣ рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдкрд╣рд▓реЗ, рд╣рдордиреЗ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрд╛ рдерд╛ рдЬрд┐рд╕рдореЗрдВ рд╕рд┐рд░реНрдл 2 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдореБрд╕реНрдХреБрд░рд╛рд╣рдЯ рджрд┐рдЦрд╛рдИ рдЧрдИ рдереА, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЬрд╡рд╛рдм рдХреИрд╕реЗ рджреЗрдВ (рдпрд╛ рдЫрд╡рд┐ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ), рдЗрд╕рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рджреЗрд░ рдХрд╛ рд▓реВрдк рдЪрд╛рд╣рд┐рдПред

рдЗрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдШрдЯрдирд╛рдУрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЧреНрд▓рд╛рди рдЪрдХреНрд░ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдЗрдП рдХреБрдЫ рдЪрд░ рдмрдирд╛рдПрдВред

  bool run = true; SDL_Event e; SDL_Rect r; int x = 0; int y = 0; rx = x; ry = y; 

рдЕрдм рд╣рдо рд╕рдм рдХреБрдЫ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЯрд╛рдЗрдк рдмреВрд▓рд┐рдпрди рдХрд╛ рд░рди рд╡реИрд░рд┐рдПрдмрд▓ рдмрдирд╛рдПрдВред рдпрд╣ рдЪрд░ рд▓реВрдк рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ: рдЬрдмрдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рд╕рдЪ рд╣реИ , рдЕрдЧрд░ рд╣рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдЪрд░ рдХреЛ рдЧрд▓рдд рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╡рд░реНрдЧ SDL_Event рдХрд╛ рдПрдХ рдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ ред рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдИрд╡реЗрдВрдЯ рдХрд╛ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛, рдЖрдЧреЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╣реЛрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо SDL_Rect рдХреНрд▓рд╛рд╕ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ r рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╣ рдЖрдпрдд рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рддрдм рд╣рдо рдЪрд░ x рдФрд░ y рдкреНрд░рдХрд╛рд░ int рдмрдирд╛рддреЗ рд╣реИрдВред рддреБрд░рдВрдд рдЙрдирдХреЗ рдорд╛рдиреЛрдВ рдХреЛ рд╢реВрдиреНрдп рдкрд░ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рдпреЗ рд╣рдорд╛рд░реЗ рдЪрд░рд┐рддреНрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реЛрдВрдЧреЗред рдЕрдЧрд▓рд╛ рдЖрдЗрдЯрдо, рд╣рдо рдХреНрд░рдорд╢рдГ рдЪрд░ xx рдФрд░ ry рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред rx рдФрд░ ry рдЖрдпрдд r рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВред

рдпрд╣ рдореБрдЦреНрдп рдЪрдХреНрд░ рдХреЛ рдЦреЛрд▓рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

  while (run) { while(SDL_PollEvent(&e) != 0) { if (e.type == SDL_QUIT) { run = false; } if (e.type == SDL_KEYDOWN) { if (e.key.keysym.sym == SDLK_UP) { y -= 1; } if (e.key.keysym.sym == SDLK_DOWN) { y += 1; } if (e.key.keysym.sym == SDLK_RIGHT) { x += 1; } if (e.key.keysym.sym == SDLK_LEFT) { x -= 1; } } } rx = x; ry = y; SDL_FillRect(scr, NULL, SDL_MapRGB(scr -> format, 255, 255, 255)); SDL_BlitSurface(john, NULL, scr, &r); SDL_UpdateWindowSurface(win); } 

рдЗрд╕ рдХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдЪрдХреНрд░ рд╣реИрдВред рдкрд╣рд▓рд╛ рдореБрдЦреНрдп рдПрдХ рдореБрдЦреНрдп рд╣реИ, рдЬреЛ рдЪрд░ рдХреЛ рдЪрд▓рд╛рдХрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рд▓реВрдк рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

SDL_PollEvent () рдлрд╝рдВрдХреНрд╢рди рдореБрдЦреНрдп рд▓реВрдк рдХреЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдШрдЯрдирд╛рдУрдВ рдХреА рдХрддрд╛рд░ рдХреЛ рдЦреЛрд▓рддрд╛ рд╣реИ, рдЕрдВрддрд┐рдо рдИрд╡реЗрдВрдЯ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдИрд╡реЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпрд╣ рдИ рд╣реИ ред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди 0, NULL рдпрд╛ рдЧрд▓рдд рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдХрддрд╛рд░ рд╕реЗ рд╕рднреА рдИрд╡реЗрдВрдЯ рд╣рдЯрд╛ рджрд┐рдП рдЧрдП рд╣реИрдВ, рддреЛ рд╣рдо рд╕реНрдерд┐рддрд┐ (SDL_PollEvent (& e)! = NULL) рд▓рд┐рдЦрддреЗ рд╣реИрдВ ред

рд╣рдо рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реИрдВ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓рд╛ рдЪреЗрдХ рд╡рд┐рдВрдбреЛ рдлреНрд░реЗрдо рдореЗрдВ рдХреНрд░реЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ e рдХреЗ рдкреНрд░рдХрд╛рд░ рдЪрд░ рдХреЛ SDL_QUIT рдорд╛рди рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╣рдо рд░рди рдЪрд░ рдХреЛ рдЧрд▓рдд рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд▓реВрдк рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдХреАрдмреЛрд░реНрдб рдХреАрд╕реНрдЯреНрд░реЛрдХ рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦрд╛ред рдпрджрд┐ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ e.type рдЪрд░ SDL_KEYDOWN рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдЕрдЧрд▓рд╛, рдкреНрд░рдореБрдЦ рдорд╛рдиреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдЪрд░ e.key.keysym.sym рдмрдЯрди рдХрд╛ рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдорд╛рди рдХреА рддреБрд▓рдирд╛ рд╡рд╛рдВрдЫрд┐рдд рдХреЗ рд╕рд╛рде рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдЬреЙрди рдХреЗ рд╕рдордиреНрд╡рдп рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗред рдпрджрд┐ рдКрдкрд░ рддреАрд░ рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ y 1 рд╕реЗ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдиреАрдЪреЗ, рдпрд╣ рдмрдврд╝рддрд╛ рд╣реИ, рдЖрджрд┐ рдмрд┐рдВрджреБ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВред

рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж, рдЖрджрдореА рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП rx рдФрд░ ry рдХреЛ рдкреБрди: рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рдЕрдЧрд▓рд╛, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рдлрд╝рдВрдХреНрд╢рди SDL_FilRect рд▓рд┐рдЦрддреЗ рд╣реИрдВ , рдЗрд╕рдХреА рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реА рднреВрдорд┐рдХрд╛ рд╣реИред рдпрджрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реЛрддрд╛, рддреЛ рдЬреЙрди рдиреЗ рдЖрдВрджреЛрд▓рди рдкрд░ рдПрдХ рдмрджрд╕реВрд░рдд рдирд┐рд╢рд╛рди рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реЛрддрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рд░ рдлреНрд░реЗрдо рдореЗрдВ рд╣рдо рдПрдХ рд╕рдлреЗрдж рдкреГрд╖реНрдарднреВрдорд┐ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХреЗ рдКрдкрд░ рдПрдХ рдкреНрд░реЗрдд рдмрдирд╛рддреЗ рд╣реИрдВред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рдирд╛рдпрдХ рдХреЛ SDL_BlitSurface рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреЗ рдЖрдпрдд r , рдпрд╛ рдЗрд╕рдХреЗ рдЪрд░ x рдФрд░ y рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рди рдХреЗрд╡рд▓ рдКрдкрд░ рдмрд╛рдИрдВ рдУрд░, рдмрд▓реНрдХрд┐ рдХреБрдЫ рдЕрдиреНрдп рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рдеред рдЕрдЧрд▓рд╛, рдмрд╕ рд╡рд┐рдВрдбреЛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред

рдореБрдЦреНрдп рд▓реВрдк рдХреЗ рдмрд╛рдж, рд╡рд╛рдкрд╕реА рд╡рд╛рдкрд╕реА рд▓рд┐рдЦреЗрдВ (); рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдмрд╕, рдпрд╣реА рд╕рдмрдХ рдЦрддреНрдо рд╣реБрдЖред рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдХреЛрдб рд╣реИ:

рдХреЛрдб
 #include <SDL2/SDL.h> #include <iostream> const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 480; SDL_Window *win = NULL; SDL_Surface *scr = NULL; SDL_Surface *john = NULL; int init() { if (SDL_Init(SDL_INIT_VIDEO) != 0) { std::cout << "Can't init: " << SDL_GetError() << std::endl; system("pause"); return 1; } win = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (win == NULL) { std::cout << "Can't create window: " << SDL_GetError() << std::endl; system("pause"); return 1; } scr = SDL_GetWindowSurface(win); return 0; } int load() { john = SDL_LoadBMP("john.bmp"); if (john == NULL) { std::cout << "Can't load image: " << SDL_GetError() << std::endl; system("pause"); return 1; } return 0; } int quit() { SDL_FreeSurface(john); SDL_DestroyWindow(win); SDL_Quit(); return 0; } int main (int argc, char ** args) { if (init() == 1) { return 1; } if (load() == 1) { return 1; } bool run = true; SDL_Event e; SDL_Rect r; int x = 0; int y = 0; rx = x; ry = y; while (run) { while(SDL_PollEvent(&e) != NULL) { if (e.type == SDL_QUIT) { run = false; } if (e.type == SDL_KEYDOWN) { if (e.key.keysym.sym == SDLK_UP) { y -= 1; } if (e.key.keysym.sym == SDLK_DOWN) { y += 1; } if (e.key.keysym.sym == SDLK_RIGHT) { x += 1; } if (e.key.keysym.sym == SDLK_LEFT) { x -= 1; } } } rx = x; ry = y; SDL_FillRect(scr, NULL, SDL_MapRGB(scr -> format, 255, 255, 255)); SDL_BlitSurface(john, NULL, scr, &r); SDL_UpdateWindowSurface(win); } return quit(); } 


рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рдЕрд▓рд╡рд┐рджрд╛ рдХрд╣рддрд╛ рд╣реВрдБ, рд╕рдмрдХреЛ рдЕрд▓рд╡рд┐рджрд╛!

<< рдкрд┐рдЫрд▓рд╛ рдкрд╛рда || рдЕрдЧрд▓рд╛ рдкрд╛рда >>

Source: https://habr.com/ru/post/hi455577/


All Articles