"αααα»αααΉαααΆαααα»ααα·αααΉαα’αααΈααΆααα’αα" ααΌααααΆα
αααααΆααα’αααααΆα αααααΆααα’ααα IT ααααααααααΉαααΆααααΆαα Developer ααΆααα’αα α αΎαα αααααα αααααααααα½ααα!
α’αααΈβα’αααΈ: ααααα αΆααααααΎααααααα αααααααα»α C/C++ ααααα·αααΎα’αααααααΌαααΆαααΆ!
α ααα»α’αααΈααΆαααΆα’ααααα½αα’αΆααααα ααΆαα’αα·αααααααααααα·ααΈαα·ααααααΆααααΆαααΆαααΆααααααααα»ααα ααα»αααααααα»αααααΆααΆααααααααΌααααααΆαααααααΆα αα ααααααααα»ααααααΆααα αααα!
αα½αβααααΈβαααααβαααααααα»αβααΊ
α§ααααΆα ααααα αααααα»αααααΌαααααΆαααα ααα αααααΆααααΆαααΆαααα
α
αΆαα’αΆαααΆαααΆαα§ααααΆα ααααααΆααααααα
αααα α ααααααααΌαααΆααααααααΆααααΈααΆαα
αΆααααααΎαααααΆαα’αα·αααααααα»αααααΌααα αααααααΎαααααααΆαααααΎα αα·ααΈααΆαααααα’αα·αααααααααα»αααααΆα αα·αααΆααΌαααααΆαα ααΌα α αα
αααΆαααΈαα ααααααΆαα
αΆααααααΎαααα
α‘αΎαααΆαα½αααΉαααααΆα ααα·α ααΌααα·ααααΆ αα·αααα‘αααααααΆααααα
ααα½α
ααΆααααα
α αα½αααα’αα»ααααΆαα±ααα’ααααααααααΎααΆαα’αα·ααααααα ααααααααααα½αα―αα αΎααα·αααααΆαα’αααΈααΌαααααΆαααααΉαααααααΆα ααα»αααααα½αααΆαα½ααα½αααααΆαα½αααΉααααΆαααΈαα’αααα’αα·αααααα "αααΉαααααα" αα·αααααΎα±ααααΌα
αα»αααΆαα ααΆαααα·αα ααααααΆα
αααΎαααααΌαααΆαααΆαααα
ααΎ conveyor α α αΎαααα·ααΆαααααΆαααα·αα
αΆααααααΎαααΎααα»αααΆαααααααΆα
αααα»ααααααΆαα½αααααΆααα αα
αααααααααα ααααααααα’ααααααα ααΎααααααααααααααααΈααΆαα ααααα αα½α’ααα ααααΆαα·αα αααα αααααα»αααααααααααααΆααααααΎαα‘αΎαα ααΌα
αααααααα»αααΆαααΉαααΆ...
β¦ ααΆααααααα αΎαααΎααααΈαααααΎααα·αααααααααΆαααααα½αααααα’ααα αααααΆααααααααΆαααααααα»αααα»αααααα αα·αααααααααααα»αααΆαααααααα·ααΆ ααΆααααααΆααα»ααααΆ αα·ααααααα·ααααΆαααα·αα»ααα!
α αΎααααα»αααΏααΆααααααααααααΆ ααΆααααααΆαααααααααΆαααΈαα ααααααααΆαααααα½αααααα’ααα αα·αα αααααα ααΎααΆ α’αααααΉαα’αΆα ααΎααααααααααα’ααα ααΌααααα’α½α αα·αααΌαααΆαααΈαααααα’ααα ααααΆαααΆα’αααααααααααααα·ααΈαααααΆααααα·ααααα αα·αααααΆααααΆαα
αα αααα»αα’αααααααααααα»αααΉαααααΆααΆαααααΆααα’αααααΈααααααααααα»αα αΆααααααΎααααααα ααααααΌα ααα αααα»α C/C ++ ααΎα’αααΈααΆααααΎαααΆαα’αα·αααααα αα·αααααααααααααα»αααααααααααααααΆαααααΆααα ααααα αααΌαα α·ααααααα»αααα·ααΆααΆααααΆααΉαα ααΆααΆααααααααα» αα·ααα·αααααΆα’αααΈααααΎαααΆαααααΆαα αΆααααααΎααα»ααααα αααααΆααα’αααΈααΆαααααααααα αα·αααααΏ α’αααΈααΌαααΆαααααΆαααααα½ααααααααα»αα’αααΈαα·ααααααα ααααααα αααααΆαααα "ααααααΆααα·αααα½ααα»αααααΌαα αααααα½αααααΆαααααΆαααααα½αααααα’ααααα!"α
α’αα»αααα
βα ααααααΉααααααααΆαααΆαα’αα»ααααααΊααααΆααααααααα ααΆαα’αα»αααααααααααΆαα ααααααΉαααΊααΆααααααααααΆααβ αα»αααΊ
ααααα αααααααΆααΊααΆααΈαα·ααααααααα»α!
ααΌα
αααααα
αααα»αααΆαα’αα»αααααααα»αα’αΆα
αα·ααΆαααΆαααΆα’αααΈααααααααΆααααααΆαααααα»αα
αΆααααααΎαααΆαα½αααααα
αααααααΆα αααα»αααααααα·αααααΉααααα·α
αα
ααΆααααα
αΆααααααααααααα»ααα
ααΈαααααα»ααααααα ααα»αααααααααΆααααΌα αααααα·ααΈ ααααΌαααΆαααα αΌα αα·ααααααααΆααααα αΆ αα½αααΆααααα·ααα·ααααΆαααααα αααααααααΎαααααΆααααα
αααΆα α αΎααααααααααΆαα½ααααα
ααααα»αααααα ααΆααα’αΆα ααΆαααΆαα»αααΆα αα·αα’αΆα
αα»αα
α·αααααΆα IMHO α
ααααα
αααααααΆαααααααα»α (ααΆαααααααα½α
α αΎα) α αααααΆαααααααααΆααΎααα
α ααΆααΆαααΆααα·α
αα
αααα
αΆααααα αααα·α ααααΌα ααααΆααααΆα αααααααααΆα ααααα
αααααΈαααα
ααΌαααΆααΎαα
αα ααααΆααααΆαααα αααα»αααΆααααααααααααΎααααΈαααα ααααααααα ααα½αααΈ (αααααΊαα αααα»αααΆααααααΉααααααααα»αα’αααΈ "α α»αααααα" ααΈαααααααα·αααααΆαα½αα’αΆα ααααΌαααΆαα’αα·ααααααααα·αα ααα αα)α
- ααααααααΈ α’α αααααΆαα»αααααΆαααααα 3D Demo αααααααααααα»α C# αααααααΎαααΆαααΈαα αααα Unityα αααααΆαααααα·ααΆ macOS αα·α Windows α
- αααααααΈ α‘α α αααααα»αααΌα Simple Snake (αααααααααΆααααΆααΆ "ααα") αααααΆααααΈαααΌα αααααβαααα»α C.
- αααααααΈ α‘α αα»αααΌαα αααα Crazy Tanks (αααααααααΆααααΆααΆ "αα»α") ααΆαααααααα½α α αΎααα αααα»α C ++ (ααααΎααααΆαα) αα·ααα ααααα Windows αααααα
αααααα 0 ααααΆαααααα Demo
- αααα·ααΆα Windows (Windows 7, 10), Mac OS (OS X El Capitan v. 10.11.6)
- Π―Π·ΡΠΊ: C#
- αααΆαααΈαα ααααα
ααΆαααΌααΈααΈ - ααΆααααα»ααααα·αα
ααΆαα·α ααΈ - ααααΆααα
GitHub
ααΆααααα αΆαααααΆαααααα 3D Scene
ααααααααΈαα½αααααΌαααΆαα’αα»αααααα·αααααα
αααα»α C/C++ αα ααα»αααααα
αααα»α C# αααααααΎαααΆαααΈαα αααα Unity α αααΆαααΈαααααα·αααΆααααααΌαααΆαααΎαααααααΉαααΌα
αααααα
ααααα αα αααα»α Unity αααααΆαααααα»αααΊαα·ααααααΎααααΈα’αα·ααααααααααα αααααα½αα ααα½ααααααα αααα»αα αααααααΎααα»α 3D αααααΆααα½α’αααααααααααααα ααΆαα α¬ααΆα (αααα»αααΆαααααααΌααΆαααΆααΈααααααα»ααααααΆαα =) ααααΌαααααΆααααΈ αα·αααααΆααααααααΆαα½ααα·ααααΆααααα α ααΆααΆαααΆααααααΆαααααααα»αααΆααααααΉαααΆααΎ Unity ααΆα’αααΈ ααααΎαααΆαα’αα·ααααααααΊααΆα’αααΈ αα·αααΆααΎααΆααααΌαααΆαααΆααα·αααααααΉααααααααα»ααααΆαααΎααααΈαααααΎαα’αααΈαα½αα αααααΆαααααααααααααααααΆαααααα Demo ααΆαααΎα (αααααααααΌαααΆααααααΎαα‘αΎαααααΎαααααΈααΏαα’αΆααααΌα) α ααΆαααααααααααα·ααΈ ααΆαααααΎααααΌ ααααΌαααΈαα α ααΆααααΆα ααΆαααααΎα±αααααα»ααααα ααααΈαααααααΆαααΆααααα αΆαααααα
αααα»αααΆαα
αΆααααααΎαααΆαα½αααΉαααΈααα’αΌαααααααα
ααΎ YouTube α’αααΈαααααααααΎαααααΌ 3D αα
αααα»α
ααααααΌααΆα clavicle, levers ααα’αΉααααααα ααΎααααΈα±ααα αααΆααΎααα ααααααΆαα·α αααααΆααααΈααααααααααα α’αααααΉαααΈααΆαααΆααααααααα’ααααααααΎαααΆαααααααααΌαααΈαα αααααΎ αααααααΆαααααααααΎαααΈααα’αΌαααααα 30 αα·ααΆααΈααα»αααααα ααα»ααααααΆααααα 3D ααΆαααααααααΆαααααα! α αΎαβαααααΆααβαα ααΎαβα ααβααΈβαααβααΆααααα α αΎαβαα·ααΆαβααΏαβαα½αβααΌα βααΆα βααΆ ααΌαβαααα»α/ααΆαααααβααβα’αΆααααα! αα½αααα’αΆα ααααΎααΆαααα’ααΆααααβ¦β ααα»αααααααΈααααΎ!
α αΎαααΏααα½ααααα’αααΈααΆαααααααααααα·ααΈαα αααα»ααααααααααα ααΌα αααααΆααΆαααααααααΆααααααααααα½αα±ααα αΆααα’αΆαααααααααα»ααααααΆαααααα»αααΊααα·ααα·ααααΆα ααααα·αααΎα’αααααααΎαααΆαααααααααΎαα ααα» (αααααααΆαααα ααααΆαααα αααα»αααΆααα·αααααΆαααααα) α’αααααΉααααααΆααααΎαααΆααΆαααααΆααααα·ααα»ααα·ααα½ααααΈαααα»ααααααααα½αα ααΎααααΈβαααα αβααΆαβααααα·αβααΆαααααΆβαααβααα ααααΌαβαααα»αβααααΌαβααααΆβααΌα’αααααβααβα ααα»α βααΈααΆααβαα βααΎβαααααα (2D) α αΎαβαααααΆααβααβαα βααΎβαααααα (3D)α α’αααΈβαααβαα½αβα±ααβα’ααβααααΎα βαααβααΊβααΆ αααα»αβααα’ααβααα·ααα·ααααΆβαα βααΆααΆ α αΎαβααααΆααβααΆβαααβααα αα½αααααα αααα ααααΆαααααΆααααα ααΆααΆ αα½αααααααΆαααααα·αααααααα’αααααΈαααααααααα·ααα·ααααΆαααααααΌαααΆαα’αα»αααααα αααα»αααΈαα·αα ααα»ααααβαααβαααβα’αααβαααααβααααααβααΉαβααααα βααααβα’ααα ααααΈβαα»αα·αβαααβα α·αααβααβααΆαβαααα‘αβα ααβαα·αβα αΎα! α αΎαβα’αααβα αΆααβααααΎαβαααβααΆβαα·α αα ααΆαβαααα»αααααΆαβααΆβααααΎαβαααααααααβααβααααΎαα α αΎαβαααααΆααβααβα’αααβαα·αβααΆβα "αααβα αΎα α ααα»βα’αααΈβααΆαβααΆβα’αααβααα·αβαα·ααααΆβαααβααΆβααΈβαααα‘αΆαα* αα·αβα’αΆα βααααΆααβααΈβααααααβαααβααΌαααααβααΆααβαααβα’αΆα βααααΌαβααΆαβααβααα’αα?
ααΆαααααΆααΌααααααααααΆααααααΆααΌα’αααααααα
ααα»α
αα½ααα
ααΎαααααααα½α αα·ααα
ααΎαααααα (ααΈααααα
αααααααΆαααααααα»α)
α αααα 1
- αααα·ααΆα Windows (ααΆαααααααΎ Windows 7, 10)
- Π―Π·ΡΠΊ: αααα»ααα·αααΆααΆααααΌαααΆααααααααΆ C
- αααΆαααΈαα ααααα αα»αααΌαααΈαααΌ
- ααΆααααα»ααααα·αα
javidx9 - ααααΆααα
GitHub
ααααααααααΆαααα
αα»α 3D αα·ααααααΆα ααααααα ααΎαααΈαααααα ααΆαααααΎααααΌ αα·αα αααΆααααα» 3D (ααΆαα·ααααα½α’αααα) ααΊααα αα·ααα·ααΆαα αααααΆααααΈαααααΆαα½α Unity αααα»αααΆαααΉαααΆαααα»αααααΌααααααα α¬α αΆααααααΎαααΈααΌαααααΆαα α’αααΈαα½ααααααΆαααα αα·αααΏα ααα»αααααααα»αααααααα½αααΆααα ααΎααααΈαααααΈαα ααΆααααααααααα ααααα
α αΎαααΎααΎαααΆαα’αααΈαααααΆαααααα·αααΏα? ααααΉαααααΌαα αΎα αα»αααΌα αα·α 2D α ααΆααααα αααΆαα ααΌααααΈαααα»αααΌα αα·ααα·αα·ααααααααΆα ααΆααααΈααααααα αααα»αααΆαα αΆααααααΎααααααααααΆααααα»ααααα·ααα ααΎα’ααΈαααΊαα·α (ααΆααΌαα αααα»αα αΆαααα»αα’ααΈαααΊαα·αααΆααΆααΆααααααΎαααα·αααααα αα·ααααααααααΆαααααα»αααααααααααΈ XNUMX)α αααα»αααΆαααΆαααααΈααα’αΌααααα’αααααααααααααα·ααΈααααΆααααααααααΎααα»αααΌα Tetris α α αΎααα αααα»αααΆαααααααααααΆαααααααααααααΆααααΆααααΆααααααα α α·αααααΆαα "ααα" α ααΈααΈααα’αΌ αααα»αααΆααααα’αααΈααΏαααΆααΌαααααΆαα ααα½αααΈα - ααααα·ααα»αα αααα (ααΆαα½αααΉααα»αααΆαααΆααΌαααααΆαα ααα½αααΈ/ααααα) αα·ααα·ααααααα ααΆααααα·ααααααα’αΆααααα
ααααα·ααα»αα ααααα’αΆα ααΎααα ααΌα αααα
int main()
{
Setup();
// a game loop
while (!quit)
{
Input();
Logic();
Draw();
Sleep(gameSpeed); // game timing
}
return 0;
}
ααΌααααα αΆααα»αααΆα main() ααΆααααΌααααα»αααααααα½αα α αΎαααααααα ααααα αΆααααααΎααααααΆααααΈααα·ααααααααααααΌαααααΆα ααΆααα»αααΆαααΆααΌαααααΆαα ααα½αααΈαα αααα»αααααα·ααα»αα Input(), Logic(), Draw()α ααααΌααααα αΌααα·αααααααααα αΌα (ααΆα ααααααΆααααααααααααΆαα α»α ααααΆααα α»α ) αααααΆααααααααΎαααΆααα·αααααααααααΆααααα αΌα αααααα·ααααΆ αααααΆαααααααα αΆααα ααΎα’αααααα - ααΌαα α αΎαααΌα ααααααΆααααα»αα α αααΆααααΌαααΆααααααΎαααΆααααααααα ααΆααΌα ααΆαα»αααααΆα ααΆααααααΆααααΎαααΆααα·αααααααααα αΌαααααΌαα αααΆααααα αααΎααααα»α α αΎαααΆαααααααα»αααΉα αααααα’ααααΆααα»αααα ααααα ααα»αααααα ααΈααααα»αααΆα Logic() ααΏαααΆααα ααΌα αααα α’ααααΆααα»αααααΌαααααααΌαααΆααααααααααααααα»αααΆα Sleep() ααΆαα½αααΉααααΆαααΆαααααα gameSpeed ββββααααααααα’ααααΆαααα
ααααα ααααα ααΆαααααααααααα·ααΈααααα
αααα»α notepad
ααααα·αααΎα’ααααααα»ααααααΎαα αααααα»αααΌααα·αα·ααααααααΆ αααααΆααααα αΆααα·αααααααα ααΎα’αααααααααααααΎαα·αααααααααααΈαααααααΆ 'cout' ααΉααα·αααααΎαααΆααα - ααΆααΊαααΆααα ααΌα ααααααααααααααΌαααααααΌαααΆαα’αα»αααααα αααα»αααα·ααααααα’αΆααααα’ααααααα ααΏαααΆααα»α α αΎαα ααααααΉαααααΎαααΆααααααααΆααααα αΆα αα·ααΆαα±ααααααααα αααα»ααα·ααααα αααΆααααΆα’αααΈααΆααα·ααααααα’αΆααααα’αααααα αα·ααααααααααΆααααΎαααΆαα ααα»αααααααα»αααΉααααααα§ααΆα αααααΌααα ααΈααα α αΎααααα ααααΆααΆαααααΆααααΆαααα αααα»αααα·αααααααΉαα’αΆα αααααΆααααΈααααΆαααΆαα
ααα½αααΆαααα·ααααααα’αΆααααα’αααααα (ααααα·αααΎαααα»αα’αΆα αα·ααΆαααΌα αααα)α
// create screen buffer for drawings
HANDLE hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0,
NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
DWORD dwBytesWritten = 0;
SetConsoleActiveScreenBuffer(hConsole);
αααααααααααααΆαααα α’αααααααααααααΆαααα·αααα»ααΆααααΆαααα½α (αααααΆαααααααΆαααααα αΆααα·αααα»):
// draw the score
WriteConsoleOutputCharacter(hConsole, scoreLine, GAME_WIDTH, {2,3}, &dwBytesWritten);
ααΆαααααΉααααΈ αα·αααΆαα’αααΈαααα»αααααΆααα αααα»αα ααααααααα ααΆα αΆααααΌα ααΆαααα»αααΆα§ααΆα αααααααα’ααα ααααααααα·αα αΌαα ααΌαααααΌαααΆαααααααααα»αα―αααΆααα½α α αΎααααα ααααα»ααα»αααΆαααΆα αααΎαα ααααΆαααααΆαα ααααΆαααααα α’αααβαααα½αβα―αβα’αΆα βααΎαβααΎαβα’αααΈβαααααβαααΆαβαα βαααα»αβααΌαβαααααβααβα ααααβαααβα αΌαβαα βααΆααβααααΆααβαα βααΎ GitHub α
α αααα 2 Crazy Tanks
- αααα·ααΆα Windows (ααΆαααααααΎ Windows 7, 10)
- Π―Π·ΡΠΊ: C ++
- αααΆαααΈαα ααααα αα»αααΌαααΈαααΌ
- ααΆααααα»ααααα·αα ααααα
α αΆααααααΎα C++ ααΆαααααααααα·ααΈα αααα - ααααΆααα
GitHub
α αααα Crazy Tanks
ααΆαααααα»ααααα½α’αααααα αα»αααΌαααΊαααα ααααΆααΏαααΆαααααααα»ααααα’αααα’αΆα ααααααααΆααα ααΆα ααααα ααα»αααααααααΆαααααααα αΆαα½αααα α‘αΎα: αα½α’ααααααΆααααααααα·ααααΉααα»αααααΆ (ααααααααΊααααΆααααΉα) α ααΌα αααα α’αααΈαααΉαααΎααα αα·ααααΆααΆααα α αΎαααΆααααα·αα α»αααααα α¬α‘αΎαααΎα αΆααααΌα ααΆααΏαααΆαααΆαααααΆααααΈαα ααααα α¬ααααΆαα α₯αααα·αααααααΊαα½αα±ααααααααααΆαααα αααα»α "ααα" (α αααα 1) α "αα»α" (α ααααααΈ 2) αα·αααΆααα»ααα·ααααα·ααααααααααααααααααααα ααΈαααααααΌαααΆααααα ααααααΆαααΌαααΈααααα’ααααααααΆαα½αααΉαααααααααααααΆα α’αααβα’αΆα βαα·ααΆαβααΆβαααα»αβααΆαβααααα renderer α αα·α αααβααΊβααΆβααΆαβαααα»αααααΆαβααααα·α βαα½α βαα βα αΎα αααβααΈβααΆβαα½αβα±ααβα αΆααβα’αΆααααααβααΆαβαααβααβαααα
αααααΆααα ααααααα ααΆααΉααααααααααΆααααΎααααΈαα·αααααΆα’αααΈαααααααααααααααα»ααααααΆαααααα αΆαααΈαααααα ααΎα’ααααααα αααα»ααα·αααΆαααααΊααΆαααααααααΆααααα ααααα α αΎαα’αααΈαααααααααααα’αααα’αΆα ααααΆαα½ααααα½αα’αααα
ααΌα αααα α’αααΈαααα’αααααΎααα ααΎα’ααααααααΊααααΆααααααΆαααα»αααα αα»αααααααααααααΆααααΈααα»αααααα
αααααα
αα»ααα
α αα»ααααααααΈαα½ααααααΌαααΆαααααΆαααααααΆααααΈαααααααααααααααα αα·ααΆαα’αΈααα αΉα αααα»αα’αΆα ααααα α ααα»α αα½αα±ααα αΆααα’αΆαααααααα½α - αααΆααααΈαααΆααα’αααα αααα»αα ααααααααΌαααΆαααααααααααα·ααΈααΆα’αΆαααα½ααα·ααΆαααα αα·αβαααβααΈαβαα·ααΆαααβααβααΊβαα½αβαα·ααΆαααβ! α’αΆαααα½ααα·ααΆαααααΆαααΆαααΆααααα½α αα·αααΏαααΆααα»ααααα»αααΆαααααΎααΆαααΆαα½αα
α§ααΆα ααααααααΆααααΈααα»αα αααα
ααααΆααααΆααααΈααααα»αα ααααααΆαα½αααΉαα’αΆαααα½ααα·ααΆααα
α§ααΆα αααααΆααααααααααααααααααααΆαααααΆααααΆααααΈααααα’αΆαααα½ααα·ααΆααα
ααα»ααααααΆαα αΌααα ααΆααααΆαα»ααα’αΆααααΎαα‘αΎααα αααα»αααααα·ααα»ααααα α αΆααααΌα ααΆααΆαα·ααααααΆαα·ααΆααααα½α ααα»ααααααΆα’αΆααααΈααα·ααΆαααα αααααααΌαααΆαααααΎαααααΆαααααΎααα ααααααΎααΆαααΆαα½ααααΆααααΈαα
ααααααΆααα’αΆαααα½ααα·ααΆααααααα»αααααα·ααα»αααααα Y ααΊααΆααααααααΆαααα½αααα X ααΊααΆααααααααΆαααα½ααα
ααΌαα αααΆαααΆαααα½αα±ααααΆααααααα’ααααααααΆααααΆααααΈαααααααΆ i, j, αααα»αααααΎ identifiers x αα·α y α α’ααα αΉαβααΆβα αΆααβααΌα βααΆβαααα»αβααΆααβααβααΆααβααααα αα·αβα αααΆααβααΆαβαα»αβαααβαα½αααααΆαα ααΎαααΈααα αααααΆαααααααααααΎα±ααααΆα’αΆα ααααΎαα ααΆααααΆαααΆααααα½ααααα»αααΆααααα αΆαααααΆααααΈααααααΆαααααΎαα ααΎα’ααααααΌα’αααααααααΌαααΆαααΈααα·ααΆαααα
α₯α‘αΌααααα’αααΈααΈαααα ααα αα·αααΆααααα αΆαα αα»αααΆα StretchDIBits (ααααααΆα windows.h; αααααΆαααα gdi32.lib) ααααΌαααΆαααααΎαααααΆααααααααα αααα»αα αααααααααααααααα ααΆαααααααααααααΌαααΆααααααΌααα αα»αααΆααααα α§ααααααααααΌαααΆαααααΌαααΆααααα αΆα (αααα»αααααΈαααααααα»α αααααΊααΆαα»αααΌαααΈαααΌ) ααΌα’αααααααααΆαα αΆααααααΎααααα αΆαααΌαααΆα αααΉα/ααααααααααααΆ αα·αααΌαααΆαα αααα½αααΆαα αααα»ααααααααααααααΈαααΈα (αααΈααααααΈ) αααααααΆααααα’αΆααααααα Bitmap ααΆα’αΆαααααα!
αα»αααΆα StretchDIBits() αα ααααααααααΎααΆαα
// screen output for game field
StretchDIBits(
deviceContext,
OFFSET_LEFT, OFFSET_TOP,
PMATRIX_WIDTH, PMATRIX_HEIGHT,
0, 0,
PMATRIX_WIDTH, PMATRIX_HEIGHT,
m_p_bitmapMemory, &bitmapInfo,
DIB_RGB_COLORS,
SRCCOPY
);
α’αααα αα αΆαααααΌαααΆααααα ααααΆαα»ααααααΆαααααααΈαααΈαααααααααααΎαα»αααΆα VirtualAlloc() α αααααΊα ααα½ααααααααααΌαααΆαααααΌαααΆαααααα»ααα»αααΎααααΈαααααΆαα»αααααααΆαα’αααΈααΈααααααΆααα’ααααααααααΆααααααΉαααααΌαααΆααααα αΆααα ααΎα’ααααααα
αααααΎα m_p_bitmap Memory bitmapα
// create bitmap
int bitmapMemorySize = (PMATRIX_WIDTH * PMATRIX_HEIGHT) * BYTES_PER_PIXEL;
void* m_p_bitmapMemory = VirtualAlloc(0, bitmapMemorySize, MEM_COMMIT, PAGE_READWRITE);
αα·ααΆαα±ααα ααα αααααΈαααΈαααΆααααα»αααΈααααα ααΆαααα½ααααααα»αα’αΆααααΊααΆααΈαααα RGB α αα½ααααααα»ααα½αααααααααα α αα½ααααααα»ααα½ααααααααααααα (G) αα·ααα½ααααααα»ααα½ααααααα (B) α ααΎαααΈααα ααΆααα½ααααααα»ααα½αααΆαα αΌααααααΆααα αααααΆααααΈααα - αααα α / αααα / ααα (RGB) - ααααΌαααΆαααΆααααα αΌαααααΆαααα»ααααΆααΆααααααααααααΆ - α αΎααααααΈααααααααααααααΌαααΆαααα½αα
α₯α‘αΌαααα ααΆααααΈααααααα α αα»ααααααααΈαα½αα α¬ααααα»α ααααααααΌαααΆαααααΆαααααααΆααααΈααααα ααααα»α ααααααΆααα’αααααααααΌαααΆαααΆαααααα»αααααα»ααα½αα α αΎαβαααααΆααβααβαα½αβααΆβααααΌαβααΆαβααβααΆααβαα βααΎβααΈααΆαβααααα½αβαααβαααααΎαβααΆβαααΆααααΈαβαααβααβαα½αα αααα»αααΆαααΌααααααΈαααααΈαα½αααααα»ααααΆααααΈααα ααΆαααααΆααααΆαααα½αα α§ααΆα ααα ααα 8 ααΆααααααα ααα 9 ααΆααααααΏα ααα 10 ααΆαααααααααααααΉαααα ααΌα ααααααΎαα’αΆα αα·ααΆαααΆαααΆααΎαααΆααααΆααααΈαααααΆαααα ααααααααΈαα½ααααΊααΆααααααααααα½αα ααα½αα
ααΌα αααα ααΎαβααΆαβαααΆααααΈαβααΆβαααβααβααΆαβαααβααΆααβααΌαβαα βααΎβααβααααΆα αα·αβαααααΈβαααΈαβαααααΆααβαααα αΆαβααΌαααΆαβαα βααααΆαβαααα αα αΌαααααααααααα αααααΈαααΈαααΊ "ααα" - ααΆαα·αααΆααααΆαααααααΆαα’αααΈααΈααααααααααααα ααααΆααααααα αααααΆααααααΆααα αΆαα α»ααααααααΉαααααΌαααααααααααΈαααΈαααΆαα½αααΉαααααααΆαα’αααΈααΈααααααΈαα½αααααααα’ααααΎαααΆααααΈααααααααΆααααα α§ααΆα αααααααΆαααααΆααααααΌαααααααααΊαα αααα»αααΌαααΆαααΆααααααα
α§ααΆα αααααααΆαααααααααααΈαααΈα (αααΆααααΈαααΈαααα) ααΆαα½αααΉαααααααΆαααα’ααααΎαααΆααααΈαααα (αααΆααααΈαααΈααΈαα) ααααΆαααα (αααααααααααααα·αααααΌαααααΆααΉαααααααααααα
αααα»αα αααααα)
αααα»αβααβααΉαβαααα αΆαβααΌαβαα·αβαα½αβααΈβα ααααβααβαααα colorIndex α’αααβαα βαααβααΆαβααααΎβα‘αΎααα·αβααΈαα½ααβααβααααα·ααα»αβααααΌαβααΆαβαααααβααααα (αααααααααβααα) ααΈβαααΆααααΈαβααΆβαααβααβααΆαβααα (mainDigitalMatrix)α αααααΆααααααααααα½αααΆααααΌαααΆαααααααα α’αααααααααααα’ααααΎαα·αα·ααααα ααΎαααΈαααααααααααααααααααΌαααΆααααα αααα ααΆαααΆααΆαααααααααααα ααααααα·ααααααα (RGB) α α αΎααα½αααΆαα½αααΆαα αΌααααααΆαα (pixelPadding) ααααααΆααααααααΌαααΆαααααααα ααΈααααααααα αΎαααααααα αααααΎαααΆααΌαααΆαααααα αααα»ααααααΈαααΈαα
ααΌαααααΎααααα·α αα·αααααα·ααααα·ααΆααααΈα αααα’αΆα αα·ααΆααααα ααΌα αααααααα»αααααΆαα’αααα±ααα’αΆαααΆα ααααα‘ααααΈααααΆαα ααααααααΆαα½αα’αααΈααααααααα ααΆααααααααααααααααααΎαααΆαα
ααΆαααααααααααΈαααΈαααΆαα½αααΉαααααααΆααααααα’ααααΎαααΆααααΈααααααααΆααααα
// set pixel map variables
int colorIndex;
COLORREF color;
int pitch;
uint8_t* p_row;
// arrange pixels for game field
pitch = PMATRIX_WIDTH * BYTES_PER_PIXEL; // row size in bytes
p_row = (uint8_t*)m_p_bitmapMemory; //cast to uint8 for valid pointer arithmetic
(to add by 1 byte (8 bits) at a time)
for (int y = 0; y < PMATRIX_HEIGHT; ++y)
{
uint32_t* p_pixel = (uint32_t*)p_row;
for (int x = 0; x < PMATRIX_WIDTH; ++x)
{
colorIndex = mainDigitalMatrix[y * PMATRIX_WIDTH + x];
color = Utils::GetColor(colorIndex);
uint8_t blue = GetBValue(color);
uint8_t green = GetGValue(color);
uint8_t red = GetRValue(color);
uint8_t pixelPadding = 0;
*p_pixel = ((pixelPadding << 24) | (red << 16) | (green << 8) | blue);
++p_pixel;
}
p_row += pitch;
}
αααααΆααα·ααΈααΆααααααααααΆααα·αααααΆααΆαααΎ ααΌαααΆααα½α (ααα»α) ααααΌαααΆααααααΎαα‘αΎααα αααα»αα αααα Crazy Tanks α αΎααααα αΆααα ααΎα’αααααααααα»ααα»αααΆα Draw()α αααααΆααααΈα α»ααααααααΆαα α»α ααααΆααα α»α αα αααα»ααα»αααΆα Input() αα·αααααΎαααΆαααΆαααααααααΆαααααααα½ααααα αααα»ααα»αααΆα Logic() ααΌαααΆαααααΈαα½α (ααα»α) ααααΌαααΆααααααΎαα‘αΎαα αα·αααα ααααα»α ααααα’αΆα ααΆαααΈααΆαααααααααααΆαα ααΎααΈααΆαααααα½α α αΎαααΆαααα ααααΌαααΆαααΌααα αααααααααααα αααααΆαααααααα αααΆ (α αααΆ) ααΎαα‘αΎαα
ααΆαααααΉααααΈ (ααααα·αααΎα’ααααα·αααΆααααααα α’αααΈαα) ααΆααααααΉαα’αααΈααααα·ααα»αα ααααααΈα ααααααααΌα ("ααα") αα·ααααααααααααααΆαααααα αΆαααΈαααααα ααΎα’ααααααααΈα ααααααΈααΈα ("αα»α") ααΊααΆα’αααΈαααα’αααααααΌαααΆαααΎααααΈαααααααΆαα½αα ααα αααα 2D ααααα’ααααααααΆαα Windows α α’ααααα‘αα! π αααααααααα αααααααΆααααααΆααΆαα ααα αΎαααααααα·αα
ααΆααΆααα·αααΆααα αααα "αα»α" ααααΌαααΆααα ααΆα‘αΎααααΆααααα»αααααΆαααΆα "ααα" α αααα»αααΆαααααΎααΆααΆ C++ αα½α α αΎα αααααΊαααα»αααΆααααααΆα’αααΈααααα»α ααααααααααααΆαα½αααΉαααααΆααα αααα»αααΆααααααΎαααααα»αααααΆαααααα½ααααααααα»α - α’αααα’αΆα ααΎαααΌααα αααα»αααααααΆ/Box.hα ααααα·ααΈααα ααΆααααααΌααααα»αααααααΆααΆαααΆαααα ααααΆαα’αααα αα αΆαα ααααα·α αααααΆαααααΎα ααααΎααΆαααΆαα½αααΆαα αα αΆαα αααα»αααααΌααααα·ααΆαααΆααααα ααΆααα½ααααα»αα αααΎαα α αΆααααααΎα C++ ααΆαααααααααα·ααΈα αααα. αααααΆααΆαα αΆααααααΎαααααα’αααααΆααα’αααα αΆααααααΎαααααΌααααα»α C++ α ααΆααΌα αα½αα±ααα αΆααα’αΆαααααα αα·ααααα αααΆαααα’α
ααΆααααΌαα αααΆαααααααα ααααααΆααα½αααααΎααααΈα’αα·ααααα αααααααα αααα»αααΆααααααααΆα αααααααα»αα’αα‘α»ααααα’αΆα αΆαααααααααα αα·αα’αΆα αΆααααααααα ααααααααααΎααΆαα ααΆααβα’αααα»αβαααα»αβααααααΆαβααΆαα·ααΆααα ααΎαβααΆααβα’αΆα αΆα αα·αβαααααβααΌαα α¬αα αααααααααΆααα’αΆα αΆααααααααΆα α ααΌα αααααααα»αααα½αααΆα "αααααααΆαααααααΆα" ααααααα ααΌα ααΆαααα αααα»αααΆαααααΎααααα αααααααΆαααΆαααααα α αΎαααααααααα·αααΆααα’ααααΆαααΎααα αααα»ααααα
αα α α»ααααα αααααααααααΆααααααα αααα»αααΉαααΆαααΆαααααααα½αα ααα½αααααααα αααααααΆαααααααα»αα ααΎααααΈαααα αΆαααΈα’αααΈααααααα»ααααα»αααααα ααΌα ααΆαα αα ααΆβ¦
ααΆααα
ααΆααΌαααΆααα»αα αα·ααα·αααααααα
ααα½αααΈααααααααα»αααΈαα½αααα½αααΆααααΆαααα
ααΎα’αααααα
ααΆαααααΆαααα½ααααααααΆααα·αααΌααααααααααΆααααΆαααααα·ααα»ααα»ααα·αα’ααααααααααΆα
ααααΆααααΆαααααΆααααααΌααααααααα»α (αααααα
ααααΆαα’αααα
αα
αΆα ααααααΆ)α ααααα»αααααΌαααΆααααααΎαααΆαααααΈααααΆαα
α αΎαααΆαααααααΊααΆααΆαααα»ααααα₯αααααααααααΎααααΈαααααΌααααααΆαα·ααααα·αααα·ααα
αααα»αα αααα
ααααΉααααΈ
"ααΌααααΈααααΆαααααΎααααΎααα½αααΆαααααΆαααα αΆααααααΎααααααα αΆαααααΌα" (ααααΆααααΆα α·ααα»ααΆα)
αααααααΆααααααΌαααΈααΆαα’αα»αααααα ααααΉααααΈ! ααΎα’ααααααααααααΆαααααΆααα ααααα αααΌαα α·αααααααα’ααααααααααααΆ?
- αααααααΌαα’αααΈαααα’ααααα·αααΆα ααααΆα (α’αΆα‘ααα’αΆααα αααααΆααΆαααααΆααααα»α)α
- αααααα’αΆαα·ααΆαα
- αααααααΆααα’αα "α α½αα ααα»" αααααΆααααΆααααααααααα’αΆαα·ααΆααααααα
- ααααααα ααααααα ααααα’αααααΆαααααΆααααααα
- αα»αααααΉαααΆααΉαααΆαααααααααααΈαα¬ααΈαααααααααΆααα ααααα αααΌαα α·αααα
αααααΆααα·αααα α’αααααααΌααααααααΌαα’αααΈαααα’αααα ααααΆα αα·ααααααα’αΆαα·ααΆαα αααααΆααα·αααα ααα’αΆα ααααααα ααααααΈ/αααααααα½αα ααα½α αααα»αααΆααααα α·αααα ααααα’αΆαα·ααΆαααΆαααααα αααααΆαβααα α’αααβααΉαβααααΌαβαααααβαααααβαααΆα "ααΎαβα ααα»α"α αααα»αααΆαααΊαα ααααααααΆαα½αααΆ αααα»αααΈαα·ααα½αααααΆααααααααΆαααααΆαααα ααα½αααΈα αααααΆααααα’αααααΉαα’αΆα αααααααΆαααΆαα½ααα½αααααΆααααααααααα’αααα»αα α αΎααααααα/αα·ααα ααααααααΉαα αΆααααααΎααααα»αααΎαααααααα ααα»αααααααααΊααΆααα’αα αααα ααααΆαααααΆααα αα·ααα»ααααα
ααΆαα αααΆααααΆαααΆααααΆαααα½αα αα»αααΆααααα 0%! αααα»αααΆααααα’αααΈααΆαα αααα»αα’ααααααα½ααααα’αααα’αα·ααααααα’ααΈαααΈα ααααα·αααΎα’ααααααα»αααααΎααΆαααΎαααααααα½α αααααΆααααααααΎα’αααΈαα½αα’αααΈααΆααΆαααααΆααααααα α αΎαααΆαα·αααααΆααααααΆααΎα’αααααααΆαααα»ααααΆαα αααααβααΆαααβαα½αβααααΆ α¬βαα½αβαααααΆααβααβααΌα ααΎαβααΈααα’αΌβααααααβαα½α α¬βααα½αβαααα αβαα½αβαα βαααα»αβααααΆααααβααααΆααααβααααΎβα’αααΈβαα½αα αααααααααααΆααααα»αααΊααΆαα αΆααααααΎαα αα αααα’αααα αΆααααααΎα α’ααααααα ααααΆααΉαααααΎα αααΎαααΆαα’αααΈαααα’αααα ααααααΎα ααΌα ααααα’αααααΉαααααααααααα ααααααα ααααα’ααα α αΎαααΏαααα»ααααΆαααΏαα αααΆαααΆαα·α α αααααΆααααααΆααααΎα’αααΈαααΆααα’ααααΊααΆααααααΆααααα
α αΎαααΆααΆααΆαααααΆαααααα»αααΆαα αα αΆαααΆα’ααααα·ααα½αααΎαααααΆααα·ααα·αα’αΎααΎααΉα " sawdust" α₯ααα·ααααααααααααααΆαααα»ααααααα 5, 10, 15 ααΆααΈαααα αΆα "αααααα ααα»" αα α ααΆααααααααα½αααααα¬ααΈαα ααΎα’ααααααα»αααααΆαα½ααα? αα·αα’αααΈα’αααΈαα½ααααααΆααααααααααααα’αααα ααΎα’αααα‘αΎααααααΎααααααα? αααααα’αααΈαα½ααα αααα»αααααα αααααααΆα ααΎα’ααααααΆααα ααΎα‘αΆααααα»ααα? αα·αα’αΈαα α’αΆαα’αααααααααα ααααΎαααααα±ααΆαα αααααΎαααααΆ αα·ααααααα ααΎ YouTube! αα»αα αααααα½αααααΆα!
α αΎαα
α»ααααααα ααααα·αααΎαααααΆααααΈα’αΆαα’αααααααα α’αααα
αΌαα
α·ααααααα·ααααααΎαα ααααααααα·αααααΎαααΆαααΈαα αααα αααα
αΆαααααα Casey Muratori α αα»αααααααΆα
Casey ααααααααααΆ ααΆααααααΆαα’αα·αααααααΆαααΈαα ααααααααΆαααααα½αααααα’ααα α’αααααΉααααααΆααααα αααΆααα’αααΈαααΆαααΈααααααΆαααααΆααααΆαα½αα αα αααα»ααα·ααααααααααααα αααααα»ααααααααααααΆαααα»αααααΆααΆαααααΎααααααααααααα·αααα α’αααααΉααααααΈαααααααααΎα αα·ααααααααΎααα ααααααααααΈααααααΆαα·αααα»αααααΌαααα α αΎαβα’αααβααβααΉαβααααΆαβααΆβα’αααβαααααβαααααα·ααΈβαααβααΆαβααΆαβααααΆαβαα αα·αβα αΆααβαα»αβααΆαβαααβααα - ααΆβα’αααβααΆααααα
ααΌαααααΆαααα’αα ααΎααααΌααααα’αααααΆαααααΎαααΎα! α αΎαααΌαααααΎα±αααα·αααααααΆααααααΆαααααΆααα·ααααΆααΈααα
α’ααααα·αααα: Grankin Andrey , DevOps
ααααα: www.habr.com