рдкрд┐рдЫрд▓реЗ рдкрд╛рдареЛрдВ рдореЗрдВ, рд╣рдордиреЗ рдЦреЗрд▓ рд╡рд┐рдХрд╛рд╕ рдХреА рдиреАрдВрд╡ рд░рдЦреАред рд╣рдордиреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ, рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдФрд░ рд╕рддрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдмрдирд╛рдпрд╛ред рдЗрд╕ рдкрд╛рда рдореЗрдВ рд╣рдо рдЕрдкрдиреА рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкрд╣рд▓рд╛ рдЧреЗрдо рдмрдирд╛рдПрдВрдЧреЗ - рдЯрд┐рдХ рдЯреИрдХ рдЯреЛред рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛрдЧрд╛ред рдЖрдЗрдП рдкрд┐рдЫрд▓реЗ рдкрд╛рдареЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ (рдХреНрдпрд╛ рд╣рдо рдЧрдВрднреАрд░ рдЧреЗрдо рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмрдирдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ?) рдЖрдкрдХреЛ рдПрдХ рдЫреЛрдЯреЗ рддрдХрдиреАрдХреА рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЯрд┐рдХ-рдЯреИрдХ-рдЯреЛ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЯрд┐рдХ-рдЯреИрдХ-рдЯреЛ рдореЗрдВ рдПрдХ 3x3 рд╡рд░реНрдЧ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдмрд╛рд░реА-рдмрд╛рд░реА рд╕реЗ
X рдпрд╛
O рд▓рдЧрд╛рддреЗ рд╣реИрдВред рддреЛ, рд╣рдореЗрдВ 3 рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП, рдФрд░ рдПрдХ
рдПрдХреНрд╕ рдФрд░
рдУ рдХреЗ рд▓рд┐рдП
ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдореЗрдВ
рдПрдХреНрд╕ рдФрд░
рдУ рдХреЗ рд▓рд┐рдП 9 рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЬрд┐рддрдиреА рдмрд╛рд░ рдЪрд╛рд╣реЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рд╣рд╛рдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк
рдПрдХреНрд╕ рдФрд░
рдУ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ 1 рдЫрд╡рд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рджреВрд╕рд░реЗ рдкрд╛рда рд╕реЗ
SDL_Rect рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рд░рдЦреЗрдВ; рдЕрдиреБрд╡рд╛рдж рдореЗрдВ, рдореИрдВ рдореВрд▓ рдХреЛрдб рд╕реЗ рдЪрд┐рдкрдХрд╛ рд░рд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ
рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рджреЗрдЦреЗрдВ)ред рд╣рдо рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдард╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдЖрдЗрдП рдЕрдкрдиреЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ 300x300 рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдмрдирд╛рдПрдВ, рдХреНрд░рдорд╢рдГ, рд╣рдо
рдПрдХреНрд╕ рдФрд░
рдУ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ 100x100 рдкрд┐рдХреНрд╕реЗрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдмрдирд╛рдПрдВрдЧреЗ, рдЕрд░реНрдерд╛рддред рдореИрджрд╛рди рдХрд╛ 1/9ред рдореИрдВрдиреЗ рдПрдХ рдХрд╛рд░рдг рд╕реЗ рдРрд╕реЗ рдЖрдХрд╛рд░ рдЪреБрдиреЗред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ, рдореЗрд░реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЙрдЪреНрдЪ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдореЗрдВ рдирд╣реАрдВ рдЦрдбрд╝реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдиреЗрдЯрдмреБрдХ =) рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реВрдВред рдЖрдк рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЖрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдЯрд┐рдХ рдЯреАрдПрд╕реА рдХреЛ рдкреИрд░ рдХреА рдЕрдВрдЧреБрд▓реА HD рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдлрд╝реАрд▓реНрдб рдЫрд╡рд┐
X рдФрд░
O рд╕реЗ рдЫрд╡рд┐
рддреЛ, рдЪрд┐рддреНрд░ рд╣реИрдВ, рдпрд╣ рдЙрдирдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛ рд╣реБрдЖ рд╣реИред
CApp.h рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ - рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рддрд╣ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ рдФрд░ 3 рдирдП рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВ:
CApp.h#ifndef _CAPP_H_ #define _CAPP_H_ #include <SDL.h> #include "CEvent.h" #include "CSurface.h" class CApp : public CEvent { private: bool Running; SDL_Surface* Surf_Display; private: SDL_Surface* Surf_Grid; SDL_Surface* Surf_X; SDL_Surface* Surf_O; public: CApp(); int OnExecute(); public: bool OnInit(); void OnEvent(SDL_Event* Event); void OnExit(); void OnLoop(); void OnRender(); void OnCleanup(); }; #endif
рд▓рдЧрднрдЧ рд╕рдорд╛рди рдЬреЛрдбрд╝-рддреЛрдбрд╝
CApp.cpp рдореЗрдВ рдХрд┐рдП рдЬрд╛рдиреЗ
рдЪрд╛рд╣рд┐рдП :
CApp.cpp #include "CApp.h" CApp::CApp() { Surf_Grid = NULL; Surf_X = NULL; Surf_O = NULL; Surf_Display = NULL; Running = true; } int CApp::OnExecute() { if(OnInit() == false) { return -1; } SDL_Event Event; while(Running) { while(SDL_PollEvent(&Event)) { OnEvent(&Event); } OnLoop(); OnRender(); } OnCleanup(); return 0; } int main(int argc, char* argv[]) { CApp theApp; return theApp.OnExecute(); }
рдЖрдкрдиреЗ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рдкрд░рд┐рдгрд╛рдореА рд╕рддрд╣реЛрдВ рдХреЛ рднреА рд╕рд╛рдл рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП
CApp_OnCleanup.cpp рдЦреЛрд▓реЗрдВ рдФрд░ рд▓рд┐рдЦреЗрдВ:
CApp_OnCleanup.cpp #include "CApp.h" void CApp::OnCleanup() { SDL_FreeSurface(Surf_Grid); SDL_FreeSurface(Surf_X); SDL_FreeSurface(Surf_O); SDL_FreeSurface(Surf_Display); SDL_Quit(); }
рддреЛ, рд╕рддрд╣реЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдм рдЙрдиреНрд╣реЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
CApp_OnInit.cpp рдЦреЛрд▓реЗрдВ рдФрд░ рд╡рд╣рд╛рдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ - рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рддрд╣ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдирдП рдЬреЛрдбрд╝ рджреЗрдВ, рдФрд░ рд╡рд┐рдВрдбреЛ рдХреЛ 300x300 рдореЗрдВ рднреА рдЖрдХрд╛рд░ рджреЗрдВ рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХреЛрдИ рдЦрд╛рд▓реА рд╕реНрдерд╛рди рди рд╣реЛред рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЫрд╡рд┐ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдкрдереЛрдВ рдХреА рд╡рд░реНрддрдиреА рд╕рд╣реА рд╣реИ!
CApp_OnInit.cpp #include "CApp.h" bool CApp::OnInit() { if(SDL_Init(SDL_INIT_EVERYTHING) < 0) { return false; } if((Surf_Display = SDL_SetVideoMode(300, 300, 32, SDL_HWSURFACE | SDL_DOUBLEBUF)) == NULL) { return false; } if((Surf_Grid = CSurface::OnLoad("./gfx/grid.bmp")) == NULL) { return false; } if((Surf_X = CSurface::OnLoad("./gfx/x.bmp")) == NULL) { return false; } if((Surf_O = CSurface::OnLoad("./gfx/o.bmp")) == NULL) { return false; } return true; }
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдХрд┐ рдореИрдВрдиреЗ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рдордиреЗ /
.fx / рдЬреЛрдбрд╝рд╛ рд╣реИ? рдореЗрд░рд╛ рддрд░реНрдХ рд╣реИ: рдЧрдВрднреАрд░ рдФрд░ рдмрдбрд╝реЗ рдЦреЗрд▓реЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди, рд╕реНрд░реЛрдд рдХреЛрдб рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рд░рдЦрдирд╛ рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореБрдЭрд╕реЗ рд╕рд╣рдордд рд╣реЛрдВрдЧреЗ =)ред рдЕрдм рд╕реНрдХреНрд░реАрди рдкрд░ рд╣рдорд╛рд░реЗ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ!
CApp_OnRender.cpp рдЦреЛрд▓реЗрдВ рдФрд░ рдлрд╝реАрд▓реНрдб рд╕рддрд╣ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд╕рддрд╣ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрджрд▓реЗрдВ:
CApp_OnRender.cpp #include "CApp.h" void CApp::OnRender() { CSurface::OnDraw(Surf_Display, Surf_Grid, 0, 0); SDL_Flip(Surf_Display); }
рдЕрдм рдЖрдк рдЦреЗрд▓ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ "рдЧреНрд░рд╣ рдкрд░ рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ рдЦреЗрд▓ рдореИрджрд╛рди" рдХрд╛ рдЖрдирдВрдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ! рд╕рддрд╣реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп 5 рд╕рд░рд▓ рдЪрд░рдгреЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ: рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ, рд╢реВрдиреНрдп, рд▓реЛрдб, рдбреНрд░рд╛, рдореБрдлреНрдд (рдЗрд╕ рдордВрддреНрд░ рдХреЛ рдЬрд╛рдиреЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдпрд╣ рдЖрдкрдХреЗ рдЧреЗрдо рдХреА рдХрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ, рдореЗрдореЛрд░реА рд▓реАрдХ, рдмреНрд░реЗрдХ рдФрд░ рдЦрд░рд╛рдмреА рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛)ред
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЧреБрд▓рд╛рдмреА рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдЯрд┐рдХ-рдЯреИрдХ-рдЯреЛ рдХреА рддрд╕реНрд╡реАрд░реЗрдВ рдФрд░ рд╕реЛрдЪрд╛ - "рдФрд░ рд▓реЗрдЦрдХ рд╡рд╣ рд╣реИ, рдИрдПрдордУ?"ред рдореИрдВ рдЖрдкрдХреЛ рдордирд╛рдиреЗ рдХреА рдЬрд▓реНрджрдмрд╛рдЬреА рдХрд░рддрд╛ рд╣реВрдБ! рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╣рдо рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ рдХрд┐рд╕ рд░рдВрдЧ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ (рдХреЗрд╡рд▓ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣рдореЗрдВ рдЫрд╡рд┐ рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдмреАрдЪ рдХреА рд░реЗрдЦрд╛ рдХреЛ рдареАрдХ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ), рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рдореЗрдВ рд╣рдо рдкреГрд╖реНрдарднреВрдорд┐ рдХреЛ "рдХрдо" рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ
SD__CetColorKey рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдкрд╛рд░рджрд░реНрд╢реА
рдмрдирд╛рдПрдВрдЧреЗ ред рддреЛ рдЪрд▓рд┐рдП рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ! рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
CSurface.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗрдВ:
CSurface.h #ifndef _CSURFACE_H_ #define _CSURFACE_H_ #include <SDL.h> class CSurface { public: CSurface(); public: static SDL_Surface* OnLoad(char* File); static bool OnDraw(SDL_Surface* Surf_Dest, SDL_Surface* Surf_Src, int X, int Y); static bool OnDraw(SDL_Surface* Surf_Dest, SDL_Surface* Surf_Src, int X, int Y, int X2, int Y2, int W, int H); static bool Transparent(SDL_Surface* Surf_Dest, int R, int G, int B); }; #endif
рдФрд░
CSurface.cpp рдореЗрдВ
рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВ:
CSurface.cpp bool CSurface::Transparent(SDL_Surface* Surf_Dest, int R, int G, int B) { if(Surf_Dest == NULL) { return false; } SDL_SetColorKey(Surf_Dest, SDL_SRCCOLORKEY | SDL_RLEACCEL, SDL_MapRGB(Surf_Dest->format, R, G, B)); return true; }
рдЖрдЗрдП рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╕реНрд░реЛрдд рдХреА рд╕рддрд╣ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддреАрди рдФрд░ рдЪрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ
рдЖрд░рдЬреАрдмреА рдкреНрд░рд╛рд░реВрдк рд╕реЗ рд░рдВрдЧ рдШрдЯрдХ рдХреЗ рдкрджрдирд╛рдо рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (рдпрджрд┐ рдХреЛрдИ рдФрд░ рд╡реНрдпрдХреНрддрд┐ рдирд╣реАрдВ рд╣реИ: рдЖрд░ - рд▓рд╛рд▓, рдЬреА - рд╣рд░рд╛, рдмреА - рдиреАрд▓рд╛; рд▓рд╛рд▓, рд╣рд░рд╛ рдФрд░ рдиреАрд▓рд╛ рд░рдВрдЧ)ред рдпрд╛рдиреА рдЕрдЧрд░ рд╣рдо рдлрдВрдХреНрд╢рди рдореЗрдВ
255, 0, 0 рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ
, рддреЛ рд╕рддрд╣ рд╕реЗ "рдмрдВрдж" рд╣реЛ рдЧрдпрд╛ рдФрд░ рд▓рд╛рд▓ рд░рдВрдЧ рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛ рдЧрдпрд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рд╕рддрд╣ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░, рдпрджрд┐ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд░рдВрдЧ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдорд╛рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
255, 0, 0 ) рдХреЗ рд▓рд┐рдП
Surf_Dest рд╕рддрд╣
рдореЗрдВ рдкрд╛рд░рджрд░реНрд╢реА ("рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ") рдХреЗ рдЕрдиреБрд░реВрдк рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЕрдм рдЦреБрдж
SDL_SetColorKey рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ:
int SDL_SetColorKey(SDL_Surface *surface, Uint32 flag, Uint32 key);
- рдкрд╣рд▓рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЙрд╕ рд╕рддрд╣ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЭрдВрдбреЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ: SDL_SRCCOLORKEY - рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рддреАрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ ( Uint32 рдХреБрдВрдЬреА ) рджреНрд╡рд╛рд░рд╛ рдкреНрд░реЗрд╖рд┐рдд рд░рдВрдЧ рдХреЛ рд╕рддрд╣ рдореЗрдВ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, SDL_RLEACCEL - рд╕рддрд╣ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП RIR рдЫрд╡рд┐ рд╕рдВрдкреАрдбрд╝рди рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЭрдВрдбреЗ рдХреЗ рдмрдЬрд╛рдп "0" рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рддрд░рд╣ рд╣рдо рдЗрд╕ рд╕рддрд╣ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП "рдЯрд░реНрди-рдСрдл" рд░рдВрдЧ рдореВрд▓реНрдп рдХреЛ рд╕рд╛рдл рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ;
- рддреАрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ SDL_MapRGB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрдгрдирд╛ рдХреА рдЧрдИ "рдмрдВрдж" рд░рдВрдЧ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрдЪрд░рд┐рдд рд╕рддрд╣ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд░рдВрдЧ рдХреА рдЦреЛрдЬ рдХрд░рддрд╛ рд╣реИ (рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд░рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╣рдореЗрдВ "рдЙрдирдореЗрдВ рд╕реЗ рджреЛрд╕реНрдд рдмрдирд╛рдиреЗ" рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ)ред
рдЦреИрд░, рдпрд╣ рд╕рдм рдФрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реА рд╕рддрд╣реЛрдВ рдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред
CApp_OnInit.cpp рдЦреЛрд▓реЗрдВ рдФрд░ рд▓рд┐рдЦреЗрдВ:
CApp_OnInit.cpp #include "CApp.h" bool CApp::OnInit() { if(SDL_Init(SDL_INIT_EVERYTHING) < 0) { return false; } if((Surf_Display = SDL_SetVideoMode(300, 300, 32, SDL_HWSURFACE | SDL_DOUBLEBUF)) == NULL) { return false; } if((Surf_Grid = CSurface::OnLoad("./gfx/grid.bmp")) == NULL) { return false; } if((Surf_X = CSurface::OnLoad("./gfx/x.bmp")) == NULL) { return false; } if((Surf_O = CSurface::OnLoad("./gfx/o.bmp")) == NULL) { return false; } CSurface::Transparent(Surf_X, 255, 0, 255); CSurface::Transparent(Surf_O, 255, 0, 255); return true; }
рддреЛ рд╕рднреА рд╕рддрд╣реЛрдВ рдХреЛ рдЯреНрдпреВрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╛рдд рдЫреЛрдЯреА рд╣реИ - рдЙрдиреНрд╣реЗрдВ рдбреНрд░рд╛ рдХрд░реЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдиреМ рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХреНрд░реЙрд╕ рдпрд╛ рд╢реВрдиреНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖реЗрддреНрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВрдЧреЗред рд╢реВрдиреНрдп рддрддреНрд╡ рдКрдкрд░реА рдмрд╛рдПрдВ рдЪрддреБрд░реНрдерд╛рдВрд╢ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛, рдКрдкрд░реА рдордзреНрдп рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛, рдКрдкрд░реА рджрд╛рдПрдВ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛, рдЖрджрд┐ред рдирд┐рдЪрд▓реЗ рджрд╛рдИрдВ рдУрд░ред рдЖрдкрдХреЛ рдЗрд╕ рд╕рд░рдгреА рдХреЛ
CApp.h рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
CApp.h #ifndef _CAPP_H_ #define _CAPP_H_ #include <SDL.h> #include "CEvent.h" #include "CSurface.h" class CApp : public CEvent { private: bool Running; SDL_Surface* Surf_Display; private: SDL_Surface* Surf_Grid; SDL_Surface* Surf_X; SDL_Surface* Surf_O; private: int Grid[9]; public: CApp(); int OnExecute(); public: bool OnInit(); void OnEvent(SDL_Event* Event); void OnExit(); void OnLoop(); void OnRender(); void OnCleanup(); }; #endif
рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдЧреНрд░рд┐рдб рдХреА рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд╢рд┐рдХрд╛ рдпрд╛ рддреЛ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрд╛ рдЙрд╕рдореЗрдВ рдХреНрд░реЙрд╕ рдпрд╛ рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ "
рдореИрдЬрд┐рдХ рдирдВрдмрд░реЛрдВ " рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рддрдерд╛рдХрдерд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЙрдЪрд┐рдд рд╣реИ enum, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ
рдпрд╣рд╛рдБ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдЕрдкрдиреЗ рд╕реЗрд▓ рд░рд╛рдЬреНрдпреЛрдВ рдХреЛ рд╕рд╛рд░реНрдердХ рдирд╛рдо рджреЗрдВрдЧреЗ рдФрд░ рд╣рдореЗрдВ рд╣рдореЗрд╢рд╛ рдкрддрд╛ рдЪрд▓реЗрдЧрд╛ рдХрд┐
GRID_TYPE_NONE = 0,
GRID_TYPE_X = 1, рдФрд░
GRID_TYPE_O = 2. рд╡рд╛рдкрд╕
CApp.h рдкрд░
рдЬрд╛рдПрдВ рдФрд░ рд╕реЗрд▓ рд╕рдордиреНрд╡рдп рд╕рд░рдгреА рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рддрд╣рдд рдПрдХ рдЧрдгрдирд╛ рдЬреЛрдбрд╝реЗрдВ:
CApp.h enum { GRID_TYPE_NONE = 0, GRID_TYPE_X, GRID_TYPE_O };
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рдврд╛рдВрдЪреЗ рдХреЗ рдХреЛрдб рд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд╛рдХрд┐рдл рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рдлрд╛рдЗрд▓ рдХрд╣рд╛рдВ рд╣реИ рдпрд╣ рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдХрднреА-рдХрднреА рдореИрдВ рдЗрд╕рдХреА рд╕рдВрдкреВрд░реНрдгрддрд╛ рдореЗрдВ рдХреЛрдб рджреЗрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдб рдХреЛ рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдП, рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рдЖрдкрдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЙрдореНрдореАрдж рд╣реИ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдореИрджрд╛рди рдХреА рд╕рдлрд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЪрд▓реЛ
CApp.h рдореЗрдВ
рд░реАрд╕реЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛
рдХрд░реЗрдВ :
CApp.cpp рдореЗрдВ, рд▓рд┐рдЦреЗрдВ:
CApp.cpp void CApp::Reset() { for(int i = 0;i < 9;i++) { Grid[i] = GRID_TYPE_NONE; } }
рдпрд╣ рдЪрдХреНрд░ рдЧреНрд░рд┐рдб рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░
GRID_TYPE_NONE рдорд╛рди рд╕реЗрдЯ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЧреЗрдо рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕ рд╕рдлрд╛рдИ рдХреЛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХрд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП
CApp_OnInit.cpp рдЦреЛрд▓реЗрдВ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЗрдВ рдХрд░реЗрдВ:
рдЕрдм рдХреНрд░реЙрд╕ рдФрд░ рд╢реВрдиреНрдп рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реЗрдВред
CApp.h рдореЗрдВ рдПрдХ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
CApp.h void SetCell(int ID, int Type);
рдЦреИрд░, рдФрд░ рддрджрдиреБрд╕рд╛рд░
CApp.cpp рдореЗрдВ :
CApp.cpp void CApp::SetCell(int ID, int Type) { if(ID < 0 || ID >= 9) return; if(Type < 0 || Type > GRID_TYPE_O) return; Grid[ID] = Type; }
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, 2 рддрд░реНрдХ рд▓реЗрддрд╛ рд╣реИ - рд╕реЗрд▓ рдХреА рдЖрдИрдбреА рдмрджрд▓реА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рд╕рд░рдгреА рдХреА рд╕реАрдорд╛рдУрдВ рд╕реЗ рдкрд░реЗ рдЬрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЧреЗрдо рдХреНрд░реИрд╢ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЗрд╖рд┐рдд рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд┐рдо рдЬрд╛рдВрдЪ рднреА рд▓рд╛рдЧреВ рдХреА рдЬрд╛рддреА рд╣реИред рд╣рдо рд╕реАрдзреЗ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ:
CApp_OnRender.cpp for(int i = 0;i < 9;i++) { int X = (i % 3) * 100; int Y = (i / 3) * 100; if(Grid[i] == GRID_TYPE_X) { CSurface::OnDraw(Surf_Display, Surf_X, X, Y); }else if(Grid[i] == GRID_TYPE_O) { CSurface::OnDraw(Surf_Display, Surf_O, X, Y); } }
рдпрд╣рд╛рдБ рдереЛрдбрд╝рд╛ рдФрд░ рдЬрдЯрд┐рд▓ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдЪрдХреНрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдЦреЗрд▓ рдХреЗ рдореИрджрд╛рди рдХреЗ рдЧреНрд░рд┐рдб рдореЗрдВ рд╕рднреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░, рдЖрдИрдбреА рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдПрдХ рдХреНрд░реЙрд╕ рдпрд╛ рд╢реВрдиреНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рд╣рдо рдХреНрд░реЙрд╕ рдФрд░ рд╢реВрдиреНрдп рдХреЛ рдирд┐рдореНрди рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд╛рддреЗ рд╣реИрдВ: рдПрдХреНрд╕-рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ 3 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рд╢реЗрд╖ рдХреЗ рд╕рд╛рде рдФрд░ 200 рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ (рдПрдХ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕реЗрд▓ рдХрд╛ рдЖрдХрд╛рд░), рдЕрдВрддрддрдГ i = 0 рдХреЗ рд▓рд┐рдП 0, 1 рдХреЗ рд▓рд┐рдП 1, 2 рдХреЗ рд▓рд┐рдП 2, 2 рдХреЗ рд▓рд┐рдПред 3, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП 0; Y рд╕рдордиреНрд╡рдп рдХреЗ рд▓рд┐рдП, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ 3 рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ, рд╢реЗрд╖ рдХреЗ рдмрд┐рдирд╛ рдФрд░ рдлрд┐рд░ рд╕реЗ 200 рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ, 0, 1 рдФрд░ 2 рдХреЗ рд▓рд┐рдП 0 рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЖрджрд┐ред рдкреНрд░рд╕реНрддреБрдд рд╕реЗрд▓ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЕрдм рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИ рдФрд░ рдкреНрд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИред
CApp.h рдЦреЛрд▓реЗрдВ рдФрд░
OnEvent рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдареАрдХ рдиреАрдЪреЗ
OnLButtonDown рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВ:
CApp.h void OnLButtonDown(int mX, int mY);
рдЕрдм рдмрджрд▓реЗрдВ
CApp_OnEvent :
CApp_OnEvent.cpp void CApp::OnLButtonDown(int mX, int mY) { int ID = mX / 100; ID = ID + ((mY / 100) * 3); if(Grid[ID] != GRID_TYPE_NONE) { return; } if(CurrentPlayer == 0) { SetCell(ID, GRID_TYPE_X); CurrentPlayer = 1; }else{ SetCell(ID, GRID_TYPE_O); CurrentPlayer = 0; } }
рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде, рд╣рдо рдпрд╣ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдиреЗ рдЬрд┐рд╕ рд╕реЗрд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд░рд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЙрд╕реЗ рдХреНрд░реЙрд╕ рдпрд╛ рд╢реВрдиреНрдп (рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдХреА рддрд╕реНрд╡реАрд░ рд╕реЗ рднрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ (рдпрд╛рдиреА рдпрджрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ CurrentPlayer = 1 рдЕрдЧрд▓рд╛ рдмрдЯрди рдкреНрд░реЗрд╕ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ 0 рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рджреНрд╡рд╛рд░рд╛ рдПрдХ рдХреНрд▓рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред
CApp.h рдЦреЛрд▓реЗрдВ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЪрд░ рдЬреЛрдбрд╝реЗрдВ:
рдФрд░ рдЗрд╕реЗ
CApp.cpp рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ:
CApp.cpp CApp::CApp() { CurrentPlayer = 0; Surf_Grid = NULL; Surf_X = NULL; Surf_O = NULL; Surf_Display = NULL; Running = true; }
рдЦреИрд░, рдпрд╣ рдмрд╛рдд рд╣реИ! рдЕрдВрдд рдореЗрдВ, рдЦреЗрд▓ рддреИрдпрд╛рд░ рд╣реИ, рддреЛ рдЪрд▓реЛ рдЦреЗрд▓рддреЗ рд╣реИрдВ! рд╕рдВрдХрд▓рди рдХрд░реЗрдВ рдФрд░ рдЖрдирдВрдж рд▓реЗрдВ! рдЖрдкрдХреЛ рдмрдзрд╛рдИ! рдЖрдк рдПрдХ рд▓рдВрдмрд╛ рд╕рдлрд░ рддрдп рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдХреА рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВред
рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЖрдк рдЦреЗрд▓ "рдПрдХреНрд╕ рд╡реЛрди", "рд╣реЗ рд╡реЛрди" рдХреЗ рдЕрдВрдд рдореЗрдВ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЦреЗрд▓ рдореЛрдб рд╡реНрдпрдХреНрддрд┐ рд╡реАрд╡реАрдПрд╕, рд╡реНрдпрдХреНрддрд┐ рд╡реАрд╡реАрдПрд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдЖрджрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЧреЗ рдмрдврд╝реЛ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╣реИ!
рдФрд░ рдпрд╣рд╛рдБ рдХрд╛рдо рдЯрд┐рдХ-рдЯреИрдХ-рдЯреЛ рдХрд╛ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╣реИ:
GitHub'e рдкрд░ рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдгред
рд╕реНрд░реЛрдд рдХреЛрдб рд▓рд┐рдВрдХ:
рд╕рднреА рдкрд╛рдареЛрдВ рдХреЗ рд▓рд┐рдВрдХ: