рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдпрд╣ рдПрд╕рдбреАрдПрд▓ 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(); }
рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рдЕрд▓рд╡рд┐рджрд╛ рдХрд╣рддрд╛ рд╣реВрдБ, рд╕рдмрдХреЛ рдЕрд▓рд╡рд┐рджрд╛!
<< рдкрд┐рдЫрд▓рд╛ рдкрд╛рда || рдЕрдЧрд▓рд╛ рдкрд╛рда
>>