ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅
Π‘Π²ΠΎΡ Π·ΠΌΠ΅ΠΉΠΊΠ°, ΠΈΠ»ΠΈ ΠΏΠΈΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. Π§Π°ΡΡΡ 0
ΠΡΠ΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅
ΠΡΠΈΠ²Π΅Ρ Π₯Π°Π±Ρ! ΠΠ΅Π½Ρ Π·ΠΎΠ²ΡΡ ΠΠ²Π³Π΅Π½ΠΈΠΉ Β«NageΒ», ΠΈ Ρ Π½Π°ΡΠ°Π» Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠΊΠΎΠ»ΠΎ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄, Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ ΠΎΡ ΡΠ°Π±ΠΎΡΡ Π²ΡΠ΅ΠΌΡ. ΠΡΠΎΡΠΌΠΎΡΡΠ΅Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΡΠΎΡΠΈΠ°Π»ΠΎΠ² ΠΏΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π΄Π°Π΅ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ Β«Π° ΡΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ Π΄Π°Π»ΡΡΠ΅?Β», Π²Π΅Π΄Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π²ΡΠ΅ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΠΎ ΡΠ°ΠΌΡΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ ΠΈ Π΄Π°Π»ΡΡΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π½Π΅ Π·Π°Ρ ΠΎΠ΄ΡΡ. ΠΠΎΡ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π° ΠΏΡΠΎΡΠΌΠΎΡΡΠΎΠΌ ΡΠ°Π·Π½ΡΡ ΡΠΎΠ»ΠΈΠΊΠΎΠ² ΠΏΡΠΎ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎΠΆΠ΅ Ρ ΡΠ΅ΡΠΈΠ» ΡΡΠΎ ΡΡΠΎΠΈΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π΄Π°Π»ΡΡΠ΅, ΠΈ Π±ΡΠ°ΡΡΡΡ Π·Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. Π ΡΠ°ΠΊ, ΡΠ΅ΠΉΡΠ°Ρ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠ³ΡΡ Β«ΠΠΌΠ΅ΠΉΠΊΠ°Β» Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π½Π°Π½ΠΈΡΠΌΠΈ.
ΠΠ»Π°Π²Π° 1. ΠΡΠ°ΠΊ, Ρ ΡΠ΅Π³ΠΎ Π½Π°ΡΠ½Π΅ΠΌ?
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π½Π°ΠΌ Π½ΠΈΡΠ΅Π³ΠΎ Π»ΠΈΡΠ½Π΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ, ΡΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΎΠΊΠ½ΠΎΡ (ΠΈΠ»ΠΈ Π²Π°Ρ Π»ΡΠ±ΠΈΠΌΡΠΉ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ), ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ C#, ΠΎΠ½ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² Windows, Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ½ Π² Π‘:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ visual studio, ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Roslyn\csc.exe.
«@echo off» ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ goto ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ». ΠΠ°Π΄Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ name, Π° Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ /p Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ. Β«echo.Β» ΠΏΡΠΎΡΡΠΎ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΡΡΡΡ ΡΡΡΠΎΡΠΊΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ. ΠΠ°Π»Π΅Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΅ΠΌΡ ΡΠ°ΠΉΠ» Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅Ρ.
ΠΠ»Π°Π²Π° 2. ΠΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π³ΠΈ
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ ΠΏΠΎΠ»Π΅ Π½Π°ΡΠ΅ΠΉ ΠΈΠ³ΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΠΎΡΠΊΠΈ Π²Ρ ΠΎΠ΄Π° Π² Π½Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°Π΄Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ X ΠΈ Y, ΡΠ°Π·ΠΌΠ΅Ρ ΠΈ Π±ΡΡΠ΅Ρ ΠΎΠΊΠ½Π° ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, ΠΈ ΡΠΊΡΠΎΠ΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΡΡΠΎΡΠ°.
ΠΠ»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½ Π½Π°ΡΠ΅ΠΉ Β«Π³ΡΠ°ΡΠΈΠΊΠΈΒ» ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ β ΡΠΎΡΠΊΠ°. ΠΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½. Π’Π°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π½Π° ΡΠΊΡΠ°Π½ ΡΠΎΡΠΊΠΈ ΠΈ Π΅Π΅ Β«ΡΡΠΈΡΠ°Π½ΠΈΡΒ».
ΠΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ!
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ => Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π»ΡΠΌΠ±Π΄Π°-ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ Π»ΡΠΌΠ±Π΄Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π»Π°, ΡΠΎΡΡΠΎΡΡΠ΅Π³ΠΎ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ, Π·Π°ΠΌΠ΅Π½ΡΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ return. ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° (ΠΏΡΠΎ Π΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΡ Π½ΠΈΠΆΠ΅) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊ:
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»Π°ΡΡ ΡΡΠ΅Π½, Π³ΡΠ°Π½ΠΈΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ. ΠΠ°ΠΏΠΈΡΠ΅ΠΌ 2 ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΠΈ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΡΡ Π»ΠΈΠ½ΠΈΠΉ, ΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Π²ΡΠ΅Ρ 4Ρ ΡΡΠΎΡΠΎΠ½ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ. Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΡΠΎΡΠ΅ΠΊ Π² ΡΡΠ΅Π½ΠΊΠ΅ Π½Π°ΠΌ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠΈΡΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ Point ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΡΠΌΠ° Point p = (x, y, ch); ΠΊΠ°ΠΊ ΠΈ Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ², ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° implicit, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π·Π°Π΄Π°ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ Game ΠΈ ΠΎΠ±ΡΡΠ²ΠΈΠΌ ΠΏΠΎΠ»Π΅ walls, Π° Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ Main ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π΅Π΅.
ΠΡΠ΅! ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΡΠΎ Π½Π°ΡΠ΅ ΠΏΠΎΠ»Π΅ ΠΏΠΎΡΡΡΠΎΠΈΠ»ΠΎΡΡ, ΠΈ ΡΠ°ΠΌΠ°Ρ Π»Π΅Π³ΠΊΠ°Ρ ΡΠ°ΡΡΡ ΠΏΠΎΠ·Π°Π΄ΠΈ.
ΠΠ»Π°Π²Π° 3. Π ΡΡΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ Π½Π° Π·Π°Π²ΡΡΠ°ΠΊ?
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ Π΅Π΄Ρ Π½Π° Π½Π°ΡΠ΅ΠΌ ΠΏΠΎΠ»Π΅, Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»Π°ΡΡ FoodFactory, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Π΅Π΄Ρ Π²Π½ΡΡΡΠΈ Π³ΡΠ°Π½ΠΈΡ.
ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π±ΡΠΈΠΊΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΅Π΄Ρ Π½Π° ΠΏΠΎΠ»Π΅
ΠΠ»Π°Π²Π° 4. ΠΡΠ΅ΠΌΡ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Π³Π΅ΡΠΎΡ
ΠΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΌΠΎΠΉ Π·ΠΌΠ΅ΠΈ, ΠΈ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»Π°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ, Π³Π΄Π΅ ΠΎΠΏΠΈΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π·Π°ΡΡ, ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠ΅ΠΊ Π·ΠΌΠ΅ΠΈ, Π½Π°ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅, ΡΠ°Π³ Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ Π·Π° Ρ ΠΎΠ΄, ΠΈ ΡΡΡΠ»ΠΊΠΈ Π½Π° Ρ Π²ΠΎΡΡΠΎΠ²ΡΡ ΠΈ Π³ΠΎΠ»ΠΎΠ²Π½ΡΡ ΡΠΎΡΠΊΠΈ, ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌ Π·ΠΌΠ΅Ρ Π² Π·Π°Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Π½Ρ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΈΠ³ΡΡ.
Π ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ°, ΡΡΠΎ Π±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΡ ΡΡΠ°Π·Ρ Π½Π° 180 Π³ΡΠ°Π΄ΡΡΠΎΠ², ΠΏΡΠΎΡΡΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΡΡΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ²Π΅ΡΠ½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² 2 ΡΡΠΎΡΠΎΠ½Ρ. Π ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° Π½Π° 180 Π³ΡΠ°Π΄ΡΡΠΎΠ² Π΄Π²ΡΠΌΡ Π½Π°ΠΆΠ°ΡΠΈΡΠΌΠΈ β ΠΏΠΎΡΡΠ°Π²ΠΈΠ² Β«ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»ΡΒ», ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ, ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ Ρ ΠΎΠ΄Π°.
ΠΡΡΠ°Π»ΠΎΡΡ Π²ΡΠ²Π΅ΡΡΠΈ Π΅Π΅ Π½Π° ΡΠΊΡΠ°Π½.
ΠΠΎΡΠΎΠ²ΠΎ! ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π²ΡΠ΅ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, ΠΏΠΎΠ»Π΅ ΠΎΠ³ΠΎΡΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΡΡΠ΅Π½Π°ΠΌΠΈ, ΡΠ°Π½Π΄ΠΎΠΌΠ½ΠΎ ΠΏΠΎΡΠ²Π»ΡΡΡΠ°ΡΡΡ Π΅Π΄Π°, ΠΈ Π·ΠΌΠ΅ΠΉΠΊΠ°. ΠΡΠΈΡΠ»Π° ΠΏΠΎΡΠ° Π·Π°ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ΅ ΡΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ.
ΠΠ»Π°Π²Π° 5. Π-Π»ΠΎΠ³ΠΈΠΊΠ°
ΠΠ°ΡΡΠ°Π²ΠΈΠΌ Π½Π°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ, Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠΈΠΊΠ» Π΄Π»Ρ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ Π½Π°ΠΆΠ°ΡΡΡ Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅, ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΠΊΠ»Π°Π²ΠΈΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ° Π·ΠΌΠ΅ΠΈ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ, Π½Π°Π΄ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π³ΠΎΠ»ΠΎΠ²Ρ Ρ Π΅Π΄ΠΎΠΉ, ΡΡΠ΅Π½ΠΊΠ°ΠΌΠΈ ΠΈ Ρ Π²ΠΎΡΡΠΎΠΌ Π·ΠΌΠ΅ΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Π΄Π²Π΅ ΡΠΎΡΠΊΠΈ Π½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ. ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΠΈ Π½Π΅ ΡΠ°Π²Π΅Π½ΡΡΠ²Π°, ΠΈΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π² ΠΏΠ°ΡΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Π»ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ°Ρ Π½Π°Ρ ΡΠΎΡΠΊΠ° Ρ ΠΊΠ°ΠΊΠΎΠΉ Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΠ΅Π½.
Π ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΠΉ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Π»ΠΈ ΡΠΎΡΠΊΠ° Ρ Ρ Π²ΠΎΡΡΠΎΠΌ.
Π ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ΅Π»Π° Π»ΠΈ Π΅Π΄Ρ Π½Π°ΡΠ° Π·ΠΌΠ΅ΠΉΠΊΠ°, ΠΈ ΡΡΠ°Π·Ρ Π΄Π΅Π»Π°Π΅ΠΌ Π΅Π΅ Π΄Π»ΠΈΠ½Π½Π΅Π΅.
ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π½ΡΠΆΠ½ΡΠΌΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ.
ΠΠΎΡ ΠΈ Π²ΡΠ΅! ΠΠ°ΡΠ° Π·ΠΌΠ΅ΠΉΠΊΠ° Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π° ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΈΠ³ΡΠ°ΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π»ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΡΡ ΠΈΠ³ΡΡ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΠΠ, Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, ΠΏΠΎΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π° ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΠΈ Π»ΡΠΌΠ±Π΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, Π½Π°Π΄Π΅ΡΡΡ ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ!
ΠΡΠΎ Π±ΡΠ»Π° ΠΏΠΈΠ»ΠΎΡΠ½Π°Ρ ΡΡΠ°ΡΡΡ, ΠΈ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»ΠΎΡΡ, Ρ Π½Π°ΠΏΠΈΡΡ ΠΏΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ Π½Π° Unity.
ΠΡΠ΅ΠΌ ΡΠ΄Π°ΡΠΈ!
DosTips.com
A Forum all about DOS Batch
Moderator: DosItHelp
#1 Post by dbenham Β» 13 Jul 2013 13:43
For a while now I’ve been messing around with the concept of creating an arcade style game using only pure native batch. I ran across an interesting implementation of the classic SNAKE game (BATCHSNAKE.BAT) at http://www.youtube.com/watch?v=RblizDDxaBA
EDIT: I updated the link to point to the original author’s YouTube post. The prior link was by an impostor claiming credit
BATCHSNAKE.BAT uses an interesting technique to emulate the ability to detect a key press without pausing the game. The main game runs in one console window, and it launches a controller batch process in a new window that uses CHOICE to read keys. The controller process writes the key presses to a file, and the main game has stdin redirected to the file, so it can read the keys using SET /P. The nice feature is that SET /P reads the next key if available, but immediately moves on with no input if currently at the end of the file. What I don’t like is the reliance on two windows, it is confusing. Also, the implementation seems to sometimes drop key presses. BATCHSCRIPT.BAT also uses multiple batch scripts.
BATCHSNAKE.BAT works fairly well, and has a lot of nice features. But the screen has a lot of flicker, and the maximum speed is severely limited by the number of CALL statements, as well as to a lesser extent by the complexity of some logic and dependence of randomly finding a free space to locate the next piece of food. Performance on XP running via Win 7 Virtual PC is abysmal, and the controller process is somehow broken on the virtual PC (it launches but then closes).
I decided to create my own version of SNAKE using pure batch, concentrating on performance and controller reliability and ease of use. I chose not to implement features like high score, user defined maps, rocks, etc. Those features could easily be added.
Controller improvements
I put all code within one batch script (SNAKE.BAT). I launch the controller process using START /B so the controller runs in the same console window. The controller has various modes to allow the game to detect individual key presses, as well as to prompt and wait for input. The game communicates with the controller by writing commands to a command file that the controller then reads. Getting the correct behavior within a shared console window requires carefully constructed output redirection for the controller, as well as input redirection for the game.
The controller requires the CHOICE command. Unfortunately, the CHOICE command is not standard for XP. But XP users can still use the game if they download a port of the CHOICE command. SNAKE.BAT detects if the CHOICE command is available, and displays URLs where it may be downloaded if it is not available. The calling syntax for CHOICE varies depending on the version of CHOICE. SNAKE.BAT detects which version is available and sets up a simple «macro» to account for the version.
Speed improvements
This is a BIG topic. There are a number of important basic design principles.
1) Minimize use of GOTO
The main game loop is an infinite FOR /L loop. The infinite loop is exited via the EXIT command. The main game is launched from SNAKE.BAT via a new CMD.EXE so that necessary cleanup actions can take place after the loop exits. Use of GOTO for the main loop would slow down the program.
2) Minimize use of CALL
CALLed Batch «functions» with arguments are convenient, but the CALL mechanism is comparatively very slow. SNAKE.BAT dramatically improves speed via extensive use of batch «macros» with arguments. See Batch «macros» with arguments for more info on how to use macros. The link gives a good background on the macro concept. It provides a link to a more recent thread with major macro enhancements by jeb that more closely resemble the macros used in SNAKE.BAT, as well as a link to the initial thread where Ed Dyreen introduced the macro with arguments concept.
3) Encapsulate logic in data structures.
4) Efficiently «plot» characters as «pixels»
The screen is composed of a set of environment variables holding fixed length strings that are ECHOed, one string per graphic line. Each character in a string represents a graphic «pixel». The variable name specifies the Y coordinate, and the position within the string the X coordinate. All «graphic» lines are created pixel by pixel just once upon initialization. From then on, a Plot macro uses simple SET substring operations to set the value of individual «pixels» as needed. There is no need to recompose the entire screen.
5) Snake definition
The snake is represented as variables containing a string of coordinates, one variable for X, and another for Y. The beginning of the string is the head, and the end is the tail. As the snake «moves» forward, simple SET substring operations are used to place a new coordinate at the front, and remove a coordinate from the rear.
6) Random food placement
A list of empty coordinates is maintained in a string variable so that food can be randomly placed without fear of colliding with an already occupied pixel. A random number between 0 and the count of available pixels is generated, and a SET substring operation is used to extract the available position. Then a SET search and replace is used to remove the newly occupied coordinates from the empty list. When the snake tail moves, the newly vacated pixel coordinates are appended to the end of the empty list.
7) Collision detection
Classic pixel probing is used to detect collisions. When the snake head is moving, a Test macro probes the value of the new position using a SET substring operation. The macro compares the current value against a list of allowable values. Disallowed values represent a collision.
A fixed delay between each main loop iteration can result in jerky movement because the amount of work required by an iteration varies depending on context. More work equates to more time. Instead of introducing a fixed delay between each iteration, I note the time the previous movement ended, and then continuously check how much time has elapsed since the last movement. I only initiate movement when the delay time is exceeded. As long as the time spent on any one iteration is always less then the delay time, then the motion will always be smooth.
The game even works well when I run it on an XP virtual machine within Windows 7. There is much more flicker, but it still remains fairly smooth.
Possible Enhancements
Obviously things like high score lists, user defined maps, rocks, etc. that are available in the original BATCHSNAKE.BAT could be imlemented.
The following ideas interest me more. At one point I was considering implementing the following ideas, but I ran out of steam.
1) Increased play field size
The empy pixel list is maintained in a variable with a max string length of 8191 bytes. That restricts the total area of the play field. The snake definition variables also restrict the size, but they support a larger area then the empty list. Maximum playfield size could be increased by splitting the empty list and snake definition over multiple variables. But that complicates the management of those lists.
2) Introduce enemy snakes
If the food is not eaten within a time limit, then it can spawn into an enemy snake. The enemy snake(s) can eat food or chase you. Shorter snakes move faster than longer snakes. A small snake can nibble at the tail of a large snake. A large snake can swallow a small snake whole if eaten head first. Running into the side of a snake results in a collision (death). This sounds complicated, but the logic need not be all that complex. And I believe there is plenty of performance bandwidth left to handle the added complexity without hurting the animation quality.
So, here at last is the code for SNAKE.BAT
Embedded in a comment at the top are instructions for how to disable the awfull beep that occurs when an invalid key is pressed.
EDIT: Added /C: option to the test for CHOICE to account for some internationalization issues
EDIT2: Added comma to DELIMS option when parsing time to support European decimal point
EDIT3: Changed 2nd CHOICE test to wait 1 second to support downloaded 16 bit version and fixed disappearing food
bug
EDIT4: One more CHOICE test change to account for fact that 16 bit version returns 0 if invalid arguments
ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠ³ΡΡ Π·ΠΌΠ΅ΠΉΠΊΠ° Π² Π±Π»Π°ΠΊΠ½ΠΎΡΠ΅
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ³ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ (snake) Π² ΠΏΡΠΎΡΡΠΎΠΌ Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° Python Π·Π° 5 ΠΌΠΈΠ½ΡΡ [ Pygame ] ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ³ΡΡ «ΠΠ ΠΠ‘Π’ΠΠΠ ΠΠΠΠΠΠ» Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ³ΡΠ° «ΠΠΌΠ΅ΠΉΠΊΠ°» Π½Π° Π‘ΠΊΡΠ΅ΡΡ 3 ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
Π£ΡΠΎΠΊΠΈ Python / ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ³ΡΡ ΠΠΌΠ΅ΠΉΠΊΠ° (ΠΠ°ΡΡΠ΅Ρ-ΠΊΠ»Π°ΡΡ) ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅ (Π§Π°ΡΡΡ I) ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ³ΡΠ° ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° ΡΠΈΡΡΠΎΠΌ JavaScript ΠΈ HTML5 Π·Π° 45 ΠΌΠΈΠ½ΡΡ! ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ³ΡΡ Π’Π΅Π½Π½ΠΈΡ Π½Π° ΠΠ°ΡΠΊΠ°Π»Π΅ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ³Ρ ΠΠΌΠ΅ΠΉΠΊΠ° ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Android ΠΈΠ³ΡΡ Π·Π° 10 ΠΌΠΈΠ½ΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Python! ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈΠ³ΡΡ ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° python pygame. Snake Game python pygame ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ Π½Π° C++: ΠΠ°ΡΠΈΠΎ (ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Ρ) ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠΈΡΠ΅ΠΌ 3D ΠΠ³ΡΡ Π·Π° 10 ΠΠΈΠ½ΡΡ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠΠ Π‘ΠΠΠΠΠ’Π¬ ΠΠΠ Π£ «ΠΠΠΠΠΠ» ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
Assembler #26: ΠΠΌΠ΅ΠΉΠΊΠ°,ΠΡΠ·ΠΎΠ² ΠΈΠ΄ΠΈΠΎΡΠ°ΠΌ ΠΎΡ Π‘++, ΠΡΠΎΡΡΠ΅ΠΉΡΠ΅Π΅ ΠΌΠ΅Π½Ρ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠΠ ΠΠΠΠΠ‘ΠΠ’Π¬ ΠΠΠ Π£ ΠΠΠΠΠΠ ΠΠ JS ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΠΌΠ΅ΠΉΠΊΠΈ Π½Π° C++ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
Π£ΡΠΎΠΊΠΈ ΠΏΠΎ Scratch. ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ³ΡΡ ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° Π‘ΠΊΡΠ΅ΡΡ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ? || ΠΠ»ΠΎΠΊΠ½ΠΎΡΠ½ΡΠΉ ΠΠ»ΠΎΠΊΠ½ΠΎΡ || ΠΠ°ΠΉΠ΄
ΠΠ»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΎΠ½Π»Π°ΠΉΠ½ ΠΊΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ ⤵
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ³ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ (snake) Π² ΠΏΡΠΎΡΡΠΎΠΌ Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠΠ Π‘ΠΠΠΠΠ’Π¬ ΠΠΠ Π£ «ΠΠΠΠΠΠ» ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ³ΡΡ «ΠΠ ΠΠ‘Π’ΠΠΠ ΠΠΠΠΠΠ» Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠΠΠΠΠ Π ΠΠΠΠΠΠΠ’Π (ΠΠΠ¦ΠΠΠΠ) ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° Python Π·Π° 5 ΠΌΠΈΠ½ΡΡ [ Pygame ] ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ «Π§ΠΠ‘Π«» Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ°ΠΉΠ΄ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΠ»ΠΎΠΊΠ½ΠΎΡ Π² Windows 10, ΡΠ°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ Π³Π°ΠΉΠ΄, Π±Π΅Π· Π»ΠΈΡΠ½Π΅ΠΉ Π²ΠΎΠ΄Ρ, ΠΈ Π²ΡΡΠΊΠΎΠ³ΠΎ Ρ Π»Π°ΠΌΠ° ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
Π£ΡΠΎΠΊΠΈ Python / ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ³ΡΡ ΠΠΌΠ΅ΠΉΠΊΠ° (ΠΠ°ΡΡΠ΅Ρ-ΠΊΠ»Π°ΡΡ) ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ³ΡΠ° ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° ΡΠΈΡΡΠΎΠΌ JavaScript ΠΈ HTML5 Π·Π° 45 ΠΌΠΈΠ½ΡΡ! ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ³ΡΡ Π½Π° Python ΠΏΠΎΠ΄ Android? (PyGame) ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Java: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ³ΡΡ ΠΠΌΠ΅ΠΉΠΊΠ°. Π§Π°ΡΡΡ 1. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠΠ Π‘ΠΠΠΠΠ’Π¬ ΠΠΠΠΠΠ£ Π ΠΠΠΠΠΠΠ’Π ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΠ°ΠΊΠΈΠΏΠ΅Π»ΠΎβ1(Π³Π°ΠΉΠ΄Ρ Ρ Π±Π»ΠΎΠΊΠ½ΠΎΡΠΎΠΌ) ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅ ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅