Β«Π― Π·Π½Π°Ρ, ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π·Π½Π°ΡΒ» Π‘ΠΎΠΊΡΠ°Ρ
ΠΠ»Ρ ΠΊΠΎΠ³ΠΎ: Π΄Π»Ρ IT-ΡΠ½ΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ»Π΅Π²Π°Π»ΠΈ Π½Π° Π²ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ Ρ ΠΎΡΡΡ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡ Π² ΡΠ²ΠΎΠΈ ΠΈΠ³ΡΡ!
Π ΡΠ΅ΠΌ: ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΈΠ³ΡΡ Π½Π° C/C++, Π΅ΡΠ»ΠΈ Π²Π΄ΡΡΠ³ Π²Π°ΠΌ ΡΡΠΎ Π½Π°Π΄ΠΎ!
ΠΠ°ΡΠ΅ΠΌ Π²Π°ΠΌ ΡΡΠΎ ΡΠΈΡΠ°ΡΡ: ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β ΡΡΠΎ Π½Π΅ ΠΌΠΎΡ ΡΠ°Π±ΠΎΡΠ°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π½ΠΎ Ρ ΡΡΠ°ΡΠ°ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ Π½Π΅Π΄Π΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π»ΡΠ±Π»Ρ ΠΈΠ³ΡΡ!
ΠΡΠΈΠ²Π΅Ρ, ΠΌΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ
ΠΠ½Π΄ΡΡΡΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ
ΠΈΠ³Ρ ΠΎΠ³ΡΠΎΠΌΠ½Π°, ΠΏΠΎ ΡΠ»ΡΡ
Π°ΠΌ, ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π΄Π°ΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΈΠ½Π΄ΡΡΡΡΠΈΡ ΠΊΠΈΠ½ΠΎ. ΠΠ³ΡΡ ΠΏΠΈΡΠ°Π»ΠΈ Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π·Π²ΠΈΡΠΈΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ, ΠΏΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΌΠ΅ΡΠΊΠ°ΠΌ, ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Π‘ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ°Π»ΠΈ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΈΠ³ΡΠΎΠ²ΡΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ Ρ ΡΠΆΠ΅ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ, ΡΠΈΠ·ΠΈΠΊΠΎΠΉ, Π·Π²ΡΠΊΠΎΠΌ. ΠΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ°ΠΌΠΎΠΉ ΠΈΠ³ΡΡ ΠΈ Π½Π΅ Π·Π°ΠΌΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρ Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½ΠΈΠΌΠΈ, Ρ Π΄Π²ΠΈΠΆΠΊΠ°ΠΌΠΈ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Β«ΡΠ»Π΅ΠΏΠ½ΡΡΒ» ΠΈ Π΄Π΅Π³ΡΠ°Π΄ΠΈΡΡΡΡ. Π‘Π°ΠΌΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΈΠ³Ρ ΡΡΠ°Π²ΠΈΡΡΡ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ. Π ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΏΡΠ΅ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π½Π°Π΄ Π΅Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ.
Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, ΠΈΠ³ΡΠ°Ρ Π² ΡΡΠΆΠΈΠ΅ ΠΈΠ³ΡΡ, ΠΌΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ Π»ΠΎΠΊΠ°ΡΠΈΡΠΌΠΈ, ΡΡΠΆΠ΅ΡΠΎΠΌ, ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°ΠΌΠΈ, ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠΊΠΎΠΉ, ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ. Π’Π°ΠΊ ΡΡΠΎ Ρ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎβ¦
β¦ Π½Π°ΡΡΠ°Π»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΌΠΈΡΡ, ΠΏΠΎΠ΄Π²Π»Π°ΡΡΠ½ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ½Π΅. ΠΠΈΡΡ, Π³Π΄Π΅ Ρ Π΅ΡΡΡ ΠΈ ΠΡΠ΅Ρ, ΠΈ Π‘ΡΠ½, ΠΈ Π‘Π²ΡΡΠΎΠΉ ΠΡΡ !
Π Ρ ΠΈΡΠΊΡΠ΅Π½Π½Π΅ Π²Π΅ΡΡ, ΡΡΠΎ, Π½Π°ΠΏΠΈΡΠ°Π² ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈ ΠΈΠ³ΡΡ Π½Π° Π½Π΅ΠΌ, ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠ°Π·ΡΡΡ Π³Π»Π°Π·Π°, ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΡ ΡΠΎΡΡΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΎΠΊΠ°ΡΠ°ΡΡ ΡΠ²ΠΎΡ ΠΊΠ°Π±ΠΈΠ½Ρ, ΡΡΠ°Π² Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΡΠ½ΡΠΌ ΠΈ ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΡΡ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°Π» ΠΏΠΈΡΠ°ΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ³ΡΡ Π½Π° C/C++, ΠΊΠ°ΠΊΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π³Π΄Π΅ Π½Π°Ρ ΠΎΠΆΡ Π²ΡΠ΅ΠΌΡ Π½Π° Ρ ΠΎΠ±Π±ΠΈ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΡΡΠΈ. ΠΠ½Π° ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½Π° ΠΈ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ°. ΠΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΎ Π½Π΅Π²Π΅ΠΆΠ΅ΡΡΠ²Π΅ ΠΈ Π²Π΅ΡΠ΅, ΠΎ ΠΌΠΎΠ΅ΠΉ Π»ΠΈΡΠ½ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½Π΅ ΠΌΠΈΡΠ° Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Β«ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΡ Π½Π΅ Π½Π΅ΡΠ΅Ρ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ Π·Π° Π²Π°ΡΠΈ Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠΎΠ·Π³ΠΈ!Β».
ΠΡΠ°ΠΊΡΠΈΠΊΠ°
Β«ΠΠ½Π°Π½ΠΈΡ Π±Π΅Π· ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π±Π΅ΡΠΏΠΎΠ»Π΅Π·Π½Ρ, ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π±Π΅Π· Π·Π½Π°Π½ΠΈΠΉ ΠΎΠΏΠ°ΡΠ½Π°Β» ΠΠΎΠ½ΡΡΡΠΈΠΉ
ΠΠΎΠΉ Π±Π»ΠΎΠΊΠ½ΠΎΡ β ΠΌΠΎΡ ΠΆΠΈΠ·Π½Ρ!
ΠΡΠ°ΠΊ, Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π²ΡΠ΅ Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π±Π»ΠΎΠΊΠ½ΠΎΡΠ°. Π’ΡΠ΄Π° Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ²ΠΎΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, Π² Π½Π΅ΠΌ Π΅ΡΠ΅ ΠΈ ΡΠΈΡΡΡ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΡ Π±Π»ΠΎΠΊ-ΡΡ
Π΅ΠΌΡ ΠΈ ΡΠ΅ΡΠ°Ρ Π·Π°Π΄Π°ΡΠΈ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅. ΠΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π±Π»ΠΎΠΊΠ½ΠΎΡ ΠΈ ΠΏΠΈΡΠΈΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΡΠ°Π½Π΄Π°ΡΠΎΠΌ. ΠΡΠΎ ΡΠΈΡΡΠΎ, ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ, ΠΠΠ₯Π.
ΠΠΎΠΉ (ΡΠΆΠ΅ ΠΈΡΠΏΠΈΡΠ°Π½Π½ΡΠΉ) Π±Π»ΠΎΠΊΠ½ΠΎΡ. ΠΠΎΡ ΡΠ°ΠΊ ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ. Π Π½Π΅ΠΌ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΠΈΠ΄Π΅ΠΈ, ΡΠΈΡΡΠ½ΠΊΠΈ, ΡΡ
Π΅ΠΌΡ, ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ΅ΡΠ½Π°Ρ Π±ΡΡ
Π³Π°Π»ΡΠ΅ΡΠΈΡ, ΠΊΠΎΠ΄ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅
ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ Ρ ΡΡΠΏΠ΅Π» Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡ ΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° (ΡΡΠΎ Π² ΠΌΠΎΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ Β«Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΠΎΡΡΠΈΒ», Π²Π΅Π΄Ρ Π»ΡΠ±ΠΎΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎ).
- Project 0: ΡΡΠΎ 3D-ΡΡΠ΅Π½Π° Architect Demo, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π½Π° C# Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° Unity. ΠΠ»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌ macOS ΠΈ Windows.
- Game 1: ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½Π°Ρ ΠΈΠ³ΡΠ° Simple Snake (Π²ΡΠ΅ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠ°ΠΊ Β«ΠΠΌΠ΅ΠΉΠΊΠ°Β») ΠΏΠΎΠ΄ Windows. ΠΠ°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π½Π° C.
- Game 2: ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½Π°Ρ ΠΈΠ³ΡΠ° Crazy Tanks (Π²ΡΠ΅ΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½Π°Ρ ΠΊΠ°ΠΊ Β«Π’Π°Π½ΡΠΈΠΊΠΈΒ»), Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ ΡΠΆΠ΅ Π½Π° C++ (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠΎΠ²) ΠΈ ΡΠΎΠΆΠ΅ ΠΏΠΎΠ΄ Windows.
Project 0. Architect Demo
- ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: Windows (Windows 7, 10), Mac OS (OS X El Capitan v. 10.11.6)
- Π―Π·ΡΠΊ: C#
- ΠΠ³ΡΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ:
Unity - ΠΠ΄ΠΎΡ
Π½ΠΎΠ²Π΅Π½ΠΈΠ΅:
Darrin Lile - Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:
GitHub
3D-ΡΡΠ΅Π½Π° Architect Demo
ΠΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π΅ Π½Π° C/C++, Π° Π½Π° C# Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ° Unity. ΠΡΠΎΡ Π΄Π²ΠΈΠΆΠΎΠΊ Π±ΡΠ» Π½Π΅ ΡΠ°ΠΊ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΠ΅Π»Π΅Π½ ΠΊ Β«ΠΆΠ΅Π»Π΅Π·ΡΒ», ΠΊΠ°ΠΊ
Π¦Π΅Π»ΡΡ Π² Unity Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π½Π΅ Π±ΡΠ»Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ³ΡΡ. Π― Ρ ΠΎΡΠ΅Π» ΡΠΎΠ·Π΄Π°ΡΡ 3D-ΡΡΠ΅Π½Ρ Ρ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ΅ΠΌ. ΠΠ½, Π° ΡΠΎΡΠ½Π΅Π΅ ΠΠ½Π° (Ρ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π» Π΄Π΅Π²ΡΡΠΊΡ, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ» Π²Π»ΡΠ±Π»Π΅Π½ =) Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΠ»Π° Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΎΠΊΡΡΠΆΠ°ΡΡΠΈΠΌ ΠΌΠΈΡΠΎΠΌ. ΠΠ°ΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Unity, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΠ»ΠΈΠΉ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ. Π’Π°ΠΊ ΡΠΎΠ΄ΠΈΠ»ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Architect Demo (Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π½ΠΎ ΠΏΠΎΡΡΠΈ ΠΎΡ Π±Π°Π»Π΄Ρ). ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ΅ΠΊΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π½ΡΠ»ΠΎ Ρ ΠΌΠ΅Π½Ρ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π΄Π²Π° ΠΌΠ΅ΡΡΡΠ° Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
Π‘ΡΠ°ΡΡΠΎΠ²Π°Π» Ρ Ρ ΠΎΠ±ΡΡΠ°ΡΡΠΈΡ
Π²ΠΈΠ΄Π΅ΠΎ Π½Π° YouTube ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ 3D-ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π²
ΠΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠΈΡΡ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΡΡΠΈ-ΡΡΡΠ°Π³ΠΈ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ Π²ΡΠ³Π»ΡΠ΄Π΅Π»Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠΎΡΠ»Π΅ ΡΠ°ΠΊΠΈΡ ΡΡΠΎΠΊΠΎΠ² ΠΎΡΠΎΠ·Π½Π°Π΅ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΡΡΡΠ΄ ΠΏΡΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΠ»ΡΠΌΠΎΠ², Π»ΠΈΡΡ Π±Ρ ΡΠΎΡΠ²ΠΎΡΠΈΡΡ 30 ΡΠ΅ΠΊΡΠ½Π΄ Π²ΠΈΠ΄Π΅ΠΎ. Π Π²Π΅Π΄Ρ 3D-ΡΠΈΠ»ΡΠΌΡ Π΄Π»ΡΡΡΡ ΡΠ°ΡΠ°ΠΌΠΈ! Π ΠΌΡ ΠΏΠΎΡΠΎΠΌ Π²ΡΡ ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΠΊΠΈΠ½ΠΎΡΠ΅Π°ΡΡΠΎΠ² ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅: Β«Π’Π°, Π΄Π΅ΡΡΠΌΠΎΠ²ΡΠΉ ΠΌΡΠ»ΡΡΠΈΠΊ/ΡΠΈΠ»ΡΠΌ! ΠΠΎΠ³Π»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΡΠ΅…Β» ΠΠ»ΡΠΏΡΡ!
Π Π΅ΡΠ΅, ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΠ°ΠΊ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΠ°ΠΌΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΡΡΡ Π±ΡΠ»Π° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ. ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ ΡΡΠ΅Π½Ρ (ΡΡΡΠ»ΠΊΠ° Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°), ΡΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΠ΅, ΡΡΠΎ ΠΊΠ°ΠΌΠ΅ΡΠ° Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π²ΠΎΠΊΡΡΠ³ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°-Π΄Π΅Π²ΠΎΡΠΊΠΈ ΠΏΠΎ ΡΡΠ΅ΡΠ΅. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠ΅ Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅ΡΡ, ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΡΡΠΈΡΡΠ²Π°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΠΎΡΠΊΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΊΡΡΠ³Π΅ (2D), Π° ΠΏΠΎΡΠΎΠΌ ΠΈ Π½Π° ΡΡΠ΅ΡΠ΅ (3D). Π‘Π°ΠΌΠΎΠ΅ ΡΠΌΠ΅ΡΠ½ΠΎΠ΅, ΡΡΠΎ Ρ Π½Π΅Π½Π°Π²ΠΈΠ΄Π΅Π» ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΡ Π² ΡΠΊΠΎΠ»Π΅ ΠΈ Π·Π½Π°Π» Π΅Π΅ Π½Π° ΡΡΠΈ Ρ ΠΌΠΈΠ½ΡΡΠΎΠΌ. ΠΡΡΠ°ΡΡΠΈ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΡΠΊΠΎΠ»Π΅ ΡΠ΅Π±Π΅ ΠΏΠΎΠΏΡΠΎΡΡΡ Π½Π΅ ΠΎΠ±ΡΡΡΠ½ΡΡΡ, ΠΊΠ°ΠΊ, ΡΠ΅ΡΡ Π²ΠΎΠ·ΡΠΌΠΈ, ΡΡΠ° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² ΠΆΠΈΠ·Π½ΠΈ. ΠΠΎ ΠΊΠΎΠ³Π΄Π° ΡΡ ΠΎΠ΄Π΅ΡΠΆΠΈΠΌ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅Π»ΡΡ, ΠΌΠ΅ΡΡΠΎΠΉ, ΡΠΎ ΡΠ°Π·ΡΠΌ ΠΎΡΠΈΡΠ°Π΅ΡΡΡ, ΡΠ°ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ! Π ΡΡ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΊΠ°ΠΊ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. Π ΠΏΠΎΡΠΎΠΌ Π΄ΡΠΌΠ°Π΅ΡΡ: Β«ΠΡ ΡΠ΅Π³ΠΎ ΠΆΠ΅ *Π»ΡΠ±ΠΈΠΌΠ°Ρ* ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠΊΠ° Π½Π΅ ΠΌΠΎΠ³Π»Π° Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ, Π³Π΄Π΅ ΡΡΠΈ ΡΠΎΡΠΌΡΠ»Ρ ΠΏΡΠΈΡΠ»ΠΎΠ½ΠΈΡΡ ΠΌΠΎΠΆΠ½ΠΎ?Β».
ΠΡΠΎΡΡΠ΅Ρ ΡΠΎΡΠΌΡΠ» Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠΎΡΠΊΠΈ Π½Π° ΠΊΡΡΠ³Π΅ ΠΈ Π½Π° ΡΡΠ΅ΡΠ΅ (ΠΈΠ· ΠΌΠΎΠ΅Π³ΠΎ Π±Π»ΠΎΠΊΠ½ΠΎΡΠ°)
Game 1. Simple Snake
- ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: Windows (ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» Π½Π° Windows 7, 10)
- Π―Π·ΡΠΊ: ΠΏΠΎ-ΠΌΠΎΠ΅ΠΌΡ, ΠΏΠΈΡΠ°Π» Π½Π° ΡΠΈΡΡΠΎΠΌ C
- ΠΠ³ΡΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ: ΠΊΠΎΠ½ΡΠΎΠ»Ρ Windows
- ΠΠ΄ΠΎΡ
Π½ΠΎΠ²Π΅Π½ΠΈΠ΅:
javidx9 - Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:
GitHub
ΠΠ³ΡΠ° Simple Snake
3D-ΡΡΠ΅Π½Π° β ΡΡΠΎ Π½Π΅ ΠΈΠ³ΡΠ°. Π ΡΠΎΠΌΡ ΠΆΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°ΡΡ 3D-ΠΎΠ±ΡΠ΅ΠΊΡΡ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠΈ) Π΄ΠΎΠ»Π³ΠΎ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΠΎΠΈΠ³ΡΠ°Π²ΡΠΈΡΡ Ρ Unity, ΠΊΠΎ ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎ ΠΎΡΠΎΠ·Π½Π°Π½ΠΈΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ, Π° ΡΠΎΡΠ½Π΅Π΅ Π½Π°ΡΠΈΠ½Π°ΡΡ, Ρ ΠΎΡΠ½ΠΎΠ². Π§Π΅Π³ΠΎ-ΡΠΎ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ, Π½ΠΎ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ ΡΠ°ΠΌΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈΠ³Ρ.
Π ΡΡΠΎ Ρ Π½Π°Ρ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΈ Π±ΡΡΡΡΠΎΠ΅? ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΈ 2D. Π’ΠΎΡΠ½Π΅Π΅ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ. ΠΠΏΡΡΡ ΠΏΠΎΠ»Π΅Π· ΠΈΡΠΊΠ°ΡΡ Π²Π΄ΠΎΡ Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ (Π²ΠΎΠΎΠ±ΡΠ΅, ΡΡΠΈΡΠ°Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΅Π²ΠΎΠ»ΡΡΠΈΠΎΠ½Π½ΡΠΌ ΠΈ ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ XXI Π²Π΅ΠΊΠ°). ΠΠ°ΡΡΠ» Π²ΠΈΠ΄Π΅ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅Π»Π°Π» ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠΉ ΡΠ΅ΡΡΠΈΡ. Π ΠΏΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΡ Π΅Π³ΠΎ ΠΈΠ³ΡΡ ΡΠ΅ΡΠΈΠ» Π·Π°ΠΏΠΈΠ»ΠΈΡΡ Β«Π·ΠΌΠ΅ΠΉΠΊΡΒ». Π‘ Π²ΠΈΠ΄Π΅ΠΎ Ρ ΡΠ·Π½Π°Π» ΠΏΡΠΎ Π΄Π²Π΅ ΡΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ Π²Π΅ΡΠΈ β ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ» (Ρ ΡΡΠ΅ΠΌΡ Π±Π°Π·ΠΎΠ²ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ/ΡΠ°ΡΡΡΠΌΠΈ) ΠΈ Π²ΡΠ²ΠΎΠ΄ Π² Π±ΡΡΠ΅Ρ.
ΠΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ» ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
int main()
{
Setup();
// a game loop
while (!quit)
{
Input();
Logic();
Draw();
Sleep(gameSpeed); // game timing
}
return 0;
}
Π ΠΊΠΎΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΡΡΠ°Π·Ρ Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΡ main(). Π ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ» Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. Π ΡΠΈΠΊΠ»Π΅ ΡΡΠΈ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: Input(), Logic(), Draw(). Π‘Π½Π°ΡΠ°Π»Π° Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ Input (Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ), ΠΏΠΎΡΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Logic, Π·Π°ΡΠ΅ΠΌ Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ β Draw. Π ΡΠ°ΠΊ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ°Π΄Ρ. Π ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ. ΠΡΠΎ ΠΊΠ°ΠΊ Π² ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΡΠ»ΡΡΠΈΠΊΠ°Ρ . ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΎΡΠ±ΠΈΡΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ Π·Π½Π°Ρ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ΅ΠΉΠΌΡΠ΅ΠΉΡ ΠΈΠ³ΡΡ. ΠΠΎ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Logic() Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ. ΠΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠΌΠ΅Π½Ρ ΠΊΠ°Π΄ΡΠΎΠ² ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Sleep() Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ gameSpeed, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΡ ΡΠΊΠΎΡΠΎΡΡΡ.
ΠΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ». ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Β«Π·ΠΌΠ΅ΠΉΠΊΠΈΒ» Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅
ΠΡΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΠΈΠ³ΡΡ, ΡΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΡΠΊΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° βcoutβ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ β ΠΎΠ½ ΠΎΡΠ΅Π½Ρ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΉ. ΠΠΎΡΡΠΎΠΌΡ Π²ΡΠ²ΠΎΠ΄ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π² Π±ΡΡΠ΅Ρ ΡΠΊΡΠ°Π½Π°. Π’Π°ΠΊ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΡΡΡΡΠ΅Π΅ ΠΈ ΠΈΠ³ΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· Π³Π»ΡΠΊΠΎΠ². Π§Π΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Ρ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π±ΡΡΠ΅Ρ ΡΠΊΡΠ°Π½Π° ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎ Ρ ΠΏΡΠΈΠ²Π΅Π΄Ρ ΡΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°, ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΠΊΡΠΎ-ΡΠΎ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΡΠ½ΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΡΡΠ΅ΡΠ° ΡΠΊΡΠ°Π½Π° (Π΅ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΡ):
// create screen buffer for drawings
HANDLE hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0,
NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
DWORD dwBytesWritten = 0;
SetConsoleActiveScreenBuffer(hConsole);
ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ Π½Π΅ΠΊΠΎΠΉ ΡΡΡΠΎΠΊΠΈ scoreLine (ΡΡΡΠΎΠΊΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΠΊΠΎΠ²):
// draw the score
WriteConsoleOutputCharacter(hConsole, scoreLine, GAME_WIDTH, {2,3}, &dwBytesWritten);
ΠΠΎ ΠΈΠ΄Π΅Π΅, Π½ΠΈΡΠ΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π² ΡΡΠΎΠΉ ΠΈΠ³ΡΠ΅ Π½Π΅Ρ, ΠΌΠ½Π΅ ΠΎΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΠΎΠ΄ Π½Π°ΠΏΠΈΡΠ°Π½ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΈ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ . ΠΠ΅Ρ ΠΊΠ»Π°ΡΡΠΎΠ², Π½Π΅Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΡ ΠΈ ΡΠ°ΠΌΠΈ Π²ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ ΠΈΠ³ΡΡ, ΠΏΠ΅ΡΠ΅ΠΉΠ΄Ρ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Π½Π° GitHub.
Game 2. Crazy Tanks
- ΠΠ»Π°ΡΡΠΎΡΠΌΠ°: Windows (ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π» Π½Π° Windows 7, 10)
- Π―Π·ΡΠΊ: C++
- ΠΠ³ΡΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ: ΠΊΠΎΠ½ΡΠΎΠ»Ρ Windows
- ΠΠ΄ΠΎΡ
Π½ΠΎΠ²Π΅Π½ΠΈΠ΅: ΠΊΠ½ΠΈΠ³Π°
Beginning C++ Through Game Programming - Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:
GitHub
ΠΠ³ΡΠ° Crazy Tanks
ΠΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ β ΡΡΠΎ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π² ΠΈΠ³ΡΡ. ΠΠΎ ΡΠΎΠ³Π΄Π° ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½Π° Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎΡΡΡ: ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΡ Π²ΡΡΠΎΡΡ ΠΈ ΡΠΈΡΠΈΠ½Ρ (Π²ΡΡΠΎΡΠ° Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠΈΡΠΈΠ½Π°). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π½Π΅ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ, Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π½ΠΈΠ· ΠΈΠ»ΠΈ Π²Π²Π΅ΡΡ ΠΊΠ°Π·Π°ΡΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡΠ°Π²ΠΎ. ΠΡΠΎΡ ΡΡΡΠ΅ΠΊΡ ΠΎΡΠ΅Π½Ρ Π·Π°ΠΌΠ΅ΡΠ΅Π½ Π² Β«ΠΠΌΠ΅ΠΉΠΊΠ΅Β» (Game 1). Β«Π’Π°Π½ΡΠΈΠΊΠΈΒ» (Game 2) Π»ΠΈΡΠ΅Π½Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ²ΠΎΠ΄ ΡΠ°ΠΌ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΊΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π½ΡΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ²Π΅ΡΠ°ΠΌΠΈ. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, Ρ Π½Π°ΠΏΠΈΡΠ°Π» ΡΠ΅Π½Π΄Π΅ΡΠ΅Ρ. ΠΡΠ°Π²Π΄Π°, ΡΡΠΎ ΡΠΆΠ΅ ΡΡΡΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, Ρ ΠΎΡΡ ΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅.
ΠΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΠΈΠ³ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΌΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π½Π° ΡΠΊΡΠ°Π½. Π‘ΡΠΈΡΠ°Ρ ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΈΠ³ΡΡ. Π Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ.
ΠΡΠ°ΠΊ, ΡΠΎ, ΡΡΠΎ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅ Π½Π° ΡΠΊΡΠ°Π½Π΅ β ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π°Π±ΠΎΡ Π΄Π²ΠΈΠΆΡΡΠΈΡ ΡΡ ΡΠ°Π·Π½ΠΎΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ².
ΠΠ°Π±ΠΎΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²
ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΡΠΈΡΠ»Π°ΠΌΠΈ. ΠΡΡΠ°ΡΠΈ, ΠΌΠΎΠ³Ρ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ Π½ΡΠ°Π½Ρ β Π²ΡΠ΅ ΠΌΠ°ΡΡΠΈΡΡ Π² ΠΈΠ³ΡΠ΅ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½Ρ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ². ΠΠ΅ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ, Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ! Π‘ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈ Π±ΡΡΡΡΠ΅Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΡΠΈΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π½ΠΊΠ°
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ°Π½ΠΊΠ° ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ
ΠΠΎΠ»Π΅Π΅ Π½Π°Π³Π»ΡΠ΄Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ
ΠΠΎ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΡΡΠΎ Π½Π΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΉ, Π° Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ². Π’Π°ΠΊ ΡΠ΄Π΅Π»Π°Π½ΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΌΡ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΠΌΠ°ΡΡΠΈΡΠ°ΠΌΠΈ.
ΠΠ±Ρ
ΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° Π² Π΄Π²ΠΎΠΉΠ½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅. Y β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΡΠΎΠΊ, X β ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΠΎΠ»Π±ΡΠΎΠ²
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠΈΠ²ΡΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΡΠ½ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² i, j Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ x ΠΈ y. Π’Π°ΠΊ, ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΏΡΠΈΡΡΠ½Π΅ΠΉ Π΄Π»Ρ Π³Π»Π°Π· ΠΈ ΠΏΠΎΠ½ΡΡΠ½Π΅ΠΉ Π΄Π»Ρ ΠΌΠΎΠ·Π³Π°. Π ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠ°ΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠΎΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΌΠ°ΡΡΠΈΡΡ Π½Π° ΠΎΡΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π΄Π²ΡΡ ΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡΡ , ΡΠ²Π΅ΡΠ΅ ΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ Π½Π° ΡΠΊΡΠ°Π½. ΠΠ»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ StretchDIBits (Header: windows.h; Library: gdi32.lib). Π ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΠΌΠΈΠΌΠΎ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅: ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ ΠΊΠΎΠ½ΡΠΎΠ»Ρ Windows), ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΡΡΠ°ΡΡΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ, Π΅Π΅ ΡΠΈΡΠΈΠ½Π°/Π²ΡΡΠΎΡΠ° ΠΈ ΡΠ°ΠΌΠ° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΡΡ (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_bitmapMemory:
// 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). ΠΠ»ΡΡ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π±Π°ΠΉΡ Π½Π° ΠΎΡΡΡΡΠΏ. ΠΡΠΈ ΡΡΠΈ ΡΠ²Π΅ΡΠ° β Red/Green/Blue (RGB) β ΡΠΌΠ΅ΡΠΈΠ²Π°ΡΡΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ Π² ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΠΏΠΎΡΡΠΈΡΡ β ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΡΠ²Π΅Ρ ΠΏΠΈΠΊΡΠ΅Π»Ρ.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΠΎΠ²ΡΠΎΡΡΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, ΠΈΠ»ΠΈ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΠ΅ΠΉ. ΠΡΠ΅ ΡΡΠΈ ΠΈΠ³ΡΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. Π Π·Π°ΡΠ΅ΠΌ ΡΠ°ΡΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΠΎ ΠΈΠ³ΡΠΎΠ²ΠΎΠΌΡ ΠΏΠΎΠ»Ρ, ΡΠΎΡΠΌΠΈΡΡΡ ΠΎΠ΄Π½Ρ Π±ΠΎΠ»ΡΡΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π² ΠΌΠ°ΡΡΠΈΡΠ΅ Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠ» Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΈΡΠ»Ρ 8 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΈΠ½ΠΈΠΉ ΡΠ²Π΅Ρ, ΡΠΈΡΠ»Ρ 9 β ΠΆΠ΅Π»ΡΡΠΉ, ΡΠΈΡΠ»Ρ 10 β ΡΠ΅ΠΌΠ½ΠΎ-ΡΠ΅ΡΡΠΉ ΡΠ²Π΅Ρ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, Ρ Π½Π°Ρ ΠΏΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ ΠΌΠ°ΡΡΠΈΡΠ° ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ β ΡΡΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ²Π΅Ρ.
ΠΡΠ°ΠΊ, ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΌΠ°ΡΡΠΈΡΡ Π²ΡΠ΅Π³ΠΎ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΈ Π±ΠΈΡΠΎΠ²ΡΡ ΠΊΠ°ΡΡΡ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΎΠΉ. ΠΠΎΠΊΠ° ΡΡΠΎ Π±ΠΈΡΠΎΠ²Π°Ρ ΠΊΠ°ΡΡΠ° Β«ΠΏΡΡΡΠ°ΡΒ» β Π² Π½Π΅ΠΉ Π΅ΡΠ΅ Π½Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΠΏΠΈΠΊΡΠ΅Π»ΡΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΡΠ°ΠΏΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π΅ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ. ΠΠ°Π³Π»ΡΠ΄Π½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅.
ΠΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΠΈΡΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΡΡ (Pixel matrix) ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ (Digital matrix) ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ (ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΠ²Π΅ΡΠΎΠ² Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ Π² ΠΈΠ³ΡΠ΅)
Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Ρ ΠΊΡΡΠΎΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΈΠ³ΡΡ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ colorIndex Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ²Π΅ΡΠ°) ΠΈΠ· ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ ΠΌΠ°ΡΡΠΈΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ (mainDigitalMatrix). ΠΠ°ΡΠ΅ΠΌ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ color Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΌ ΡΠ²Π΅Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. ΠΠ°Π»ΡΡΠ΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΡΠ²Π΅Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π° ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ, Π·Π΅Π»Π΅Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½Π΅Π³ΠΎ ΠΎΡΡΠ΅Π½ΠΊΠ° (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++, ΡΠΎ Π΅ΡΡΡ ΠΎΠΏΠΈΡΡΠ²Π°Π» ΡΠ°Π·Π½ΡΠ΅ ΠΈΠ³ΡΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ. Π‘ΠΎΠ·Π΄Π°Π» ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ β ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² headers/Box.h. ΠΡΡΠ°ΡΠΈ, Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π΅ΡΡΡ ΡΡΠ΅ΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ (memory leak). ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ. Π Π°Π±ΠΎΡΠ°Π» Ρ ΠΏΠ°ΠΌΡΡΡΡ. ΠΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΌΠ½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΌΠΎΠ³Π»Π° ΠΊΠ½ΠΈΠ³Π° Beginning C++ Through Game Programming. ΠΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΡΠ°ΡΡ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ Π² C++. ΠΠ½Π° Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΠΈ Π½Π΅ΠΏΠ»ΠΎΡ ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π°.
ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΡΡΠΎΠΉ ΠΈΠ³ΡΡ ΡΡΠ»ΠΎ Π³Π΄Π΅-ΡΠΎ ΠΏΠΎΠ»Π³ΠΎΠ΄Π°. ΠΠΈΡΠ°Π», Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π΅Π΄Π° ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠΎΠ² Π½Π° ΡΠ°Π±ΠΎΡΠ΅. Π‘Π°Π΄ΠΈΠ»ΡΡ Π½Π° ΠΎΡΠΈΡΠ½ΠΎΠΉ ΠΊΡΡ Π½Π΅, ΡΠΎΠΏΡΠ°Π» Ρ Π°ΡΡΠΈ ΠΈ ΠΏΠΈΡΠ°Π» ΠΊΠΎΠ΄. ΠΠ»ΠΈ ΠΆΠ΅ Π·Π° ΡΠΆΠΈΠ½ΠΎΠΌ Π΄ΠΎΠΌΠ°. ΠΠΎΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈΡΡ Ρ ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΈΠ΅ Β«ΠΊΡΡ ΠΎΠ½Π½ΡΠ΅ Π²ΠΎΠΉΠ½ΡΒ». ΠΠ°ΠΊ Π²ΡΠ΅Π³Π΄Π°, Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π±Π»ΠΎΠΊΠ½ΠΎΡ, ΠΈ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠΊΠΈ ΡΠΎΠΆΠ΄Π°Π»ΠΈΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Π½Π΅ΠΌ.
Π Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠ»ΡΠ½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π½ΠΎΠ² ΠΌΠΎΠ΅Π³ΠΎ Π±Π»ΠΎΠΊΠ½ΠΎΡΠ°. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π», ΡΠΈΡΠΎΠ²Π°Π», ΡΡΠΈΡΠ°Π», ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π»β¦
ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°Π½ΠΊΠΎΠ². Π ΠΎΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π΅ΠΈ ΡΠΎΠ³ΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π½ΠΊ Π΄ΠΎΠ»ΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅
ΠΡΠΎΡΡΠ΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈ ΡΠΎΡΠΌΡΠ» ΠΏΠΎ ΠΎΠ±ΠΎΡΠΎΡΡ ΡΠ°Π½ΠΊΠ° Π²ΠΎΠΊΡΡΠ³ ΡΠ²ΠΎΠ΅ΠΉ ΠΎΡΠΈ
Π‘Ρ
Π΅ΠΌΠ° ΠΌΠΎΠ΅ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ (ΡΠΎΠΉ ΡΠ°ΠΌΠΎΠΉ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π΅ΡΡΡ memory leak, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ). ΠΠΎΠ»Π»Π΅Π³ΠΊΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½Π° ΠΏΠΎ ΡΠΈΠΏΡ Linked List
Π ΡΡΠΎ ΡΡΠ΅ΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΏΡΠΈΠΊΡΡΡΠΈΡΡ ΠΊ ΠΈΠ³ΡΠ΅ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡ
Π’Π΅ΠΎΡΠΈΡ
Β«ΠΠ°ΠΆΠ΅ ΠΏΡΡΡ Π² ΡΡΡΡΡΡ ΠΌΠΈΠ»Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ°Π³Π°Β» (ΠΡΠ΅Π²Π½Π΅ΠΊΠΈΡΠ°ΠΉΡΠΊΠ°Ρ ΠΌΡΠ΄ΡΠΎΡΡΡ)
ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΎΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΊ ΡΠ΅ΠΎΡΠΈΠΈ! ΠΠ°ΠΊ ΠΆΠ΅ Π½Π°ΠΉΡΠΈ Π²ΡΠ΅ΠΌΡ Π½Π° ΡΠ²ΠΎΠ΅ Ρ ΠΎΠ±Π±ΠΈ?
- ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ΅Π³ΠΎ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΈΡΠ΅ (ΡΠ²Ρ, ΡΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅).
- Π Π°ΡΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ.
- ΠΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌ Β«Π»ΠΈΡΠ½ΠΈΠΌΒ» Π² ΡΠ³ΠΎΠ΄Ρ Π²ΡΡΡΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠ°ΠΌ.
- ΠΠ²ΠΈΠ³Π°ΡΡΡΡ ΠΊ ΡΠ΅Π»ΡΠΌ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ.
- ΠΠ΅ ΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡ Π΄Π²Π°-ΡΡΠΈ ΡΠ°ΡΠ° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ ΠΎΠ±Π±ΠΈ.
Π‘ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΠ΅Π³ΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈ ΡΠ°ΡΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΡ. Π Ρ Π΄ΡΡΠ³ΠΎΠΉ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π΄Π΅Π»/ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π² ΠΏΠΎΠ»ΡΠ·Ρ ΡΡΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ². ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΡΠ΅ΠΌ Β«Π»ΠΈΡΠ½ΠΈΠΌΒ». Π― Π³Π΄Π΅-ΡΠΎ ΡΠ»ΡΡΠ°Π», ΡΡΠΎ Π² ΠΆΠΈΠ·Π½ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π·Π°Π½ΡΡΠΈΡ. Π’ΠΎΠ³Π΄Π° Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠΌΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ. Π Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ/Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π°ΡΠ½ΡΡ Π±Π°Π½Π°Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ. ΠΠΎ ΡΡΠΎ Π²ΡΠ΅, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΠΊΠΎΠ΅ Π·ΠΎΠ»ΠΎΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ: never have a 0% day! Π Π½Π΅ΠΌ Ρ ΡΠ·Π½Π°Π» Π² ΡΡΠ°ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ indie-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π½Π°Π΄ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, ΡΠΎ Π΄Π΅Π»Π°ΠΉΡΠ΅ ΠΏΠΎ Π½Π΅ΠΌΡ ΡΡΠΎ-ΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π΄Π΅Π½Ρ. Π Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Ρ ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΎΠ΄Π½ΠΎ ΡΠ»ΠΎΠ²ΠΎ ΠΈΠ»ΠΈ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΡΠΊΡ ΠΊΠΎΠ΄Π°, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΠ±ΡΡΠ°ΡΡΠ΅Π΅ Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ Π·Π°Π±Π΅ΠΉΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π³Π²ΠΎΠ·Π΄Ρ Π² Π΄ΠΎΡΠΊΡ β ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ Ρ ΠΎΡΡ ΡΡΠΎ-ΡΠΎ. Π‘Π°ΠΌΠΎΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅ β ΡΡΠΎ Π½Π°ΡΠ°ΡΡ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ½Π΅ΡΠ΅, ΡΠΎ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΡΠ΄Π΅Π»Π°Π΅ΡΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Ρ ΠΎΡΠ΅Π»ΠΈ. Π’Π°ΠΊ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅Π»ΠΈ ΠΈ, ΠΏΠΎΠ²Π΅ΡΡΡΠ΅, ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΠΎ. ΠΠ΅Π΄Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΎΡΠΌΠΎΠ· Π²ΡΠ΅Ρ Π΄Π΅Π» β ΡΡΠΎ ΠΏΡΠΎΠΊΡΠ°ΡΡΠΈΠ½Π°ΡΠΈΡ.
Π Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ Π½Π΅ ΡΡΠΎΠΈΡ Π½Π΅Π΄ΠΎΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ ΠΈ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ Β«ΠΎΠΏΠΈΠ»ΠΊΠΈΒ» Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² 5, 10, 15 ΠΌΠΈΠ½ΡΡ, ΠΆΠ΄Π°ΡΡ ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π±ΠΎΠ»ΡΡΠΈΡ Β«Π±ΡΠ΅Π²Π΅Π½Β» Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ Π² ΡΠ°Ρ ΠΈΠ»ΠΈ Π΄Π²Π°. Π‘ΡΠΎΠΈΡΠ΅ Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ? ΠΡΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΡΡΠΎ-ΡΠΎ ΠΏΠΎ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ. ΠΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΡΠ΅ΡΡ ΠΏΠΎ ΡΡΠΊΠ°Π»Π°ΡΠΎΡΡ? ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠΎ-ΡΠΎ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡ. ΠΠ΄ΠΈΡΠ΅ Π² Π°Π²ΡΠΎΠ±ΡΡΠ΅? ΠΡΠ»ΠΈΡΠ½ΠΎ, ΠΏΡΠΎΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΡΡΠ°ΡΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ. Π₯Π²Π°ΡΠΈΡ ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠΎΡΠΈΠΊΠΎΠ² ΠΈ ΡΠΎΠ±Π°ΡΠ΅ΠΊ Π½Π° YouTube! ΠΠ΅ Π·Π°ΡΠΎΡΡΠΉΡΠ΅ ΡΠ΅Π±Π΅ ΠΌΠΎΠ·Π³!
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅. ΠΡΠ»ΠΈ, ΠΏΡΠΎΡΠΈΡΠ°Π² ΡΡΡ ΡΡΠ°ΡΡΡ, Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»Π°ΡΡ ΠΈΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ³Ρ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ³ΡΠΎΠ²ΡΡ
Π΄Π²ΠΈΠΆΠΊΠΎΠ², ΡΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΈΠΌΡ Casey Muratori. Π£ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΡΠ½Ρ Π΅ΡΡΡ
Π’Π°ΠΊΠΆΠ΅ ΠΠ΅ΠΉΡΠΈ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΡΡΠΎ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π² ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π»ΡΠ±ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π΄Π²ΠΈΠΆΠΊΠΈ. Π ΠΌΠΈΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ², Π³Π΄Π΅ Π²ΡΠ΅ ΠΏΡΡΠ°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ, Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΡΠΎΠ·Π½Π°Π΅ΡΠ΅ ΡΠ°ΠΌΡ ΠΏΡΠΈΡΠΎΠ΄Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ². Π ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π½Π΅ΡΠ΅ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ»ΠΊΠΎΠ²ΡΠΌ ΠΈ Π·ΡΠ΅Π»ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ β ΠΏΡΠΎΡΠΈ.
Π£Π΄Π°ΡΠΈ Π²Π°ΠΌ Π½Π° Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ ΠΏΡΡΠΈ! Π Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΌΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½Π΅ΠΉ.
ΠΠ²ΡΠΎΡ: ΠΡΠ°Π½ΠΊΠΈΠ½ ΠΠ½Π΄ΡΠ΅ΠΉ , DevOps
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com