рд▓реЗрдЦрди рд╕реА ++ рдЧреЗрдореНрд╕, рднрд╛рдЧ 2/3 - рд░рд╛рдЬреНрдп-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧрд╣рдо рд╕реА ++, рднрд╛рдЧ 3/3 - рд╢реИрд▓реА рдХреЗ рдХреНрд▓рд╛рд╕рд┐рдХреНрд╕ рдореЗрдВ рдЧреЗрдо рд▓рд┐рдЦрддреЗ рд╣реИрдВрдирдорд╕реНрдХрд╛рд░, рд╣рдмрд╣рд╛рд░!
рд╣рдм рдкрд░ рдЧреЗрдо рдмрдирд╛рдиреЗ рдкрд░ рдХрдИ рд╕рдмрдХ рдирд╣реАрдВ рд╣реИрдВ, рдШрд░реЗрд▓реВ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ?
рдореИрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдкрд╛рда рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдкрдХреЛ рд╕рд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдПрд╕рдбреАрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реА ++ рдореЗрдВ рдЧреЗрдо рдХреИрд╕реЗ рдмрдирд╛рдПрдВ!
рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЬрд╛рдирдирд╛ рд╣реИ
- C ++ рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдЬреНрдЮрд╛рди (рд╣рдо рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ)
- рдзреИрд░реНрдп
рдЗрд╕ рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?
- рд╣рдо рд╕рднреА рдЦреЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдПрдХ рд░реЗрдВрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрд╕рдбреАрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред
рдЕрдЧрд▓реЗ рдкреЛрд╕реНрдЯ рдореЗрдВ рдФрд░ рднреА рдПрдХреНрд╢рди рд╣реЛрдЧрд╛, рдпрд╣ рд╕рд┐рд░реНрдл рддреИрдпрд╛рд░реА рд╣реИ :)
рдХреНрдпреЛрдВ SDL?
рдореИрдВрдиреЗ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдФрд░ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдЪреБрдирд╛ред рджрд░рдЕрд╕рд▓, рд╕рд░реНрдкрд┐рд▓ рдХреЗ 100,000 рдкреБрдирд░реНрдореБрджреНрд░рдг рдХреЗ рд▓рд┐рдП рдУрдкрдирдЬреАрдПрд▓ рдпрд╛ рдбрд╛рдпрд░реЗрдХреНрдЯрдПрдХреНрд╕ рдкрд░ рдкрд╣рд▓реЗ рдкрдврд╝рд╛ рд▓реЗрдЦ рд╕реЗ рдмрд╣реБрдд рд╕рдордп рдмреАрдд рдЬрд╛рдПрдЧрд╛ред
рдЕрдм рдЖрдк рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
1.1ред рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛
рдПрд╕рдбреАрдПрд▓ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
рд╣рдо Visual Studio рдореЗрдВ рдПрдХ Win32 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, SDL рд▓рд┐рдмрд╛рд╕ рдФрд░ рдЗрдВрдХреНрд▓реВрдб рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рддреЛ Google рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛!)
рдорд▓реНрдЯреА-рдмрд╛рдЗрдЯ рдХреИрд░реЗрдХреНрдЯрд░ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ-> рдЧреБрдг-> рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЧреБрдг-> рд╡рд░реНрдг рд╕реЗрдЯ-> рдорд▓реНрдЯреАрдмрд╛рдЗрдЯ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
Main.cpp рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ
#include <Windows.h> int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) { return 0; }
рд╡рд╣ рдЕрднреА рддрдХ рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рд╢рд╡ рдХреЗ рд░рд╛рдЬрд╛ рдФрд░ рднрдЧрд╡рд╛рди - рдЦреЗрд▓ рдХрдХреНрд╖рд╛
Game.h
#ifndef _GAME_H_ #define _GAME_H_ class Game { private: bool run; public: Game(); int Execute(); void Exit(); }; #endif
Game.cpp
#include "Game.h" Game::Game() { run = true; } int Game::Execute() { while(run); return 0; } void Game::Exit() { run = false; }
рд╣рдо рдлрд╝рд╛рдЗрд▓ Project.h рдмрдирд╛рддреЗ рд╣реИрдВ, рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛
#ifndef _PROJECT_H_ #define _PROJECT_H_ #include <Windows.h> #include "Game.h" #endif
рдореБрдЦреНрдп рдмрджрд▓реЗрдВ
#include "Project.h" int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) { Game game; return game.Execute(); }
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдереЛрдбрд╝рд╛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХрд┐рд╕реА рддрд░рд╣ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВред
1.2ред рдЧреНрд░рд╛рдлрд┐рдХреНрд╕
рд╣рдо рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдФрд░ рдЫрд╡рд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдХрдХреНрд╖рд╛рдПрдВ - рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рдмрдирд╛рддреЗ рд╣реИрдВ
Graphics.h
#ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #include "Project.h" #include "Image.h" class Image; class Graphics { private: SDL_Surface* Screen; public: Graphics(int width, int height); Image* NewImage(char* file); Image* NewImage(char* file, int r, int g, int b); bool DrawImage(Image* img, int x, int y); bool DrawImage(Image* img, int x, int y, int startX, int startY, int endX, int endY); void Flip(); }; #endif
Image.h
#ifndef _IMAGE_H #define _IMAGE_H #include "Project.h" class Image { private: SDL_Surface* surf; public: friend class Graphics; int GetWidth(); int GetHeight(); }; #endif
Project.h рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ
#ifndef _PROJECT_H_ #define _PROJECT_H_ #pragma comment(lib,"SDL.lib") #include <Windows.h> #include <SDL.h> #include "Game.h" #include "Graphics.h" #include "Image.h" #endif
SDL_Surface - рдЫрд╡рд┐ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SDL рдХрд╛ рдПрдХ рд╡рд░реНрдЧ
рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
NewImage - рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2 рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд╕рд┐рд░реНрдл рддрд╕реНрд╡реАрд░ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдЙрд╕рдХреЗ рдмрд╛рдж рддрд╕реНрд╡реАрд░ рдХреЛ рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рднреА рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрд┐рддреНрд░ рдореЗрдВ рдПрдХ рд▓рд╛рд▓ рд░рдВрдЧ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рд╣реИ, рддреЛ рдЖрд░ = 255, рдЬреА = 0, рдмреА = 0 рджрд░реНрдЬ рдХрд░реЗрдВ
DrawImage - рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА 2 рд╡рд┐рдХрд▓реНрдкред рдкрд╣рд▓рд╛ рдЪрд┐рддреНрд░ рдкреВрд░рд╛ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдЪрд┐рддреНрд░ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рднрд╛рдЧ рд╣реИред startX, startY - рдЪрд┐рддреНрд░ рдХреЗ рднрд╛рдЧ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХред endX, endY - рдЫрд╡рд┐ рднрд╛рдЧ рдХреЗ рдЕрдВрдд рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХред рдпрджрд┐ рдЪрд┐рддреНрд░ рдПрдЯрд▓рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдбреНрд░рд╛рдЗрдВрдЧ рд╡рд┐рдзрд┐ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдПрдЯрд▓рд╕ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
(рдЫрд╡рд┐ interesnoe.info рд╡реЗрдм рд╕рдВрд╕рд╛рдзрди рд╕реЗ рд▓реА рдЧрдИ рд╣реИ)рдЫрд╡рд┐ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ
рд╡рд╣ рдмрд╕ рдЕрдкрдиреА рд╕рддрд╣ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдирд┐рдЬреА рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╡рд░реНрдЧ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рд╕рддрд╣ рдХреЛ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред
рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ SDL_Surface рдкрд░ рдПрдХ рдЖрд╡рд░рдг рд╣реИред рд╡рд╣ рдЪрд┐рддреНрд░ рдХрд╛ рдЖрдХрд╛рд░ рднреА рджреЗрддрд╛ рд╣реИред
Graphics.cpp
#include "Graphics.h" Graphics::Graphics(int width, int height) { SDL_Init(SDL_INIT_EVERYTHING); Screen = SDL_SetVideoMode(width,height,32,SDL_HWSURFACE|SDL_DOUBLEBUF); } Image* Graphics::NewImage(char* file) { Image* image = new Image(); image->surf = SDL_DisplayFormat(SDL_LoadBMP(file)); return image; } Image* Graphics::NewImage(char* file, int r, int g, int b) { Image* image = new Image(); image->surf = SDL_DisplayFormat(SDL_LoadBMP(file)); SDL_SetColorKey(image->surf, SDL_SRCCOLORKEY | SDL_RLEACCEL, SDL_MapRGB(image->surf->format, r, g, b)); return image; } bool Graphics::DrawImage(Image* img, int x, int y) { if(Screen == NULL || img->surf == NULL) return false; SDL_Rect Area; Area.x = x; Area.y = y; SDL_BlitSurface(img->surf, NULL, Screen, &Area); return true; } bool Graphics::DrawImage(Image* img, int x, int y, int startX, int startY, int endX, int endY) { if(Screen == NULL || img->surf == NULL) return false; SDL_Rect Area; Area.x = x; Area.y = y; SDL_Rect SrcArea; SrcArea.x = startX; SrcArea.y = startY; SrcArea.w = endX; SrcArea.h = endY; SDL_BlitSurface(img->surf, &SrcArea, Screen, &Area); return true; } void Graphics::Flip() { SDL_Flip(Screen); SDL_FillRect(Screen,NULL, 0x000000); }
рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдПрд╕рдбреАрдПрд▓ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕реНрдХреНрд░реАрди рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред
рдлреНрд▓рд┐рдк рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рд░ рдмрд╛рд░ рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд░рд┐рдгрд╛рдореА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдЧреЗ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдХреЛ рдХрд╛рд▓реЗ рд░рдВрдЧ рдореЗрдВ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИред
рдмрд╛рдХреА рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдереЛрдбрд╝реА рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЦреБрдж рдХреЛ рд╕рдордЭрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ
Image.cpp
#include "Image.h" int Image::GetWidth() { return surf->w; } int Image::GetHeight() { return surf->h; }
рдирд╣реАрдВ, рдЖрдк рд╕рдм рдХреБрдЫ рд╕рд╣реА рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдлрд╛рдЗрд▓ рдЗрд╕ рддрд░рд╣ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП :)
Game.h, Game.cpp рдФрд░ main.cpp рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
Game.h
#ifndef _GAME_H_ #define _GAME_H_ #include "Project.h" class Graphics; class Game { private: bool run; Graphics* graphics; public: Game(); int Execute(int width, int height); void Exit(); }; #endif
рдпрд╣рд╛рдВ рд╣рдо рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдПрдХреНрд╕рдХреНрдпреВрдЯ рдореЗрдВ рд╣рдо рдПрдХ рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ
Game.cpp
#include "Game.h" Game::Game() { run = true; } int Game::Execute(int width, int height) { graphics = new Graphics(width,height); while(run); SDL_Quit(); return 0; } void Game::Exit() { run = false; }
рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ, рдмрд╕ SDL_Quit рдлрд╝рдВрдХреНрд╢рди рдХреЛ SDL рдХреЛ рдЦрд╛рд▓реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрдВ
main.cpp
#include "Project.h" int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) { Game game; return game.Execute(500,350); }
рдпрд╣рд╛рдВ рд╣рдо 500 рд╕реЗ 350 рддрдХ рдХреА рд╕реНрдХреНрд░реАрди рдорд╛рдкрддреЗ рд╣реИрдВред
1.3ред рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐
рд╣рдореЗрдВ рдХреАрдмреЛрд░реНрдб рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
Input.h рдмрдирд╛рдПрдБ
#ifndef _INPUT_H_ #define _INPUT_H_ #include "Project.h" class Input { private: SDL_Event evt; public: void Update(); bool IsMouseButtonDown(byte key); bool IsMouseButtonUp(byte key); POINT GetButtonDownCoords(); bool IsKeyDown(byte key); bool IsKeyUp(byte key); byte GetPressedKey(); bool IsExit(); }; #endif
SDL_Event рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХрд╛ рдПрдХ рд╡рд░реНрдЧ рд╣реИ, рд╣рдо рдЗрд╕реЗ рдЗрдирдкреБрдЯ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рд░ рдЪрдХреНрд░ рдореЗрдВ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рди рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ
рдиреАрдЪреЗ рдРрд╕реЗ рддрд░реАрдХреЗ рджрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реБрдЪрд┐ рдХреЗ рдирд╣реАрдВ рд╣реИрдВред рдиреЛрдЯ: рдбрд╛рдЙрди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рддрдм рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдФрд░ рдЬрдм рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд╕рд╛рдеред
Input.cpp
#include "Input.h" void Input::Update() { while(SDL_PollEvent(&evt)); } bool Input::IsMouseButtonDown(byte key) { if(evt.type == SDL_MOUSEBUTTONDOWN) if(evt.button.button == key) return true; return false; } bool Input::IsMouseButtonUp(byte key) { if(evt.type == SDL_MOUSEBUTTONUP) if(evt.button.button == key) return true; return false; } POINT Input::GetButtonDownCoords() { POINT point; point.x = evt.button.x; point.y = evt.button.y; return point; } bool Input::IsKeyDown(byte key) { return (evt.type == SDL_KEYDOWN && evt.key.keysym.sym == key); } bool Input::IsKeyUp(byte key) { return (evt.type == SDL_KEYUP && evt.key.keysym.sym == key); } byte Input::GetPressedKey() { return evt.key.keysym.sym; } bool Input::IsExit() { return (evt.type == SDL_QUIT); }
рдпрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреЗ рдИрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдХреА рдлрд╝рдВрдХреНрд╢рди рдХреЗрд╡рд▓ рдИрд╡реЗрдВрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдФрд░ рдЙрд╕рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм рд╣рдо Game.h рдФрд░ Game.cpp рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ
#ifndef _GAME_H_ #define _GAME_H_ #include "Project.h" #include "Graphics.h" class Graphics; #include "Input.h" class Input; class Game { private: bool run; Graphics* graphics; Input* input; public: Game(); int Execute(int width, int height); Graphics* GetGraphics(); Input* GetInput(); void Exit(); }; #endif
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдЬреЛрдбрд╝рд╛ рдФрд░ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдФрд░ рдЗрдирдкреБрдЯ рд░рд┐рдЯрд░реНрди рдХреЗ рддрд░реАрдХреЗ рдмрдирд╛рдП
Game.cpp
#include "Game.h" Game::Game() { run = true; } int Game::Execute(int width, int height) { graphics = new Graphics(width,height); input = new Input(); while(run) { input->Update(); } delete graphics; delete input; SDL_Quit(); return 0; } Graphics* Game::GetGraphics() { return graphics; } Input* Game::GetInput() { return input; } void Game::Exit() { run = false; }
1.4ред рдкрд░рд┐рдгрд╛рдо
рдпрд╣ рдкрд╣рд▓рд╛ рдкрд╛рда рдерд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдП рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдмрдзрд╛рдИ рджреЗрддрд╛ рд╣реВрдВ! рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реЛрдЧрд╛ :) рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдж рдХреЗ рдкрд╛рдареЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВ!
рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдкреАрдПрдо рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ, рдФрд░ рдпрджрд┐ рдЖрдк рд╣рдм рдкрд░ рдкрдВрдЬреАрдХреГрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╢реБрдн рд╣реИрдВ, рддреЛ рдИрдореЗрд▓ рдкрд░ рд▓рд┐рдЦреЗрдВ