рдПрд╕рдбреАрдПрд▓ 2 рд╕рдмрдХ: рдкрд╛рда 2 - рдореБрдЦреНрдп рдЧреИрд░-рд░рдмрд░

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдпрд╣ рдореЗрд░рд╛ рджреВрд╕рд░рд╛ SDL 2 рд╕рдмрдХ рд╣реИред рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣рд╛рдБ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рддреА рд╣реИ ред

рдЗрд╕рд▓рд┐рдП, рдкрд╛рда рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ

рдореБрдЦреНрдп рд░рдмрд░ рдирд╣реАрдВ рд╣реИ


рдЕрдВрддрд┐рдо рдкрд╛рда рдореЗрдВ, рдореИрдВрдиреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдм рдХреБрдЫ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдмрдбрд╝реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕реАрд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдЕрдм рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рд╣рдо рдПрдХ SDL рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдФрд░ рдХрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред

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

рдпрд╣рд╛рдВ рд╣рдо рдореЗрди () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ рдШреЛрд╖рд┐рдд рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ ( рдЬреАрдд ), рд╕реНрдХреНрд░реАрди рд╕рд░рдлреЗрд╕ ( рд╕реНрдХреНрд░реИрдЪ ) рдФрд░ рдЗрд╕ рдЗрдореЛрдЯрд┐рдХреЙрди ( рд╕реНрдорд╛рдЗрд▓ ) рдХреА рдЫрд╡рд┐ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред

рдПрд╕рдбреАрдПрд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрдВрдХреНрд╢рди рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдВрдбреЛ рдФрд░ рд╕рд░рдлреЗрд╕ рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

Init ()
 int init() { if (SDL_Init(SDL_INIT_VIDEO) != 0) { return 1; } win = SDL_CreateWindow("Main  ", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (win == NULL) { return 1; } scr = SDL_GetWindowSurface(win); return 0; } 

рдпрд╣ рдХреЛрдб рдЖрдкрдХреЛ рдкрд┐рдЫрд▓реЗ рдкрд╛рда рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ рд╣рдордиреЗ рд╡реАрдбрд┐рдпреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛, "рдореЗрди рд░рдмрд░ рдирд╣реАрдВ рд╣реИ" рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдИ, рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЖрдпрд╛рдореЛрдВ рдХреЗ рд╕рд╛рде, рдФрд░ рдЗрд╕реЗ рд╡рд┐рдВрдбреЛ рдХреА рд╕рддрд╣ рднреА рдорд┐рд▓реА, рдЗрд╕реЗ рд╕реНрдХреНрд░реИрдЪ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ред рддреНрд░реБрдЯрд┐ рдкрд░, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди 1 рд▓реМрдЯрд╛рдПрдЧрд╛, рдЕрдиреНрдпрдерд╛ 0ред

рдЕрдм рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдореАрдбрд┐рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ:

рд▓реЛрдб ()
 int load() { smile = SDL_LoadBMP("smile.bmp"); if (smile == NULL) { return 1; } return 0; } 

рдпрд╣ рд╕рдорд╛рд░реЛрд╣ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИред рд╣рдо SDL_LoadBMP рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ .bmp рдЫрд╡рд┐ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓ (рдкреВрд░реНрдг рдпрд╛ рд░рд┐рд╢реНрддреЗрджрд╛рд░) рдХреЗ рд▓рд┐рдП рдкрде рд▓реЗрддрд╛ рд╣реИ, рдФрд░ SDL_Surface рд╡рд░реНрдЧ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рджреЗрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╢реБрджреНрдзрддрд╛ рдХреА рднреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП: рдпрджрд┐ рдбрд╛рдЙрдирд▓реЛрдб (рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдорд┐рд▓реА, рдЯреВрдЯреА рд╣реБрдИ рдлрд╝рд╛рдЗрд▓) рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдереАрдВ, рддреЛ SDL_LoadBMP рдлрд╝рдВрдХреНрд╢рди NULL рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛ред

рд╣рдо рдЖрд╡реЗрджрди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рднреА рд▓рд┐рдЦрддреЗ рд╣реИрдВред

рдЫреЛрдбрд╝реЛ ()
 void quit() { SDL_FreeSurface(smile); smile = NULL; SDL_DestroyWindow(win); SDL_Quit(); } 

рдПрдХ рдирдпрд╛ SDL_FreeSurface рдлрд╝рдВрдХреНрд╢рди рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ , рдЬреЛ рдмрд╕ рд╕рддрд╣ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЪрд░ рдореБрд╕реНрдХрд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж NULL ред рдЕрдиреНрдп рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдкрд┐рдЫрд▓реЗ рдкрд╛рда рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереАред

рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд▓реЗрдЦрди рдЦрддреНрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╣рдо рдореБрдЦреНрдп () рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдореБрдЦреНрдп ()
 int main (int argc, char ** args) { if (init() == 1) { return 1; } if (load() == 1) { return 1; } SDL_BlitSurface(smile, NULL, scr, NULL); SDL_UpdateWindowSurface(win); SDL_Delay(2000); quit(); return 0; }; 

рдпрд╣рд╛рдБ рд╣рдо рдкрд╣рд▓реЗ init () рдлрдВрдХреНрд╢рди рдХрд╣рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рд▓реЛрдб () рдлрдВрдХреНрд╢рди, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рднреА рд▓рд┐рдЦрд╛ рдерд╛ред рдЕрдЧрд▓рд╛, SDL_BlitSurface рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдореБрд╕реНрдХрд╛рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВред рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рддрд╣ рд▓реЗрддрд╛ рд╣реИ, рдПрдХ рдЖрдпрдд рдЬрд┐рд╕реЗ рдЗрд╕ рд╕рддрд╣ рд╕реЗ рдХрд╛рдЯрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╣ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ), рдЕрдЧрд░ рдХреБрдЫ рднреА рдХрд╛рдЯрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рддреЛ NULL рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣ рд╕рддрд╣ рдЬрд┐рд╕ рдкрд░ рдЖрдпрдд рдЦреАрдВрдЪреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╢реВрдиреНрдп рд╣реИрдВ, рддреЛ рд╣рдо NULL рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред

рдпрд╣ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдПрд╕рдбреАрдПрд▓ рдПрдХ рдЕрд▓рдЧ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (0, 0) рдХреЗ рд╕рд╛рде рдмрд┐рдВрджреБ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рд╣реИред рдЕрдкреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдЦреИрд░, рдпрд╣ рдордЬреЗрджрд╛рд░ рдерд╛, рд╣рдо рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рдЪрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ 2 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдлреНрд░реАрдЬ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдордиреЗ рдЬреЛ рд▓рд┐рдЦрд╛ рдерд╛ рдЙрд╕реЗ рдЫреЛрдбрд╝реЗрдВ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред рдЖрдЙрдЯрдкреБрдЯ рдкрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ 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 *smile = NULL; int init() { if (SDL_Init(SDL_INIT_VIDEO) != 0) { return 1; } win = SDL_CreateWindow("Main  ", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (win == NULL) { return 1; } scr = SDL_GetWindowSurface(win); return 0; } int load() { smile = SDL_LoadBMP("smile.bmp"); if (smile == NULL) { return 1; } return 0; } void quit() { SDL_FreeSurface(smile); SDL_DestroyWindow(win); SDL_Quit(); } int main (int argc, char ** args) { if (init() == 1) { return 1; } if (load() == 1) { return 1; } SDL_BlitSurface(smile, NULL, scr, NULL); SDL_UpdateWindowSurface(win); SDL_Delay(2000); quit(); return 0; }; 

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдерд╛ред рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!

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

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


All Articles