Как змСя Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ: Π’ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Π΅ Π·ΠΌΠ΅ΠΈ — ΡΡ‚Π°Ρ‚ΡŒΡ ΠΈΠ· сСрии «ДСтский ΠΎΡ‚Π΄Ρ‹Ρ…Β»

Запуск Π²ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ змСя — PROKITE

Π€Π΅ΡΡ‚ΠΈΠ²Π°Π»ΡŒ Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Ρ… Π·ΠΌΠ΅Π΅Π² Π² Π³ΠΎΡ€ΠΎΠ΄Π΅ ЧСрвия (Π˜Ρ‚Π°Π»ΠΈΡ)

НСт Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ змСя. ΠœΠ°ΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ, ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅ΠΌΠΎΠ΅ с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ, трСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаях, ΠΊΠΎΠ³Π΄Π° Π²Π΅Ρ‚Π΅Ρ€ слаб ΠΈΠ»ΠΈ Π½Π΅Ρ€ΠΎΠ²Π΅Π½. Π§Ρ‚ΠΎΠ±Ρ‹ ваш Π·ΠΌΠ΅ΠΉ ΠΏΠΎΠ»Π΅Ρ‚Π΅Π», Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ всСго Π΄Π²Π΅ Π²Π΅Ρ‰ΠΈ: Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ мСсто для запуска ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Π²Π΅Ρ‚Π΅Ρ€.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ мСсто β€” ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Ρ„Π°ΠΊΡ‚ΠΎΡ€ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ запуска. Π›ΡŽΠ±Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° ΠΏΡƒΡ‚ΠΈ Π²Π΅Ρ‚Ρ€Π° β€” Ρ…ΠΎΠ»ΠΌΡ‹, Π΄ΠΎΠΌΠ°, Π΄Π΅Ρ€Π΅Π²ΡŒΡ β€” ΡΠΎΠ·Π΄Π°ΡŽΡ‚ для Π½Π΅Π³ΠΎ ΠΏΡ€Π΅Π³Ρ€Π°Π΄Ρƒ, Π΄Π΅Π»Π°ΡŽΡ‚ Π΅Π³ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ нСустойчивым (Ρ‚ΡƒΡ€Π±ΡƒΠ»Π΅Π½Ρ‚Π½Ρ‹ΠΌ). Π’ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… условиях Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ змСя тяТСло ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ опасно. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ идСальноС мСсто для запуска β€” Π±Π΅Ρ€Π΅Π³ моря с Π²Π΅Ρ‚Ρ€ΠΎΠΌ, Π΄ΡƒΡŽΡ‰ΠΈΠΌ с Π²ΠΎΠ΄Ρ‹. Выбирая мСсто ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠΊΡ€ΡƒΠ³ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ прСпятствий для Π²Π΅Ρ‚Ρ€Π°, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΎΠ², Π° само мСсто нСсильно Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ людьми. ΠŸΠ»ΠΎΡ‰Π°Π΄ΠΊΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 40Ρ…40 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π²ΠΏΠΎΠ»Π½Π΅ достаточно.

Π‘ΠΈΠ»Π° Π²Π΅Ρ‚Ρ€Π°

ЧудСс Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚: Π±Π΅Π· Π²Π΅Ρ‚Ρ€Π° ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Ρ… Π·ΠΌΠ΅Π΅Π² Π»Π΅Ρ‚Π°Ρ‚ΡŒ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π½Π΅ Ρ‡Π΅ΠΌΠΏΠΈΠΎΠ½ ΠΌΠΈΡ€Π° ΠΏΠΎ Π±Π΅Π³Ρƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ своСго змСя, ΡƒΠ±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ‚Ρ€Π° достаточно. Π’Ρ€Π°Π²Π° ΠΏΠΎΠ΄ Π½ΠΎΠ³Π°ΠΌΠΈ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡˆΠ΅Π²Π΅Π»ΠΈΡ‚ΡΡ, ΠΊΠ°ΠΊ ΠΈ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ Π²Π΅Ρ‚ΠΊΠΈ Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² (Ссли ΡˆΠ΅Π²Π΅Π»ΡΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΈΡΡ‚ΡŒΡ β€” Π²Π΅Ρ‚Ρ€Π° Π½Π΅ достаточно), Ρ„Π»Π°Π³ΠΈ полощатся, Ρ€ΡΠ±ΡŒ Π½Π° Π²ΠΎΠ΄Π΅. По всСм этим ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ³ΠΎΠ΄Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для запуска. Когда Π²Π΅Ρ‚Π΅Ρ€ слишком ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΡΠ»ΠΎΠΌΠ°Ρ‚ΡŒ Π²ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ змСя, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Π²Π°ΠΌ Π½Π΅ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Π΅Ρ‚Π΅Ρ€ Π΄ΡƒΠ΅Ρ‚ Π² Π»ΠΈΡ†ΠΎ, Ρ‚ΠΎ скорСС всСго Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½Π΅ стоит.

НаправлСниС Π²Π΅Ρ‚Ρ€Π°

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π·ΠΌΠ΅ΠΉ Π»Π΅Ρ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π²Π΅Ρ‚Ρ€Π°, Ρ‚ΠΎ ΠΈ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΏΡ€ΠΈ запускС ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ, встав ΠΊ Π²Π΅Ρ‚Ρ€Ρƒ спиной ΠΈ располоТив змСя ΠΏΠ΅Ρ€Π΅Π΄ собой. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ‚Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всё Ρ‚Π΅Ρ… ΠΆΠ΅ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠ² β€” Ρ‚Ρ€Π°Π²Ρ‹, Π²Π΅Ρ‚ΠΎΠΊ, Ρ„Π»Π°Π³ΠΎΠ², Π΄Ρ‹ΠΌΠ°, Π»Π΅Π½Ρ‚ ограТдСния, Π½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ всСго с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ собствСнного Π»ΠΈΡ†Π°. НашС Π»ΠΈΡ†ΠΎ достаточно Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ подставляя Π΅Π³ΠΎ Π²Π΅Ρ‚Ρ€Ρƒ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½ Π΄ΡƒΠ΅Ρ‚, чувствуя Π΅Π³ΠΎ Π½Π° Ρ‰Π΅ΠΊΠ°Ρ…. Π’Π°ΠΊΠΆΠ΅ ваши Π΄Ρ€ΡƒΠ·ΡŒΡ, ΡƒΠΆΠ΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΠ²ΡˆΠΈΠ΅ своих Π·ΠΌΠ΅Π΅Π², прСкрасно ΠΏΠΎΠ΄ΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, ΠΊΡƒΠ΄Π° Π΄ΡƒΠ΅Ρ‚ Π²Π΅Ρ‚Π΅Ρ€.

Π’Π΅Ρ…Π½ΠΈΠΊΠ° запуска

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ запуск

(сила Π²Π΅Ρ‚Ρ€Π° любая, Π΄Π²Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, любой Π·ΠΌΠ΅ΠΉ)

Π­Ρ‚Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° Π²Π΅Π·Π΄Π΅ описана, ΠΈ всСм Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстна. Π’Π°Ρˆ Π΄Ρ€ΡƒΠ³ Π±Π΅Ρ€Ρ‘Ρ‚ змСя Π² Ρ€ΡƒΠΊΠΈ, Π° Π²Ρ‹ Ρ€Π°Π·ΠΌΠ°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΎΠΊΠΎΠ»ΠΎ 20 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π»Π΅Π΅Ρ€Π° ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΊ Π²Π΅Ρ‚Ρ€Ρƒ. ПослС этого Π²Ρ‹ ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ΡΡŒ спиной ΠΊ Π²Π΅Ρ‚Ρ€Ρƒ ΠΈ Π»ΠΈΡ†ΠΎΠΌ ΠΊ змСю, слСгка натягиваСтС Π»Π΅Π΅Ρ€. По вашСй ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π΄Ρ€ΡƒΠ³ отпускаСт змСя, Π° Π²Ρ‹ Ρ‚Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π² зависимости ΠΎΡ‚ силы Π²Π΅Ρ‚Ρ€Π° ΠΎΡΡ‚Π°Ρ‘Ρ‚Π΅ΡΡŒ Π½Π° мСстС (ΠΈ Π·ΠΌΠ΅ΠΉ сам поднимаСтся Π½Π°Π²Π΅Ρ€Ρ…) ΠΈΠ»ΠΈ, Ссли Π²Π΅Ρ‚Ρ€Π° Ρƒ Π·Π΅ΠΌΠ»ΠΈ нСдостаточно, Π΄Π΅Π»Π°Π΅Ρ‚Π΅ нСсколько шагов ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π±Π΅ΠΆΠΈΡ‚Π΅ Π½Π°Π·Π°Π΄, ΠΏΠΎΠΊΠ° Π½Π΅ почувствуСтС, Ρ‡Ρ‚ΠΎ Π·ΠΌΠ΅ΠΉ ΠΏΠΎΠΉΠΌΠ°Π» Π²Π΅Ρ‚Π΅Ρ€ ΠΈ рвётся дальшС Π²Π²Ρ‹ΡΡŒ.

Запуск с Ρ€ΡƒΠΊ

(Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ»ΠΈ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Π²Π΅Ρ‚Π΅Ρ€, ΠΎΠ΄ΠΈΠ½ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π·ΠΌΠ΅ΠΉ с ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ ΡƒΠ·Π΄Π΅Ρ‡ΠΊΠΎΠΉ ΠΈΠ»ΠΈ Π±Π΅Π· ΡƒΠ·Π΄Π΅Ρ‡ΠΊΠΈ)

Если ваш Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹ΠΉ Π·ΠΌΠ΅ΠΉ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ сконструирован, Ρ‚ΠΎ ΠΎΠ½ Π»Π΅Π³ΠΊΠΎ Π²Π·Π»Π΅Ρ‚ΠΈΡ‚ ΠΈΠ· Π²Π°ΡˆΠΈΡ… Ρ€ΡƒΠΊ Π±Π΅Π· постороннСй ΠΏΠΎΠΌΠΎΡ‰ΠΈ. Π’Ρ‹ Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ Π·Π° Π»Π΅Π΅Ρ€ прямо ΠΎΠΊΠΎΠ»ΠΎ змСя, ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ Π΅Π³ΠΎ носом Π²Π²Π΅Ρ€Ρ…, слСгка тянСтС Π½Π° сСбя, отрывая Π΅Π³ΠΎ ΠΎΡ‚ Π·Π΅ΠΌΠ»ΠΈ, ΠΈ Π·ΠΌΠ΅ΠΉ ΡƒΠΆΠ΅ висит Ρƒ вас Π½Π°Π΄ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ просто Ρ€Π°Π·ΠΌΠ°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π»Π΅Π΅Ρ€.

Запуск β€œΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ β€” ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒβ€

(слабый ΠΈΠ»ΠΈ Π½Π΅Ρ€ΠΎΠ²Π½Ρ‹ΠΉ Π²Π΅Ρ‚Π΅Ρ€, малСнькоС пространство для запуска, 1–2 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°)

Π­Ρ‚Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ сил ΠΈ ΡΠ±Π΅Ρ€Π΅Ρ‡ΡŒ пространство для запуска. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π°Π»Π΅ΠΊΠΎ Π±Π΅ΠΆΠ°Ρ‚ΡŒ, ΠΏΡ‹Ρ‚Π°ΡΡΡŒ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ своСго Π²ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ змСя ΠΏΠΎΠ²Ρ‹ΡˆΠ΅ Π² Π½Π°Π΄Π΅ΠΆΠ΄Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π²Π΅Ρ‚Π΅Ρ€ сильнСС ΠΈ Ρ€ΠΎΠ²Π½Π΅Π΅. Π’Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π΄Π²ΡƒΡ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… случаСв (с Ρ€ΡƒΠΊ ΠΈΠ»ΠΈ с Ρ€Π°Π·ΠΌΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π΅Ρ€ΠΎΠΌ ΠΈ Π·ΠΌΠ΅Π΅ΠΌ Π² Ρ€ΡƒΠΊΠ°Ρ… Π΄Ρ€ΡƒΠ³Π°). Π’Ρ‹, отступая Π½Π°Π·Π°Π΄ ΠΈ Π½Π΅ разматывая Π»Π΅Π΅Ρ€ (это Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚), запускаСтС змСя Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΈ этой Π΄Π»ΠΈΠ½Π΅ Π»Π΅Π΅Ρ€Π° высоту, Π·Π°Ρ‚Π΅ΠΌ отпускаСтС Π»Π΅Π΅Ρ€, давая Π²Π°ΡˆΠ΅ΠΌΡƒ змСю Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ спустится ΠΏΠΎΡ‡Ρ‚ΠΈ Π΄ΠΎ самой Π·Π΅ΠΌΠ»ΠΈ ΠΈ ΠΏΡ€ΠΈ этом Ρ€Π°Π·ΠΌΠΎΡ‚Π°Ρ‚ΡŒ Π»Π΅Π΅Ρ€ (Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π°Π·Π°Π΄, Ρ‚Π΅ΠΌ самым увСличивая Π΄Π»ΠΈΠ½Ρƒ Ρ€Π°Π·ΠΌΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π»Π΅Π΅Ρ€Π°). Π£ самой Π·Π΅ΠΌΠ»ΠΈ Π²Ρ‹ ΠΎΠΏΡΡ‚ΡŒ фиксируСтС Π»Π΅Π΅Ρ€ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚Π΅ ΠΎΡ‚ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ, снова поднимая змСя Π½Π° максимально Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ ΠΏΡ€ΠΈ этой Π΄Π»ΠΈΠ½Π΅ высоту. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² этот ΠΌΠ°Π½Ρ‘Π²Ρ€ нСсколько Ρ€Π°Π·, Π²Ρ‹, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, достигнСтС Ρ‚ΠΎΠΉ высоты, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Π΅Ρ‚Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ достаточно для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·ΠΌΠ΅ΠΉ стал сам ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π² Π½Π΅Π±ΠΎ Π±Π΅Π· вашСй ΠΏΠΎΠΌΠΎΡ‰ΠΈ.

Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ

Запуск змСя β€” ΠΎΠ΄Π½Π° ΠΈΠ· самых бСзопасных ΠΈΠ³Ρ€, Π½ΠΎ ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… условиях.

  • Никогда Π½Π΅ запускайтС змСя Π²Π±Π»ΠΈΠ·ΠΈ Π»ΠΈΠ½ΠΈΠΉ элСктропСрСдач ΠΈΠ»ΠΈ Π² Π³Ρ€ΠΎΠ·Ρƒ β€” Π²Ρ‹ рискуСтС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠ΄Π°Ρ€ Ρ‚ΠΎΠΊΠΎΠΌ.
  • Никогда Π½Π΅ запускайтС Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Ρ… Π·ΠΌΠ΅Π΅Π² Π²Π±Π»ΠΈΠ·ΠΈ аэропортов
    β€” Ρ€Π°Π΄ΠΈ спокойствия диспСтчСрских слуТб ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш Π·ΠΌΠ΅ΠΉ Π½Π΅ ΠΏΠΎΠΏΠ°Π» Π² Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ садящСгося ΠΈΠ»ΠΈ Π²Π·Π»Π΅Ρ‚Π°ΡŽΡ‰Π΅Π³ΠΎ самолёта.
  • Никогда Π½Π΅ запускайтС змСя Π½Π°Π΄ скоплСниСм людСй, Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠΉ Π΄ΠΎΡ€ΠΎΠ³ΠΎΠΉ β€” Π·ΠΌΠ΅ΠΈ всё-Ρ‚Π°ΠΊΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ сами ΠΈΠ»ΠΈ своим Π»Π΅Π΅Ρ€ΠΎΠΌ нанСсти ΠΏΠΎΡ€ΠΎΠΉ достаточно ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΡƒΡŽ Ρ‚Ρ€Π°Π²ΠΌΡƒ ΠΈΠ»ΠΈ просто Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π·Π°ΠΊΠΎΠ½Π½ΠΎΠ΅ Π½Π΅Π΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΎ.
  • ПолСзно, Π° Π² случаС с большим Π·ΠΌΠ΅Π΅ΠΌ просто Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Π½Π°Π΄Π΅Π²Π°Ρ‚ΡŒ ΠΊΠΎΠΆΠ°Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Ρ‡Π°Ρ‚ΠΊΠΈ, запуская змСя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ Π»Π΅Π΅Ρ€ΠΎΠΌ собствСнныС Ρ€ΡƒΠΊΠΈ.
  • Π‘Π΅Ρ€Π΅Π³ΠΈΡ‚Π΅ Π³Π»Π°Π·Π°: Π½Π°Π΄Π΅Π²Π°ΠΉΡ‚Π΅ солнцСзащитныС ΠΎΡ‡ΠΊΠΈ.

Π—ΠΌΠ΅ΠΉ Π½Π΅ Π²Π·Π»Π΅Ρ‚Π°Π΅Ρ‚?

Π”Π°, это ΠΏΠ΅Ρ‡Π°Π»ΡŒΠ½ΠΎ, Π½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ наши совСты. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ это Ρ€Π΅ΡˆΠΈΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

ЀСстивали β€” это ΠΊΡ€ΡƒΡ‚ΠΎ!

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ выглядит Π½Π΅Π±ΠΎ, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹ΠΌΠΈ змСями? Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ наш Π³ΠΈΠ΄ ΠΏΠΎ Π»ΡƒΡ‡ΡˆΠΈΠΌ фСстивалям Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Ρ… Π·ΠΌΠ΅Π΅Π² ΠΌΠΈΡ€Π°.

Как Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π²ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ змСя?

Запуск Π²ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ змСя всСгда ΠΏΡ€Π°Π·Π΄Π½ΠΈΠΊ ΠΈ для Π΄Π΅Ρ‚Π΅ΠΉ ΠΈ для взрослых, благодаря ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ массу радостных эмоций Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, сколько Π²Π°ΠΌ Π»Π΅Ρ‚, ΠΊΠ°ΠΊΠΎΠ² ваш статус ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² общСствС.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ ΠΎΡ‚ запуска Π²ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ змСя, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ²Π»Π°Π΄Π΅Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ вашСго змСя Π² Π²ΠΎΠ·Π΄ΡƒΡ… Π½Π΅ бСгая понапрасну, ΠΈ эти ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ дСтям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ смогут это Π»Π΅Π³ΠΊΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ сами.

Π’ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹ΠΉ Ρ€Π°Π·Π²Π΅Π΄Ρ‡ΠΈΠΊ

ΠšΠΎΡ€ΠΎΠ±Ρ‡Π°Ρ‚Ρ‹ΠΉ Π·ΠΌΠ΅ΠΉ

Π­Ρ‚Π°ΠΆΠ΅Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ Π·ΠΌΠ΅ΠΉ

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹ΠΉ Π·ΠΌΠ΅ΠΉ

Запуск Π²ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ змСя ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Ρ€Π°ΡΡΠ»Π°Π±ΠΈΡ‚ΡŒΡΡ, Π·Π°Ρ€ΡΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ эмоциями ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅ с успСхом замСняя занятия Π² Π΄ΡƒΡˆΠ½ΠΎΠΌ спортзалС. Однако Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΡƒΠ΄Π°Ρ‡Π½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ вашСго Π²ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ змСя слСдуСт ΡΠΎΠ±Π»ΡŽΡΡ‚ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°.

ОсновноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ стоит Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ это Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ Π±Π΅Π³ Π½ΡƒΠΆΠ΅Π½ лишь для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΡŠΠ΅ΠΌΠ½ΡƒΡŽ силу, ΠΊΠΎΠ³Π΄Π° Π²Π΅Ρ‚Π΅Ρ€ Ρƒ Π·Π΅ΠΌΠ»ΠΈ слабый ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ СстСствСнныС ΠΏΡ€Π΅Π³Ρ€Π°Π΄Ρ‹, Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊ. Если Π²Π΅Ρ‚Π΅Ρ€ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ змСя ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ стоя Π½Π° ΠΎΠ΄Π½ΠΎΠΌ мСстС.

Π›ΡƒΡ‡ΡˆΠ΅Π΅ условиС для запуска – ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π²Π΅Ρ‚Ρ€Π° ΠΎΡ‚ 6 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² сСкунду. НуТно ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π²Π΅Ρ‚Π΅Ρ€, ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²Π΅Ρ€Π΅Π²ΠΎΡ‡ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ высоту, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊ Π²ΠΎΠ·Π»Π΅ Π·Π΅ΠΌΠ»ΠΈ Π²Π΅Ρ‚Π΅Ρ€ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Ρ‡ΠΈΠ²Ρ‹ΠΉ ΠΈΠ·-Π·Π° Π»Π°Π½Π΄ΡˆΠ°Ρ„Ρ‚Π°. Π§ΡƒΡ‚ΡŒ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅ – ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² 5-10 ΠΎΡ‚ Π·Π΅ΠΌΠ»ΠΈ Π²Π΅Ρ‚Π΅Ρ€ ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ. Π§Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ, Ρ‚Π΅ΠΌ большС шансов, Ρ‡Ρ‚ΠΎ Π·ΠΌΠ΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ Π»Π΅Ρ‚Π°Ρ‚ΡŒ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Π΅ Π·ΠΌΠ΅ΠΈ достаточно большиС, Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΠΏΡ€Π΅Π½Π΅Π±Ρ€Π΅Π³Π°Ρ‚ΡŒ систСмой управлСния.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ°Ρ‚ΡƒΡˆΠΊΠΎΠΉ с Π²Π΅Ρ€Π΅Π²ΠΊΠΎΠΉ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, Ρ‡Π΅ΠΌ с Π²Π΅Ρ€Π΅Π²ΠΊΠΎΠΉ, Π½Π°ΠΌΠΎΡ‚Π°Π½Π½ΠΎΠΉ Π½Π° ΠΊΠ°ΠΊΡƒΡŽ-Ρ‚ΠΎ ΠΏΠ°Π»ΠΎΡ‡ΠΊΡƒ. Π’ Π½Π΅ΠΉ ΡƒΠΆΠ΅ прСдусмотрСна Π·Π°Ρ‰ΠΈΡ‚Π° для Ρ€ΡƒΠΊ. Если Π²Π΅Ρ‚Π΅Ρ€ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΉ, ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄Π΅Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Ρ‡Π°Ρ‚ΠΊΠΈ. Π’ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠΌΡƒ змСю ΠΏΠΎΠ΄ силу ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒΡΡ Π²Π²Π΅Ρ€Ρ… Π΄ΠΎ 500 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Но Π² этом Π½Π΅Ρ‚ смысла, ΡƒΠ²Π΅Ρ€ΡΡŽΡ‚ ΡƒΠ²Π»Π΅Ρ‡Π΅Π½Π½Ρ‹Π΅ люди. Π“Π»Π°Π²Π½ΠΎΠ΅ ΡΠΎΠ·Π΅Ρ€Ρ†Π°Ρ‚ΡŒ Π·Π° происходящим, Π° Π½Π΅ Ρ€Π°Π·Π³Π»ΡΠ΄Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ Π² Π½Π΅Π±Π΅.

НСкоторыС ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ каркасныС Π·ΠΌΠ΅ΠΈ вмСсто Π½Π°Π΄ΡƒΠ²Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ змСя ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ Π² Π½Π΅Π±ΠΎ ΠΈ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ красивыС ΠΏΠ°Π½ΠΎΡ€Π°ΠΌΡ‹. Π₯вост Π² Π΅Π³ΠΎ конструкции β€” Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для красоты. Π₯вост Ρ…ΠΎΡ€ΠΎΡˆΠΎ стабилизируСт змСя, Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΆΠ°Π΅Ρ‚ аэродинамичСскоС качСство. НСкоторыС Π·ΠΌΠ΅ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ лСтят ΠΈ Π±Π΅Π· хвоста.

ΠšΠ°Ρ€ΠΊΠ°ΡΠ½Ρ‹Π΅ Π·ΠΌΠ΅ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π»Π΅Ρ‚Π°Ρ‚ΡŒ Π² Π½Π΅ Π²Π΅Ρ‚Ρ€Π΅Π½ΡƒΡŽ ΠΏΠΎΠ³ΠΎΠ΄Ρƒ. Для запуска достаточно Π²Π΅Ρ‚Ρ€Π° силой Π΄ΠΎ 4 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π² сСкунду. ΠŸΠΈΠ»ΠΎΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π·ΠΌΠ΅ΠΈ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π²Π²Ρ‹ΡΡŒ максимум Π½Π° 50 ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΏΠΎΠΊΠΎΡ€ΠΈΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ тСрпСния ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ Ρ…ΠΈΡ‚Ρ€Ρ‹Π΅ двиТСния доводятся Π΄ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΌΠ°. Если Π½ΠΈΠΆΠ½ΠΈΠ΅ стропы ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π²Π²Π΅Ρ€Ρ…, Ρ‚ΠΎ Π·ΠΌΠ΅ΠΉ, соотвСтствСнно, поднимаСтся Π²Π²Π΅Ρ€Ρ…, ΠΊΠΎΠ³Π΄Π° Ρ€ΡƒΡ‡ΠΊΠΈ ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ стропами Π²Π½ΠΈΠ·, ΠΎΠ½ опускаСтся Π²Π½ΠΈΠ·. Если ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ сторону, ΠΎΠ½ поворачиваСтся.

ЗапуститС Π² Π½Π΅Π±ΠΎ Π²ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ змСя, ΠΏΠΎΠ·Π²ΠΎΠ»ΡŒΡ‚Π΅ сСбС ΠΏΠΎΠ±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π±Π΅Π½ΠΊΠΎΠΌ.

Π§ΠΈΡ‚Π°Ρ‚ΡŒ: Π’ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Π΅ Π·ΠΌΠ΅ΠΈ, ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π’ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Ρ… Π·ΠΌΠ΅Π΅Π²

Π€ΠΎΡ‚ΠΎ Π’ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Ρ… Π·ΠΌΠ΅Π΅Π²

Π’ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Π΅ Π·ΠΌΠ΅ΠΈ, Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Π΄Π°Π½Π½ΠΎΠΌ альбомС, ΠΎΠ΄Π½Π° ΠΈΠ· самых Π΄Ρ€Π΅Π²Π½ΠΈΡ… ΠΈ Π΄ΠΎ сих ΠΏΠΎΡ€ ΠΎΡ‡Π΅Π½ΡŒ популярных ΠΈΠ³Ρ€ΡƒΡˆΠ΅ΠΊ Ρƒ Π΄Π΅Ρ‚Π΅ΠΉ. Π˜Π·ΠΎΠ±Ρ€Π΅Ρ‚Π΅Π½Π½Ρ‹Π΅ Π΅Ρ‰Ρ‘ Π΄ΠΎ нашСй эры Π² ΠšΠΈΡ‚Π°Π΅, Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Π΅…

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Ρ„Π°ΠΊΡ‚Ρ‹ ΠΏΡ€ΠΎ Π²ΠΎΠ·Π΄ΡƒΡˆΠ½ΠΎΠ³ΠΎ змСя

Π’ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹ΠΉ Π·ΠΌΠ΅ΠΉ относится ΠΊ Π΄Ρ€Π΅Π²Π½Π΅ΠΉΡˆΠΈΠΌ Π»Π΅Ρ‚Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π°ΠΌ. ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎ Π½Π΅ΠΌ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ Π·Π° нСсколько Π²Π΅ΠΊΠΎΠ² Π΄ΠΎ Π½Π°Ρ‡Π°Π»Π° Π½ΠΎΠ²ΠΎΠ³ΠΎ лСтосчислСния. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ всю Ρ‚Ρƒ ΠΏΠΎΠ»ΡŒΠ·Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ принСсло использованиС этого, ΠΊΠ°Π·Π°Π»ΠΎ Π±Ρ‹ Π½Π΅Ρ…ΠΈΡ‚Ρ€ΠΎΠ³ΠΎ…

ЗмСиная ΠΈΠ³Ρ€Π° Π½Π° Python | ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Snake Game с использованиСм Pygame

Π‘Ρ‚Π°Ρ‚ΡŒ сСртифицированным профСссионалом

Π”Π°, я знаю, Ρ‡Ρ‚ΠΎ Π²Ρ‹ всС ΠΈΠ³Ρ€Π°Π»ΠΈ Π² Snake Game ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ. Π’ дСтствС ΠΌΡ‹ всС любили ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ‡ΠΈΡ‚Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ сообщСниС Β«Π˜Π³Ρ€Π° ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π°Β», Π½ΠΎ, ΠΊΠ°ΠΊ Ρ‚Π΅Ρ…Π½Π°Ρ€ΠΈ, я знаю, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эта «ЗмСя» Ρ‚Π°Π½Ρ†Π΅Π²Π°Π»Π° ΠΏΠΎΠ΄ ваши Π±ΠΈΡ‚Ρ‹. Π­Ρ‚ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ я ΠΏΠΎΠΊΠ°ΠΆΡƒ Π²Π°ΠΌ всСм Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎΠ± ΠΈΠ³Ρ€Π΅ Snake Π½Π° Python.

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ свою ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒΡΡ ΠΏΠΎ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½ΠΎΠΉ лСстницС? ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΊ Π½Π°ΡˆΠ΅ΠΌΡƒ курсу Data Science with Python.
ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΎ рассмотрим всС части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΈΠ³Ρ€Ρƒ Snake Π½Π° Python:

  1. Установка Pygame
  2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экрана
  3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ
  4. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ
  5. 90 015 Π˜Π³Ρ€Π° ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π°, ΠΊΠΎΠ³Π΄Π° Π—ΠΌΠ΅ΠΉΠΊΠ° достигаСт Π³Ρ€Π°Π½ΠΈΡ†
  6. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π΄Ρ‹
  7. Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ Π·ΠΌΠ΅ΠΉΠΊΠΈ
  8. ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ счСта

Установка Pygame:

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pygame, β€” это ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° свои систСмы. Для этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

pip install pygame

ПослС этого просто ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Pygame ΠΈ Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΠ³Ρ€Ρ‹. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС, взглянитС Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Pygame, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ использовались Π² этой ΠΈΠ³Ρ€Π΅ Snake, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ… описания.

Ѐункция ОписаниС

init()

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ всС ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Pygame (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° успСх ΠΈΠ»ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Ρƒ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ)

display.set_mode()

9 0048
ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΈΠ»ΠΈ список Π² качСствС своСго ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ для создания повСрхности (ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ)

update()

ΠžΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ‚ экран

quit()

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π΄Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСго

set_caption()

УстанавливаСт тСкст Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π²Π²Π΅Ρ€Ρ…Ρƒ экрана

event.get()

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список всСх события

Surface.fill( )

Π—Π°Π»ΡŒΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ ΡΠΏΠ»ΠΎΡˆΠ½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ

time.Clock()

ΠŸΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ врСмя time

font.SysF ont()

Боздаст ΡˆΡ€ΠΈΡ„Ρ‚ Pygame ΠΈΠ· систСмы ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ²Ρ‹Π΅ рСсурсы

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экрана:

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экран с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Pygame, Π²Π°ΠΌ потрСбуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ display. set_mode()

. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π°ΠΌ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ init() ΠΈ quit() для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π΄Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ всСго Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ΄Π°. ΠœΠ΅Ρ‚ΠΎΠ΄ update() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обновлСния Π»ΡŽΠ±Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, сдСланных Π½Π° экранС. БущСствуСт Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, flip() , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ update(). Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ update() обновляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ сдСланныС измСнСния (ΠΎΠ΄Π½Π°ΠΊΠΎ, Ссли ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹, обновляСтся вСсь экран), Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ flip() снова ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°Π΅Ρ‚ вСсь экран.

ΠšΠžΠ”:

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ pygame
pygame.init()
дис=pygame.display.set_mode((400,300))
pygame.display.update()
pygame.Π²Ρ‹ΠΉΡ‚ΠΈ()
quit() 

Π’Π«Π’ΠžΠ”:

Но ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ запуститС этот ΠΊΠΎΠ΄, экран появится, Π½ΠΎ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ сразу ΠΆΠ΅ закроСтся. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» while, ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ я фактичСски Π²Ρ‹ΠΉΠ΄Ρƒ ΠΈΠ· ΠΈΠ³Ρ€Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

 import pygame
pygame.
init() дис=pygame.display.set_mode((400,300)) pygame.display.update() pygame.display.set_caption('Π—ΠΌΠ΅ΠΉΠΊΠ° ΠΎΡ‚ Edureka') game_over = Π›ΠΎΠΆΡŒ ΠΏΠΎΠΊΠ° Π½Π΅ game_over: для события Π² pygame.event.get(): print(event) #распСчатываСт всС дСйствия, происходящиС Π½Π° экранС pygame.Π²Ρ‹ΠΉΡ‚ΠΈ() Π²Ρ‹ΠΉΡ‚ΠΈ()

Когда Π²Ρ‹ запуститС этот ΠΊΠΎΠ΄, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ экран, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ€Π°Π½Π΅Π΅, Π½Π΅ закрываСтся, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ½ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ происходят Π½Π°Π΄ Π½ΠΈΠΌ. Π― сдСлал это, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ event.get() . ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я Π½Π°Π·Π²Π°Π» экран Β«Snake Game by EdurekaΒ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ display.set_caption() .

Π’Π«Π’ΠžΠ”:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ экран для ΠΈΠ³Ρ€Ρ‹ Π² Π·ΠΌΠ΅ΠΉΠΊΡƒ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ закрытия, экран Π½Π΅ закрываСтся. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ваш экран Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°ΠΆΠΌΠ΅Ρ‚Π΅ эту ΠΊΠ½ΠΎΠΏΠΊΡƒ закрытия. Для этого Pygame прСдоставляСт событиС ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«Π’Π«Π₯ΠžΠ”Β», ΠΈ Π΅Π³ΠΎ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:0004

ΠΈΠΌΠΏΠΎΡ€Ρ‚ pygame pygame. init() дис=pygame.display.set_mode((400,300)) pygame.display.update() pygame.display.set_caption('Π—ΠΌΠ΅ΠΉΠΊΠ° ΠΎΡ‚ Edureka') game_over = Π›ΠΎΠΆΡŒ ΠΏΠΎΠΊΠ° Π½Π΅ game_over: для события Π² pygame.event.get(): Ссли event.type==pygame.Π’Π«Π™Π’Π˜: game_over = Π˜ΡΡ‚ΠΈΠ½Π° pygame.Π²Ρ‹ΠΉΡ‚ΠΈ() quit()

Π˜Ρ‚Π°ΠΊ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ваш экран Π³ΠΎΡ‚ΠΎΠ². Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ β€” Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ змСю Π½Π° экранС, Ρ‡Ρ‚ΠΎ рассматриваСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ змСю:

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ змСю, я сначала ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽ нСсколько Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΠΊΡ€Π°ΡΠΈΡ‚ΡŒ змСю, Π΅Π΄Ρƒ, экран ΠΈ Ρ‚. Π΄. ЦвСтовая схСма, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π² Pygame, β€” это RGB, Ρ‚. Π΅. Β«ΠšΡ€Π°ΡΠ½Ρ‹ΠΉ Π—Π΅Π»Π΅Π½Ρ‹ΠΉ Π‘ΠΈΠ½ΠΈΠΉΒ» . Если Π²Ρ‹ установитС всС это Π½Π° 0, Ρ†Π²Π΅Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ, Π° всС 255 Π±ΡƒΠ΄ΡƒΡ‚ Π±Π΅Π»Ρ‹ΠΌΠΈ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ наша змСя Π½Π° самом Π΄Π΅Π»Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠΌ. Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΈ Π² Pygame, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ 9.0008 draw.rect()Β 

, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ pygame
pygame. init()
дис=pygame.display.set_mode((400,300))
pygame.display.set_caption('Π—ΠΌΠ΅ΠΉΠΊΠ° ΠΎΡ‚ Edureka')
синий = (0,0,255)
красный=(255,0,0)
game_over = Π›ΠΎΠΆΡŒ
ΠΏΠΎΠΊΠ° Π½Π΅ game_over:
    для события Π² pygame.event.get():
        Ссли event.type==pygame.Π’Π«Π™Π’Π˜:
            game_over = Π˜ΡΡ‚ΠΈΠ½Π°
    pygame.draw.rect(dis,синий,[200,150,10,10])
    pygame.display.update()
pygame.Π²Ρ‹ΠΉΡ‚ΠΈ()
Π²Ρ‹ΠΉΡ‚ΠΈ() 

Π’Π«Π’ΠžΠ”:

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π·ΠΌΠ΅Π΅Π³ΠΎΠ»ΠΎΠ² создан Π² Π²ΠΈΠ΄Π΅ синСго ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ змСю Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΈ:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ змСю, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ события, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² классС KEYDOWN Pygame. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ события K_UP, K_DOWN, K_LEFT ΠΈ K_RIGHT, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ змСю Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²Π²Π΅Ρ€Ρ…, Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ соотвСтствСнно. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, экран дисплСя мСняСтся с Ρ‡Π΅Ρ€Π½ΠΎΠ³ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π° Π±Π΅Π»Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ 9.0008 ΠΌΠ΅Ρ‚ΠΎΠ΄ fill()

.

Π― создал Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ x1_change ΠΈ y1_change для хранСния ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ x ΠΈ y.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ pygame
pygame.init()
Π±Π΅Π»Ρ‹ΠΉ = (255, 255, 255)
Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ = (0, 0, 0)
красный = (255, 0, 0)
dis = pygame.display.set_mode((800, 600))
pygame.display.set_caption('Π—ΠΌΠ΅ΠΉΠΊΠ° ΠΎΡ‚ Edureka')
game_over = Π›ΠΎΠΆΡŒ
Ρ…1 = 300
Ρƒ1 = 300
Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
часы = pygame.time.Clock()
ΠΏΠΎΠΊΠ° Π½Π΅ game_over:
    для события Π² pygame.event.get():
        Ссли event.type == pygame.Π’Π«Π™Π’Π˜:
            game_over = Π˜ΡΡ‚ΠΈΠ½Π°
        Ссли event.type == pygame.KEYDOWN:
            Ссли event.key == pygame.K_LEFT:
                x1_change = -10
                Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
            elif event.key == pygame.K_RIGHT:
                Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 10
                Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
            Π­Π»ΠΈΡ„ event.key == pygame.K_UP:
                y1_change = -10
                Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
            Π­Π»ΠΈΡ„ event.key == pygame.K_DOWN:
                Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 10
                Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
    x1 += x1_change
    y1 += y1_change
    дис.Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅(Π±Π΅Π»Ρ‹ΠΉ)
    pygame.draw.rect(dis, Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ, [x1, y1, 10, 10])
    pygame.
display.update() часы.Ρ‚ΠΈΠΊ(30) pygame.Π²Ρ‹ΠΉΡ‚ΠΈ() Π²Ρ‹ΠΉΡ‚ΠΈ()

Π’Π«Π’ΠžΠ”:

Π˜Π³Ρ€Π° ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π°, ΠΊΠΎΠ³Π΄Π° ЗмСя достигаСт Π³Ρ€Π°Π½ΠΈΡ†:

Π’ этой ΠΈΠ³Ρ€Π΅ со змСями, Ссли ΠΈΠ³Ρ€ΠΎΠΊ достигаСт Π³Ρ€Π°Π½ΠΈΡ† экрана, ΠΎΠ½ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ это, я использовал ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ для ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ x ΠΈ y Π·ΠΌΠ΅ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ экрана. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ я ΡƒΠ΄Π°Π»ΠΈΠ» Ρ…Π°Ρ€Π΄ΠΊΠΎΠ΄Ρ‹ ΠΈ вмСсто этого использовал ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ измСнСния Π² ΠΈΠ³Ρ€Ρƒ ΠΏΠΎΠ·ΠΆΠ΅.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ pygame
врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
pygame.init()
Π±Π΅Π»Ρ‹ΠΉ = (255, 255, 255)
Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ = (0, 0, 0)
красный = (255, 0, 0)
dis_width = 800
dis_height = 600
dis = pygame.display.set_mode((dis_width, dis_width))
pygame.display.set_caption('Π—ΠΌΠ΅ΠΉΠΊΠ° ΠΎΡ‚ Edureka')
game_over = Π›ΠΎΠΆΡŒ
x1 = ΡˆΠΈΡ€ΠΈΠ½Π°_ΡˆΠΈΡ€ΠΈΠ½Ρ‹/2
Ρƒ1 = высота_высоты/2
змСя_блок = 10
Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
часы = pygame.time.Clock()
змСя_ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ=30
font_style = pygame. font.SysFont (Π½Π΅Ρ‚, 50)
сообщСниС Π·Π°Ρ‰ΠΈΡ‚Ρ‹ (сообщСниС, Ρ†Π²Π΅Ρ‚):
    сообщСниС = ΡΡ‚ΠΈΠ»ΡŒ_ΡˆΡ€ΠΈΡ„Ρ‚Π°.Ρ€Π΅Π½Π΄Π΅Ρ€ (сообщСниС, Π˜ΡΡ‚ΠΈΠ½Π°, Ρ†Π²Π΅Ρ‚)
    dis.blit(mesg, [dis_width/2, dis_height/2])
ΠΏΠΎΠΊΠ° Π½Π΅ game_over:
    для события Π² pygame.event.get():
        Ссли event.type == pygame.Π’Π«Π™Π’Π˜:
            game_over = Π˜ΡΡ‚ΠΈΠ½Π°
        Ссли event.type == pygame.KEYDOWN:
            Ссли event.key == pygame.K_LEFT:
                x1_change = -snake_block
                Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
            elif event.key == pygame.K_RIGHT:
                x1_change = Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_Π±Π»ΠΎΠΊ
                Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
            Π­Π»ΠΈΡ„ event.key == pygame.K_UP:
                y1_change = -snake_block
                Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
            Π­Π»ΠΈΡ„ event.key == pygame.K_DOWN:
                y1_change = Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_Π±Π»ΠΎΠΊ
                Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
    Ссли x1 >
= dis_width ΠΈΠ»ΠΈ x1 < 0 ΠΈΠ»ΠΈ y1 >= dis_height ΠΈΠ»ΠΈ y1 < 0: game_over = Π˜ΡΡ‚ΠΈΠ½Π° x1 += x1_change y1 += y1_change дис.Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅(Π±Π΅Π»Ρ‹ΠΉ) pygame.draw.rect(dis, Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ, [x1, y1, змСя_Π±Π»ΠΎΠΊ, змСя_Π±Π»ΠΎΠΊ]) pygame. display.update() часы.Ρ‚ΠΈΠΊ (snake_speed) сообщСниС("Π’Ρ‹ потСряли",красный) pygame.display.update() врСмя сна(2) pygame.Π²Ρ‹ΠΉΡ‚ΠΈ() Π²Ρ‹ΠΉΡ‚ΠΈ()

Π’Π«Π’ΠžΠ”:

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΅Π΄Ρ‹:

Π—Π΄Π΅ΡΡŒ я добавлю Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π΄Ρ‹ для Π·ΠΌΠ΅ΠΈ, ΠΈ ΠΊΠΎΠ³Π΄Π° змСя пСрСсСчСт эту Π΅Π΄Ρƒ, Ρƒ мСня появится сообщСниС Β«Π’ΠΊΡƒΡΠ½ΡΡˆΠΊΠ°!!Β». ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, я внСсу нСбольшоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ² Π² Π½Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΈΠ³Ρ€Ρ‹ ΠΈΠ»ΠΈ снова ΡΡ‹Π³Ρ€Π°Ρ‚ΡŒ Π² случаС ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹ΡˆΠ°.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ pygame
врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ случайный
pygame.init()
Π±Π΅Π»Ρ‹ΠΉ = (255, 255, 255)
Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ = (0, 0, 0)
красный = (255, 0, 0)
синий = (0, 0, 255)
dis_width = 800
dis_height = 600
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Π—ΠΌΠ΅ΠΉΠΊΠ° ΠΎΡ‚ Edureka')
часы = pygame.time.Clock()
змСя_блок = 10
змСя_ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ = 30
font_style = pygame.font.SysFont (Π½Π΅Ρ‚, 30)
сообщСниС def (msg, Ρ†Π²Π΅Ρ‚):
    сообщСниС = ΡΡ‚ΠΈΠ»ΡŒ_ΡˆΡ€ΠΈΡ„Ρ‚Π°.Ρ€Π΅Π½Π΄Π΅Ρ€ (сообщСниС, Π˜ΡΡ‚ΠΈΠ½Π°, Ρ†Π²Π΅Ρ‚)
    dis.blit(mesg, [dis_width/3, dis_height/3])
def gameLoop(): # созданиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
    game_over = Π›ΠΎΠΆΡŒ
    game_close = Π›ΠΎΠΆΡŒ
    x1 = ΡˆΠΈΡ€ΠΈΠ½Π°_Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ / 2
    Ρƒ1 = высота_высоты / 2
    Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
    Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
    foodx = round(random. randrange(0, dis_width - змСя_блок) / 10,0) * 10,0
    foody = round(random.randrange(0, dis_width - змСя_блок) / 10.0) * 10.0
    ΠΏΠΎΠΊΠ° Π½Π΅ game_over:
        Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ game_close == Π˜ΡΡ‚ΠΈΠ½Π°:
            дис.Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅(Π±Π΅Π»Ρ‹ΠΉ)
            message("Π’Ρ‹ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π»ΠΈ! НаТмитС Q-Quit ΠΈΠ»ΠΈ C-Play Π΅Ρ‰Π΅ Ρ€Π°Π·", красный)
            pygame.display.update()
            для события Π² pygame.event.get():
                Ссли event.type == pygame.KEYDOWN:
                    Ссли event.key == pygame.K_q:
                        game_over = Π˜ΡΡ‚ΠΈΠ½Π°
                        game_close = Π›ΠΎΠΆΡŒ
                    Ссли event.key == pygame.K_c:
                        ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»()
        для события Π² pygame.event.get():
            Ссли event.type == pygame.Π’Π«Π™Π’Π˜:
                game_over = Π˜ΡΡ‚ΠΈΠ½Π°
            Ссли event.type == pygame.KEYDOWN:
                Ссли event.key == pygame.K_LEFT:
                    x1_change = -snake_block
                    Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
                elif event.key == pygame. K_RIGHT:
                    x1_change = Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_Π±Π»ΠΎΠΊ
                    Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
                Π­Π»ΠΈΡ„ event.key == pygame.K_UP:
                    y1_change = -snake_block
                    Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
                Π­Π»ΠΈΡ„ event.key == pygame.K_DOWN:
                    y1_change = Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_Π±Π»ΠΎΠΊ
                    Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
        Ссли x1 >= dis_width или x1 < 0 или y1 >= dis_height или y1 < 0:
            game_close = Π˜ΡΡ‚ΠΈΠ½Π°
        x1 += x1_change
        y1 += y1_change
        дис.Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅(Π±Π΅Π»Ρ‹ΠΉ)
        pygame.draw.rect(dis, blue, [foodx, foody, змСя_блок, змСя_блок])
        pygame.draw.rect(dis, Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ, [x1, y1, змСя_Π±Π»ΠΎΠΊ, змСя_Π±Π»ΠΎΠΊ])
        pygame.display.update()
        Ссли x1 == foodx и y1 == foody:
            print("Π’ΠΊΡƒΡΠ½ΡΡˆΠΊΠ°!!")
        часы.Ρ‚ΠΈΠΊ (snake_speed)
    pygame.Π²Ρ‹ΠΉΡ‚ΠΈ()
    ΠΏΠΎΠΊΠΈΠ΄Π°Ρ‚ΡŒ()
ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»() 

Π’Π«Π₯ΠžΠ”:

Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»:

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ Π·ΠΌΠ΅ΠΉΠΊΠΈ: 9 0002 Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ нашСго сакС, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΡΡŠΠ΅ΡΡ‚ Π΅Π΄Ρƒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли змСя сталкиваСтся со своим Ρ‚Π΅Π»ΠΎΠΌ, ΠΈΠ³Ρ€Π° ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π°, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ сообщСниС Β«Π’Ρ‹ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π»ΠΈ! НаТмитС Q-Quit ΠΈΠ»ΠΈ C-Play Π΅Ρ‰Π΅ Ρ€Π°Π·Β». Π”Π»ΠΈΠ½Π° Π·ΠΌΠ΅ΠΈ Π² основном содСрТится Π² спискС, Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅, Ρ€Π°Π²Π΅Π½ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π±Π»ΠΎΠΊΡƒ.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ pygame
врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ случайный
pygame.init()
Π±Π΅Π»Ρ‹ΠΉ = (255, 255, 255)
ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ = (255, 255, 102)
Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ = (0, 0, 0)
красный = (213, 50, 80)
Π·Π΅Π»Π΅Π½Ρ‹ΠΉ = (0, 255, 0)
синий = (50, 153, 213)
dis_width = 600
dis_height = 400
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Π—ΠΌΠ΅ΠΉΠΊΠ° ΠΎΡ‚ Edureka')
часы = pygame.time.Clock()
змСя_блок = 10
змСя_ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ = 15
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)
def our_snake (Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_Π±Π»ΠΎΠΊ, Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_список):
    для x в змСС_спискС:
        pygame.draw.rect (dis, Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ, [x [0], x [1], змСя_Π±Π»ΠΎΠΊ, змСя_Π±Π»ΠΎΠΊ])
сообщСниС def (msg, Ρ†Π²Π΅Ρ‚):
    сообщСниС = ΡΡ‚ΠΈΠ»ΡŒ_ΡˆΡ€ΠΈΡ„Ρ‚Π°.Ρ€Π΅Π½Π΄Π΅Ρ€ (сообщСниС, Π˜ΡΡ‚ΠΈΠ½Π°, Ρ†Π²Π΅Ρ‚)
    dis. blit(mesg, [dis_width / 6, dis_height / 3])
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°():
    game_over = Π›ΠΎΠΆΡŒ
    game_close = Π›ΠΎΠΆΡŒ
    x1 = ΡˆΠΈΡ€ΠΈΠ½Π°_Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ / 2
    Ρƒ1 = высота_высоты / 2
    Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
    Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
    змСя_Бписок = []
    Π”Π»ΠΈΠ½Π°_Π·ΠΌΠ΅ΠΈ = 1
    foodx = round(random.randrange(0, dis_width - змСя_блок) / 10,0) * 10,0
    foody = round(random.randrange(0, dis_height - змСя_блок) / 10.0) * 10.0
    ΠΏΠΎΠΊΠ° Π½Π΅ game_over:
        Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ game_close == Π˜ΡΡ‚ΠΈΠ½Π°:
            dis.fill (синий)
            message("Π’Ρ‹ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π»ΠΈ! НаТмитС C-Play Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΈΠ»ΠΈ Q-Quit", красный)
            pygame.display.update()
            для события Π² pygame.event.get():
                Ссли event.type == pygame.KEYDOWN:
                    Ссли event.key == pygame.K_q:
                        game_over = Π˜ΡΡ‚ΠΈΠ½Π°
                        game_close = Π›ΠΎΠΆΡŒ
                    Ссли event.key == pygame.K_c:
                        ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»()
        для события Π² pygame.event.get():
            Ссли event. type == pygame.Π’Π«Π™Π’Π˜:
                game_over = Π˜ΡΡ‚ΠΈΠ½Π°
            Ссли event.type == pygame.KEYDOWN:
                Ссли event.key == pygame.K_LEFT:
                    x1_change = -snake_block
                    Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_Π±Π»ΠΎΠΊ
                    Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
                Π­Π»ΠΈΡ„ event.key == pygame.K_UP:
                    y1_change = -snake_block
                    Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
                Π­Π»ΠΈΡ„ event.key == pygame.K_DOWN:
                    y1_change = Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_Π±Π»ΠΎΠΊ
                    Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
        Ссли x1 >= dis_width или x1 < 0 или y1 >= dis_height или y1 < 0:
            game_close = Π˜ΡΡ‚ΠΈΠ½Π°
        x1 += x1_change
        y1 += y1_change
        dis.fill (синий)
        pygame.draw.rect(dis, green, [foodx, foody, змСя_блок, змСя_блок])
        змСя_голова = []
        змСя_Head.append (x1)
        змСя_Head.append(y1)
        змСя_List.append (snake_Head)
        Ссли len(snake_List) > Length_of_snake:
            список_змСй[0]
        для x в змСС_List[:-1]:
            Ссли Ρ… == змСя_Π³ΠΎΠ»ΠΎΠ²Π°:
                game_close = Π˜ΡΡ‚ΠΈΠ½Π°
        наша_змСя (змСя_блок, змСя_список)
        pygame. display.update()
        Ссли x1 == foodx и y1 == foody:
            foodx = round(random.randrange(0, dis_width - змСя_блок) / 10,0) * 10,0
            foody = round(random.randrange(0, dis_height - змСя_блок) / 10.0) * 10.0
            Π”Π»ΠΈΠ½Π°_Π·ΠΌΠ΅ΠΈ += 1
        часы.Ρ‚ΠΈΠΊ (snake_speed)
    pygame.Π²Ρ‹ΠΉΡ‚ΠΈ()
    ΠΏΠΎΠΊΠΈΠ΄Π°Ρ‚ΡŒ()
ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»() 

Π’Π«Π’ΠžΠ”:

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ счСта:

И послСднСС, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅: Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ счСт ΠΈΠ³Ρ€ΠΎΠΊΠ°. Для этого я создал Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Β«Your_scoreΒ». Π­Ρ‚Π° функция Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π·ΠΌΠ΅ΠΈ Π·Π° Π²Ρ‹Ρ‡Π΅Ρ‚ΠΎΠΌ 1, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π·ΠΌΠ΅ΠΈ.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ pygame
врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°
ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ случайный
pygame.init()
Π±Π΅Π»Ρ‹ΠΉ = (255, 255, 255)
ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ = (255, 255, 102)
Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ = (0, 0, 0)
красный = (213, 50, 80)
Π·Π΅Π»Π΅Π½Ρ‹ΠΉ = (0, 255, 0)
синий = (50, 153, 213)
dis_width = 600
dis_height = 400
dis = pygame.display.set_mode((dis_width, dis_height))
pygame.display.set_caption('Π—ΠΌΠ΅ΠΉΠΊΠ° ΠΎΡ‚ Edureka')
часы = pygame. time.Clock()
змСя_блок = 10
змСя_ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ = 15
font_style = pygame.font.SysFont("bahnschrift", 25)
score_font = pygame.font.SysFont("comicsansms", 35)
Def Your_score(счСт):
    value = score_font.render("Π’Π°ΡˆΠ° ΠΎΡ†Π΅Π½ΠΊΠ°: " + str(score), True, ΠΆΠ΅Π»Ρ‚Ρ‹ΠΉ)
    dis.blit(Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, [0, 0])
def our_snake (Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_Π±Π»ΠΎΠΊ, Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_список):
    для x в змСС_спискС:
        pygame.draw.rect (dis, Ρ‡Π΅Ρ€Π½Ρ‹ΠΉ, [x [0], x [1], змСя_Π±Π»ΠΎΠΊ, змСя_Π±Π»ΠΎΠΊ])
сообщСниС def (msg, Ρ†Π²Π΅Ρ‚):
    сообщСниС = ΡΡ‚ΠΈΠ»ΡŒ_ΡˆΡ€ΠΈΡ„Ρ‚Π°.Ρ€Π΅Π½Π΄Π΅Ρ€ (сообщСниС, Π˜ΡΡ‚ΠΈΠ½Π°, Ρ†Π²Π΅Ρ‚)
    dis.blit(mesg, [dis_width / 6, dis_height / 3])
ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°():
    game_over = Π›ΠΎΠΆΡŒ
    game_close = Π›ΠΎΠΆΡŒ
    x1 = ΡˆΠΈΡ€ΠΈΠ½Π°_Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ / 2
    Ρƒ1 = высота_высоты / 2
    Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
    Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
    змСя_Бписок = []
    Π”Π»ΠΈΠ½Π°_Π·ΠΌΠ΅ΠΈ = 1
    foodx = round(random.randrange(0, dis_width - змСя_блок) / 10,0) * 10,0
    foody = round(random.randrange(0, dis_height - змСя_блок) / 10.0) * 10.0
    ΠΏΠΎΠΊΠ° Π½Π΅ game_over:
        Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ game_close == Π˜ΡΡ‚ΠΈΠ½Π°:
            dis. fill (синий)
            message("Π’Ρ‹ ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π»ΠΈ! НаТмитС C-Play Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΈΠ»ΠΈ Q-Quit", красный)
            Your_score(Length_of_snake - 1)
            pygame.display.update()
            для события Π² pygame.event.get():
                Ссли event.type == pygame.KEYDOWN:
                    Ссли event.key == pygame.K_q:
                        game_over = Π˜ΡΡ‚ΠΈΠ½Π°
                        game_close = Π›ΠΎΠΆΡŒ
                    Ссли event.key == pygame.K_c:
                        ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»()
        для события Π² pygame.event.get():
            Ссли event.type == pygame.Π’Π«Π™Π’Π˜:
                game_over = Π˜ΡΡ‚ΠΈΠ½Π°
            Ссли event.type == pygame.KEYDOWN:
                Ссли event.key == pygame.K_LEFT:
                    x1_change = -snake_block
                    Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_Π±Π»ΠΎΠΊ
                    Ρƒ1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
                Π­Π»ΠΈΡ„ event.key == pygame.K_UP:
                    y1_change = -snake_block
                    Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
                Π­Π»ΠΈΡ„ event. key == pygame.K_DOWN:
                    y1_change = Π·ΠΌΠ΅ΠΈΠ½Ρ‹ΠΉ_Π±Π»ΠΎΠΊ
                    Ρ…1_ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ = 0
        Ссли x1 >= dis_width или x1 < 0 или y1 >= dis_height или y1 < 0:
            game_close = Π˜ΡΡ‚ΠΈΠ½Π°
        x1 += x1_change
        y1 += y1_change
        dis.fill (синий)
        pygame.draw.rect(dis, green, [foodx, foody, змСя_блок, змСя_блок])
        змСя_голова = []
        змСя_Head.append (x1)
        змСя_Head.append(y1)
        змСя_List.append (snake_Head)
        Ссли len(snake_List) > Length_of_snake:
            список_змСй[0]
        для x в змСС_List[:-1]:
            Ссли Ρ… == змСя_Π³ΠΎΠ»ΠΎΠ²Π°:
                game_close = Π˜ΡΡ‚ΠΈΠ½Π°
        наша_змСя (змСя_блок, змСя_список)
        Your_score(Length_of_snake - 1)
        pygame.display.update()
        Ссли x1 == foodx и y1 == foody:
            foodx = round(random.randrange(0, dis_width - змСя_блок) / 10,0) * 10,0
            foody = round(random.randrange(0, dis_height - змСя_блок) / 10.0) * 10.0
            Π”Π»ΠΈΠ½Π°_Π·ΠΌΠ΅ΠΈ += 1
        часы. Ρ‚ΠΈΠΊ (snake_speed)
    pygame.Π²Ρ‹ΠΉΡ‚ΠΈ()
    ΠΏΠΎΠΊΠΈΠ΄Π°Ρ‚ΡŒ()
ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»()
 

Π’Π«Π’ΠžΠ”:

На этом ΠΌΡ‹ подошли ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎΠ± ΠΈΠ³Ρ€Π΅ Β«Π—ΠΌΠ΅ΠΉΠΊΠ°Β» Π½Π° Python. Π― надСюсь, Ρ‡Ρ‚ΠΎ Π²Ρ‹ поняли всС, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сказано Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚Ρ€Π΅Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ свой ΠΎΠΏΡ‹Ρ‚. Β Β 

Π•ΡΡ‚ΡŒ ΠΊ Π½Π°ΠΌ вопрос? ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ это Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² этого Π±Π»ΠΎΠ³Π° Β«Snake Game in PythonΒ», ΠΈ ΠΌΡ‹ свяТСмся с Π²Π°ΠΌΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ знания ΠΎ Π»ΡŽΠ±Ρ‹Ρ… Ρ‚Ρ€Π΅Π½Π΄ΠΎΠ²Ρ‹Ρ… тСхнологиях ΠΈ ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… прилоТСниях, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ для прямой трансляции  Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ курс Python с круглосуточной ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΈ ΠΏΠΎΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΌ доступом.

Π—ΠΌΠ΅ΠΉΠΊΠ° с PyGame | Replit Docs

Snake Π±Ρ‹Π»Π° нСвСроятно популярной ΠΈΠ³Ρ€ΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π² основном ΠΏΠΎΠΌΠ½ΠΈΠ»ΠΈ ΠΏΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°ΠΌ 1990-Ρ… Π³ΠΎΠ΄ΠΎΠ². На Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚ для ΠΌΠ½ΠΎΠ³ΠΈΡ… это Π±Ρ‹Π»Π° СдинствСнная ΠΈΠ³Ρ€Π° Π½Π° Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π΅. Π’ самой простой Ρ„ΠΎΡ€ΠΌΠ΅ это ΠΎΡ‡Π΅Π½ΡŒ простая ΠΈΠ³Ρ€Π°, Π½ΠΎ всС ΠΆΠ΅ странно интСрСсная. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ отличная ΠΈΠ³Ρ€Π° для изучСния основ создания ΠΈΠ³Ρ€.

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΡΠ°ΠΌΡƒΡŽ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Π—ΠΌΠ΅ΠΈ Π² pygame 9.0004

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Π±-IDE Replit для создания нашСй вСрсии Snake.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ. ЗмСя Π² своСй основной Ρ„ΠΎΡ€ΠΌΠ΅ прСдставляСт собой ΡΠ΅Ρ€ΠΈΡŽ Π±Π»ΠΎΠΊΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… змСю, Π΄Π²ΠΈΠΆΡƒΡ‰ΡƒΡŽΡΡ ΠΏΠΎ сСткС, Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ³Ρ€ΠΎΠΊ. Π’Π°ΠΊΠΆΠ΅ Π² Π½Π΅ΠΉ Π΅ΡΡ‚ΡŒ простыС ΠΏΡ€Π°Π²ΠΈΠ»Π° β€” ΠΊΠΎΠ³Π΄Π° змСя касаСтся сторон экрана, ΠΎΠ½Π° ΡƒΠΌΠΈΡ€Π°Π΅Ρ‚. Если змСя пСрСкрСстится, ΠΎΠ½Π° Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠ³ΠΈΠ±Π½Π΅Ρ‚. Если змСя ΡΡŠΠ΅ΡΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π΄Ρ‹ (Π±Π»ΠΎΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°), ΠΎΠ½Π° вырастСт Π½Π° 1 Π±Π»ΠΎΠΊ. Π—Π°Ρ‚Π΅ΠΌ Π΅Π΄Π° снова появляСтся Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ случайном мСстС Π½Π° экранС.

Нам Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ нСсколько ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

  • Бпособ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ экрану.
  • Бпособ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ двиТСния ΠΎΡ‚ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΊ Π·ΠΌΠ΅Π΅.
  • Бпособ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π²Ρ‹ΡˆΠ»Π° Π»ΠΈ змСя Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ экрана.
  • Бпособ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, пСрСступила Π»ΠΈ змСя Ρ‡Π΅Ρ€Π΅Π· сСбя (ΠΈΠ»ΠΈ укусила сСбя, ΠΊΠ°ΠΊ другая аналогия).
  • Бпособ случайного размСщСния Π΅Π΄Ρ‹ Π½Π° экранС.
  • Бпособ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, съСла Π»ΠΈ змСя ΠΏΠΈΡ‰Ρƒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠΊΠΎΡΠ½ΡƒΠ»Π°ΡΡŒ ΠΊ Π½Π΅ΠΉ.
  • Бпособ выращивания Π·ΠΌΠ΅ΠΈ.

Π•ΡΡ‚ΡŒ Π½Π°Π΄ Ρ‡Π΅ΠΌ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ! Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ ΠΈ создадим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Replit.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ Replit ΠΈ создайтС Π½ΠΎΠ²Ρ‹ΠΉ repl. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Python Π² качСствС языка. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°ΠΉΡ‚Π΅ этой Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ΅ имя, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«snake-pygameΒ».

ПослС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ repl Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ„Π°ΠΉΠ» main.py . Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ игровая срСда Π² Python β€” это pygame. Он ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности для рисования Ρ„ΠΎΡ€ΠΌ ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° экранС, Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, воспроизвСдСния Π·Π²ΡƒΠΊΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ создании этой ΠΈΠ³Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку Π² наш Ρ„Π°ΠΉΠ» main.py :

 import pygame 

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ инфраструктуру pygame, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: ()
bounds = (300,300)
window = pygame. display.set_mode(bounds)
pygame.display.set_caption("Snake")

Π‘Ρ‚Ρ€ΠΎΠΊΠ° 1 этого ΠΊΠΎΠ΄Π° запускаСт систСму pygame, инициализируя Π΅Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ΄ ΡˆΡ€ΠΈΡ„Ρ‚Π°, Π·Π²ΡƒΠΊΠ° ΠΈΠ»ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ). Π‘Ρ‚Ρ€ΠΎΠΊΠ° 2 создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ с ΠΈΠΌΠ΅Π½Π΅ΠΌ bounds . Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ содСрТит Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΠΈΠ³Ρ€Ρƒ ΠΏΡ€ΠΎ Π·ΠΌΠ΅ΠΉΠΊΡƒ. Π‘Ρ‚Ρ€ΠΎΠΊΠ° 3 создаСт Π½ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ для отобраТСния нашСй ΠΈΠ³Ρ€Ρ‹. Π‘Ρ‚Ρ€ΠΎΠΊΠ° 4 Π΄Π°Π΅Ρ‚ ΠΎΠΊΠ½Ρƒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈΠ»ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π±Ρ‹ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΉ.

Если Π²Ρ‹ запуститС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ « Run > » Π²Π²Π΅Ρ€Ρ…Ρƒ Π² Ρ†Π΅Π½Ρ‚Ρ€Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ нСбольшоС пустоС ΠΎΠΊΠ½ΠΎ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π΄ΠΎ сих ΠΏΠΎΡ€.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ основная структура, Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим класс для модСлирования нашСй Π·ΠΌΠ΅ΠΈ. Π£ этого класса Π±ΡƒΠ΄ΡƒΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ обязанности:

  1. Π‘Π»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Ρ‚Π΅ΠΌ, Π³Π΄Π΅ находится змСя.
  2. ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ Π·ΠΌΠ΅ΠΈ.
  3. ΠŸΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ Π·ΠΌΠ΅Π΅ расти.
  4. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ с Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ ΠΎΠΊΠ½Π°.
  5. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ пСрСсСкла Π»ΠΈ змСя («укусила») сСбя
  6. ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ направлСния двиТСния Π·ΠΌΠ΅ΠΈ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π°Ρ‡Π½Π΅ΠΌ с создания Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ змСя.py . Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

 ΠΈΠ· enum import Enum 

class Direction(Enum):
UP = 0
DOWN = 1
LEFT = 2
RIGHT = 3

class Snake:
length = None
direction = None 9001 2 Ρ‚Π΅Π»Π° = None
block_size = None
color = (0,0,255)
bounds = None

def __init__(self, block_size, bounds):
self.block_size = block_size
self.bounds = bounds
self.respawn()

def respawn(self):
self.length = 3
self.body = [(20,20),(20,40),(20,60)]
self.direction = Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ .DOWN

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ класс Π² этом Ρ„Π°ΠΉΠ»Π΅ β€” это пСрСчислСниС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ способом ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ связанных констант. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ допустимыС направлСния, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ змСя, ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ провСряСт ΠΈ измСняСт направлСния, Π»Π΅Π³ΠΊΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ ΠΈ измСняСмым ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с простым использованиСм чисСл ΠΈΠ»ΠΈ строк для опрСдСлСния Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ.

Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ опрСдСляСм сам класс Snake . ΠŸΠ΅Ρ€Π²Ρ‹Π΅ нСсколько строк Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ β€” Π² Python это Π½Π΅ являСтся строго ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, Π½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ отслСТиваниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ свойств Π² нашСм классС.

Π—Π°Ρ‚Π΅ΠΌ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² строкС, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΉΡΡ с def __init__ . Когда ΠΌΡ‹ создаСм экзСмпляр нашСго класса Snake , ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ block_size , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΌ числом с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π½Π°ΡˆΡƒ сСтку. Π­Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сСгмСнта Π·ΠΌΠ΅ΠΉΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ для позиционирования ΠΈ пСрСмСщСния Π·ΠΌΠ΅ΠΉΠΊΠΈ Π½Π° доскС. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ Π² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой Π½Π°Π±ΠΎΡ€ Ρ†Π΅Π»Ρ‹Ρ… чисСл с ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ ΠΈ высотой ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ области (Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ экрана). Π’Π°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π²Ρ‹ΡˆΠ»Π° Π»ΠΈ змСя Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΌΡ‹ Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌ эти Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° нашим Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ наш Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ respawn , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит настройку ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π΄Π»ΠΈΠ½Ρ‹ Π·ΠΌΠ΅ΠΈ, опрСдСлСния Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ сСгмСнта Ρ‚Π΅Π»Π° ΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ направлСния. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΈΠΌ возроТдаСтся всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° змСя ΠΏΠ°Π΄Π°Π΅Ρ‚ ΠΈΠ»ΠΈ ΡƒΠΌΠΈΡ€Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ способами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΈΠ³Ρ€Ρƒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ посмотрим Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ body . Π­Ρ‚ΠΎ список Python, содСрТащий ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ (ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Ρ‹) ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. КаТдая ΠΈΠ· этих ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ описываСт Π²Π΅Ρ€Ρ…Π½ΠΈΠ΅ Π»Π΅Π²Ρ‹Π΅ x ΠΈ y полоТСния экрана сСгмСнта Ρ‚Π΅Π»Π° ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ°. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ (Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ‚ΡŒ) этот список ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ роста Π·ΠΌΠ΅ΠΈ. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ этот список ΠΏΡ€ΠΈ рисовании Π·ΠΌΠ΅ΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ основы Класс Snake ΠΈ Π΅Π³ΠΎ ΠΊΠΎΠ΄ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ для рисования Π·ΠΌΠ΅ΠΈ Π½Π° экранС. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ это ΠΊ классу Snake :

 def draw(self, game, window): 
для сСгмСнта Π² self.body:
game.draw.rect(window, self.color, (segment[0],segment[ 1],self. block_size, self.block_size))

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ экзСмпляр pygame, game ΠΈ ΠΎΠΊΠ½ΠΎ (ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ Π² ΠΎΠ±Ρ‰Π΅ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ pygame) для рисования. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ Π² body ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ pygame, встроСнный Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ draw.rect , для рисования ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° ΠΈΠ»ΠΈ сСгмСнта Π·ΠΌΠ΅ΠΈ Π² спискС body. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ наш ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ block_size для установки ΡˆΠΈΡ€ΠΈΠ½Ρ‹ ΠΈ высоты нарисованного ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ. ΠœΡ‹ просто ΡƒΠ²ΠΈΠ΄ΠΈΠΌ нСсколько статичСских Π±Π»ΠΎΠΊΠΎΠ² Π½Π° экранС, Π½ΠΎ это Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ тСст, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, всС Π»ΠΈ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ ΠΏΡƒΡ‚ΠΈ. Π§Ρ‚ΠΎΠ±Ρ‹ это Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ создадим Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Snake ΠΈ настроим ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ нашСго ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° Π² main.py .

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° классов Π² Ρ„Π°ΠΉΠ» snake.py Π²Π²Π΅Ρ€Ρ…Ρƒ Ρ„Π°ΠΉΠ»Π° main.py , сразу ΠΏΠΎΠ΄ строкой import pygame : ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ прямо ΠΏΠΎΠ΄ строкой pygame. display.set_caption("Snake") :

 block_size = 20 
змСя = Snake(block_size, bounds)

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ устанавливаСт наш block_size для нашСй сСтки Π² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 20 пиксСлСй. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр нашСго Класс Snake с Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π±Π»ΠΎΠΊΠ° ΠΈ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ использовали для установки Ρ€Π°Π·ΠΌΠ΅Ρ€Π° нашСго ΠΎΠΊΠ½Π°, ΠΈ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π·ΠΌΠ΅ΠΉΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π½Π΅ ΡƒΠ΄Π°Ρ€ΠΈΡ‚ Π»ΠΈ ΠΎΠ½Π° ΠΏΠΎ ΠΊΡ€Π°ΡŽ ΠΎΠΊΠ½Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ настроим наш ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ». Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ» β€” это Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΈΠ³Ρ€. Он ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ считываниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°, обновляСт статус ΠΈΠ³Ρ€ΠΎΠΊΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, счСт ΠΈ Ρ‚. Π΄.), провСряСт взаимодСйствия ΠΈ столкновСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ рисованиС.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π² Ρ„Π°ΠΉΠ» main.py , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»:

 run = True 
while run:
pygame.time.delay(100)

для события Π² pygame.event.get():
if event.type == pygame.QUIT:
run = False

window. fill ((0,0,0))
snake.draw(pygame, window)
pygame.display.flip()

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ устанавливаСт Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ повторяСтся ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 100 мс, ΠΏΠΎΠΊΠ° ΠΈΠ· ΠΎΠΊΠ½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ сигнал Π²Ρ‹Ρ…ΠΎΠ΄Π°. . Π­Ρ‚ΠΎ запускаСтся, ΠΊΠΎΠ³Π΄Π° ΠΈΠ³Ρ€ΠΎΠΊ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎΒ» Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части ΠΎΠΊΠ½Π°. Pygame ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ событий, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ записываСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ события. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ эту ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ событий ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ зацикливаСмся Π² нашСм ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅, ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ, Π½Π΅ Π±Ρ‹Π»ΠΎ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΈΠ· событий числом 9.0331 Π‘ΠΈΠ³Π½Π°Π» Π’Π«Π™Π’Π˜ . Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ условиС для запуска Ρ†ΠΈΠΊΠ»Π° Π½Π° False , ΠΈ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ, нашС условиС while большС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ истинным, ΠΈ ΠΈΠ³Ρ€Π° Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ.

Наш Ρ†ΠΈΠΊΠ» Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ€Π°ΡƒΠ½Π΄Π΅, Π³ΠΎΡ‚ΠΎΠ²ΡΡΡŒ ΠΊ отрисовкС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ состояния ΠΈΠ³Ρ€Ρ‹. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ это Π² строкС window.fill((0,0,0)) . Π­Ρ‚ΠΎ заполняСт всС ΠΎΠΊΠ½ΠΎ Ρ‡Π΅Ρ€Π½Ρ‹ΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠΌ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π² ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ Ρ†Π²Π΅Ρ‚Π° RGB (0,0,0) . Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ чистый лист, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π·Π²Π°Ρ‚ΡŒ нарисуйтС ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° нашСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅-Π·ΠΌΠ΅Π΅. ΠœΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ pygame ΠΈ Window, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Snake ΠΌΠΎΠ³ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½ΠΈΡ…. Когда ΠΌΡ‹ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π°ΡˆΡƒ Π΅Π΄Ρƒ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΅Π΅ послС этой строки.

НаконСц, ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Π½Π° экран, вызывая pygame.display.flip() . Π­Ρ‚ΠΎ Π±Π΅Ρ€Π΅Ρ‚ всС наши обновлСния ΠΈ Β«ΠΏΠ΅Ρ€Π΅Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚Β» ΠΈΡ… ΠΈΠ· ΠΎΠΊΠΎΠ½Π½ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° Π½Π° экран.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ» ΠΈ отрисовка Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚, запуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°ΠΆΠ°Π² Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ « Run > » Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части repl. Π’ ΠΏΡ€Π°Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ изобраТСния Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‡Π΅Ρ€Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ с нСсколькими Π±Π»ΠΎΠΊΠ°ΠΌΠΈ, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΌΠΈ змСю.

Наш ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ змСю Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΏΠΎ экрану. Бпособ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это β€” ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ двиТСтся змСя, ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊ ΠΏΠ΅Ρ€Π΅Π΄ Π·ΠΌΠ΅Π΅ΠΉ Π² этом Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ. Π—Π°Ρ‚Π΅ΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊ Π² хвостовой части Π·ΠΌΠ΅ΠΈ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² класс Snake Π² Ρ„Π°ΠΉΠ»Π΅ snap. py :

 def move(self): 
curr_head = self.body[-1]
if self.direction == Direction .DOWN:
next_head = (curr_head[0], curr_head[1] + self.block_size)
self.body.append(next_head)
elif self.direction == Direction.UP:
next_head = (curr_head[0], curr_head[1] - self.block_size)
self.body.append(next_head)
elif self .direction == Direction.RIGHT:
next_head = (curr_head[0] + self.block_size, curr_head[1])
self.body.append(next_head)
elif self.direction == Direction.LEFT:
next_head = ( curr_head[0] - self.block_size, curr_head[1])
self.body.append(next_head)

, Ссли self.length < len(self.body):
self.body.pop(0)

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Β«Π³ΠΎΠ»ΠΎΠ²ΡƒΒ» Π·ΠΌΠ΅ΠΈ, которая являСтся послСдним элСмСнтом нашСго списка body . Python ΠΈΠΌΠ΅Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… индСксов. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ индСкс -1 Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ послСдний элСмСнт Π² спискС, -2 Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ прСдпослСдний ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ послСдний элСмСнт ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π½ΡŽΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π·ΠΌΠ΅ΠΈ Π² нашСм спискС Ρ‚Π΅Π», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ΄ curr_head = self.body[-1] .

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π³ΠΎΠ»ΠΎΠ²Ρƒ Π·ΠΌΠ΅ΠΈ, ΠΌΡ‹ провСряСм, Π² ΠΊΠ°ΠΊΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ двиТСтся змСя. Если ΠΎΠ½Π° двиТСтся Π²Π²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ Π²Π½ΠΈΠ·, ΠΌΡ‹ добавляСм Π½ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊ, копируя ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ x Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΈ добавляя ΠΈΠ»ΠΈ вычитая (Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΈΠ΄Π΅Ρ‚ Π»ΠΈ Π·ΠΌΠ΅ΠΉΠΊΠ° Π²Π²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ Π²Π½ΠΈΠ·) ΠΎΠ΄Π½Π° сСтка block_size Π½Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ y. Π’ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, Ссли змСя двиТСтся Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ, ΠΌΡ‹ добавляСм Π½ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊ Π² список body , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ y Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π³ΠΎΠ»ΠΎΠ²Ρ‹, Π½ΠΎ измСняя ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρƒ x Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ block_size .

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ это Π±ΡƒΠ΄Π΅Ρ‚ сдСлано, ΠΌΡ‹ ΡƒΠ΄Π°Π»ΠΈΠΌ Π±Π»ΠΎΠΊ Π² хвостовой части Π·ΠΌΠ΅ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ΄ self.body.pop(0) . Однако ΠΏΠ΅Ρ€Π΅Π΄ этим Ρƒ нас Π΅ΡΡ‚ΡŒ условиС: if self.length < len(self.body) . Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ добСрСмся Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ змСя Сст ΠΈΠ»ΠΈ растСт. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° змСя Сст, ΠΌΡ‹ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ Π΄Π»ΠΈΠ½Π° свойство Π·ΠΌΠ΅ΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это свойство length , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π»ΠΈ ΠΌΡ‹ Π½Π° самом Π΄Π΅Π»Π΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ хвостовой сСгмСнт Π·ΠΌΠ΅ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° двиТСтся.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ² этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° move Π² наш ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ». Π’ Ρ„Π°ΠΉΠ»Π΅ main.py ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄:

 run = True 
while run:
pygame.time.delay(100)

для события Π² pygame.event.get():
if event.type == pygame.QUIT:
run = False

Π·ΠΌΠ΅ΠΉΠΊΠ°.move()
window.fill((0,0,0))
Π·ΠΌΠ΅ΠΉΠΊΠ°.draw(pygame, ΠΎΠΊΠ½ΠΎ)
pygame.display.update()

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ строку змСя.move() . Π­Ρ‚ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ наш ΠΌΠ΅Ρ‚ΠΎΠ΄ move , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ добавляли ΠΊ нашСй Π·ΠΌΠ΅ΠΉΠΊΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅. Π­Ρ‚ΠΎ создаст Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ змСя ΠΏΠ»Π°Π²Π½ΠΎ двиТСтся ΠΏΠΎ экрану. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ это, Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ Β« Run > Β» Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ части repl. ЗмСя Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ Π² Π»Π΅Π²ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ ΠΎΠΊΠ½Π° ΠΈ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π²Π½ΠΈΠ· ΠΏΠΎ экрану, ΠΏΠΎΠΊΠ° Π½Π΅ исчСзнСт Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΎΠΊΠ½Π°.

ЗмСя двиТСтся! Наша ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π·Π°Π΄Π°Ρ‡Π° β€” ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ ΠΈΠ³Ρ€ΠΎΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π·ΠΌΠ΅Π΅ΠΉ. ΠœΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ с добавлСния ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² класс Snake Π² Ρ„Π°ΠΉΠ»Π΅ Π·ΠΌΠ΅ΠΈ.py :

 def steer(self, direction): 
if self.direction == Direction.DOWN and direction != Direction. Π’Π’Π•Π Π₯:
self.direction = Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅
elif self.direction == Direction.UP ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ != Direction.DOWN:
self.direction = Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅
elif self.direction == Direction.LEFT ΠΈ direction != Direction.RIGHT:
self.direction = direction
elif self.direction == Direction.RIGHT ΠΈ direction != Direction.LEFT:
self.direction = direction

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, принимая Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ direction , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ЗначСния пСрСчислСния Direction , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Ρ€Π°Π½Π΅Π΅. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ направлСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ являСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ двиТСтся змСя β€” это ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ рСвСрсирования Π·ΠΌΠ΅ΠΈ Π² нашСй ΠΈΠ³Ρ€Π΅. Если Π²Ρ…ΠΎΠ΄Π½ΠΎΠ΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ являСтся допустимым Ρ…ΠΎΠ΄ΠΎΠΌ, ΠΌΡ‹ обновляСм 9 Π·ΠΌΠ΅ΠΈ.0331 Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌ. Как Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ ΠΈΠ· нашСго ΠΌΠ΅Ρ‚ΠΎΠ΄Π° move , это свойство ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ свойство list body Π·ΠΌΠ΅ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ ΠΈΠ³Ρ€ΠΎΠΊΠ°. Π’ Pygame Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ key.get_pressed() , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список, содСрТащий логичСский элСмСнт для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ клавиши Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅. Π­Ρ‚ΠΎ позволяСт Π½Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΈΠ³Ρ€ΠΎΠΊ, просматривая Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌΡƒ индСксу Π² этом спискС клавиш. К ΡΡ‡Π°ΡΡ‚ΡŒΡŽ, Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ индСкс для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² pygame Π΅ΡΡ‚ΡŒ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹Π΅ ΠΈΠΌΠ΅Π½Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°ΠΊ константы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Π½Π°ΠΆΠ°Ρ‚Π° Π»ΠΈ стрСлка Π²Π²Π΅Ρ€Ρ…, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ keys = pygame.key.get_pressed() , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список статусов для всСх ΠΊΠ»ΡŽΡ‡Π΅ΠΉ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΉΡ‚ΠΈ состояниС клавиши Β«Π‘Ρ‚Ρ€Π΅Π»ΠΊΠ° Π²Π²Π΅Ρ€Ρ…Β», просмотрСв запись для этой клавиши с ΠΊΠΎΠ΄ΠΎΠΌ keys[pygame.K_UP] . Если клавиша Π½Π°ΠΆΠ°Ρ‚Π°, ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True ; Ссли Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒ, Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ False .

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ΄ Π² наш ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π½Π°ΠΆΠ°Ρ‚Ρ‹ Π»ΠΈ клавиши со стрСлками Β«Π’Π²Π΅Ρ€Ρ…Β», Β«Π’Π½ΠΈΠ·Β», Β«Π’Π»Π΅Π²ΠΎΒ» ΠΈΠ»ΠΈ Β«Π’ΠΏΡ€Π°Π²ΠΎΒ». Π—Π°Ρ‚Π΅ΠΌ, Π² зависимости ΠΎΡ‚ Π½Π°ΠΆΠ°Ρ‚ΠΎΠΉ клавиши, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ управлСния с ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ направлСния. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π½Π°Π΄ строкой snake.move() Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ main.py : .steer(Direction.LEFT)
клавиш elif[pygame.K_RIGHT]:
Π·ΠΌΠ΅ΠΉΠΊΠ°.steer(Direction.RIGHT)
клавиш elif[pygame.K_UP]:
змСя.steer(Direction.UP)
клавиш elif[pygame.K_DOWN ]:
змСя.ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ(НаправлСниС.Π’ΠΠ˜Π—)

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ это. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Β« Run > Β» Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ части repl. Π§Ρ‚ΠΎΠ±Ρ‹ Pygame ΠΏΠΎΠ»ΡƒΡ‡Π°Π» Π²Π²ΠΎΠ΄ с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ сначала быстро Ρ‰Π΅Π»ΠΊΠ½ΡƒΡ‚ΡŒ Π² ΠΎΠΊΠ½Π΅ ΠΈΠ³Ρ€Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΈΠ³Ρ€Π° запускаСтся. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ смоТСтС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ клавиши управлСния курсором, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π·ΠΌΠ΅Π΅ΠΉ ΠΏΠΎ экрану! Π£ нас ΠΏΠΎΠΊΠ° Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π³Ρ€Π°Π½ΠΈΡ†, поэтому змСя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΡ‡Π΅Π·Π½ΡƒΡ‚ΡŒ Π·Π° ΠΊΡ€Π°Π΅ΠΌ ΠΎΠΊΠ½Π°.

Π£ нас Π΅ΡΡ‚ΡŒ змСя, ΠΎΠ½Π° двиТСтся, ΠΈ ΠΈΠ³Ρ€ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Сю ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΈΡ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ змСя ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡŠΠ΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ заставит Π΅Π΅ расти дольшС.

ΠœΡ‹ создадим Π΅Π΄Ρƒ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ создали змСю. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ food.py . Π’ этом Ρ„Π°ΠΉΠ»Π΅ ΠΌΡ‹ создадим класс Food для управлСния ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ отрисовкой Π΅Π΄Ρ‹ Π½Π° сСткС.

Π’ ΠΈΠ³Ρ€Π΅ Β«Π—ΠΌΠ΅ΠΉΠΊΠ°Β» послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΈΡ‰Π΅Π²ΠΎΠΉ Π±Π»ΠΎΠΊ съСдСн, Π² случайном мСстС сСтки появляСтся Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ понадобится Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ мСстонахоТдСниС Π΅Π΄Ρ‹. Π’ Python для этого Π΅ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ random . Π£ этого Π΅ΡΡ‚ΡŒ функция ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ randint , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π½Π° экранС для размСщСния Π΅Π΄Ρ‹. НачнСм с добавлСния ссылки Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ random Π² Ρ„Π°ΠΉΠ» food. py . Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ класс Food .

 случайный ΠΈΠΌΠΏΠΎΡ€Ρ‚ 

класс Π•Π΄Π°:
block_size = None
color = (0,255,0)
x = 0;
Π³ = 0;
bounds = None

def __init__(self, block_size, bounds):
self.block_size = block_size
self.bounds = bounds

def draw(self, game, window):
game.draw.rect(window, self.color, (self.x, self.y, self.block_size, self.block_size))

def respawn(self):
blocks_in_x = (self.bounds[0])/self.block_size;
blocks_in_y = (self.bounds[1])/self.block_size;
self.x = random.randint(0, blocks_in_x - 1) * self.block_size
self.y = random.randint(0, blocks_in_y - 1) * self.block_size

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° сходство с Snake сорт. Π£ ΠΎΠ±ΠΎΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ рисования ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ возроТдСния . Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² ΠΈΠ³Ρ€Π°Ρ… Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Класс Food Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ сходныС свойства с классом Snake. Он ΠΈΠΌΠ΅Π΅Ρ‚ block_size , Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π² нашСй Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ сСткС. Π£ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Ρ†Π²Π΅Ρ‚Π° , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ рисовании Π΅Π΄Ρ‹. Он Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ запись ΠΎ Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ… ΠΎΠΊΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΡ‹ Π½Π΅ рисовали Π΅Π΄Ρƒ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΅Π΄Π° состоит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· 1 Π±Π»ΠΎΠΊΠ°, Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ 9 Π±Π»ΠΎΠΊΠΎΠ².Массив 0331 body ΠΏΠΎΡ…ΠΎΠΆ Π½Π° класс Π·ΠΌΠ΅ΠΈ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… x ΠΈ y.

ΠœΠ΅Ρ‚ΠΎΠ΄ draw прСдставляСт собой ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² классС Π·ΠΌΠ΅ΠΉ. Π­Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 Π±Π»ΠΎΠΊ.

ΠœΠ΅Ρ‚ΠΎΠ΄ возроТдСния интСрСсСн. Нам Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ€ΠΎΠ²Π½ΡΡ‚ΡŒ Π½Π°ΡˆΡƒ Π΅Π΄Ρƒ с нашСй Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ сСткой, опрСдСляСмой block_size . Однако, Ссли ΠΌΡ‹ просто Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ random.randint , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅Π΄Ρ‹ ΠΏΠΎ осям x ΠΈ y, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΏΠΎΠ»ΠΏΡƒΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π±Π»ΠΎΠΊ Π² сСткС. Π­Ρ‚ΠΎ сдСлаСт странным ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΡ†Π΅Π»ΠΈΡ‚ΡŒΡΡ Π·ΠΌΠ΅Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ змСя Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½Π° с Π΅Π΄ΠΎΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ всС Π±Ρ‹Π»ΠΎ Π²Ρ‹Ρ€ΠΎΠ²Π½Π΅Π½ΠΎ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ Π½Π°ΡˆΡƒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΎΠΊΠ½Π°, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π² нашСм свойствС bounds , ΠΈ наши знания ΠΎ block_size нашСй сСтки, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠΊΠ½Π° с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π±Π»ΠΎΠΊΠΈ. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли Ρ€Π°Π·ΠΌΠ΅Ρ€ нашСго ΠΎΠΊΠ½Π° ΠΈΠ»ΠΈ Π³Ρ€Π°Π½ΠΈΡ† составляСт 300×300 пиксСлСй, Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° Ρ€Π°Π²Π΅Π½ 20 пиксСлСй, Ρ‚ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ 300 пиксСлСй/20 пиксСлСй = 15 Π±Π»ΠΎΠΊΠΎΠ². Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π±Π»ΠΎΠΊΠ°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ число ΠΎΡ‚ 1 Π΄ΠΎ 15, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π΅Π΄Ρƒ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ фактичСскиС экранныС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x ΠΈ y для рисования Π±Π»ΠΎΠΊΠ°, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ просто ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ нашСго Π±Π»ΠΎΠΊΠ° Π½Π° 9.0331 Ρ€Π°Π·ΠΌΠ΅Ρ€_Π±Π»ΠΎΠΊΠ° .

Π’ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 2 строках ΠΌΠ΅Ρ‚ΠΎΠ΄Π° respawn Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ количСство Π±Π»ΠΎΠΊΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ, ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅. Π—Π°Ρ‚Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 2 строки находят случайный Π±Π»ΠΎΠΊ ΠΈ пСрСводят этот Π±Π»ΠΎΠΊ Π² ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x ΠΈ y. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ случайноС число ΠΌΠ΅ΠΆΠ΄Ρƒ 1 ΠΈ количСством Π±Π»ΠΎΠΊΠΎΠ² Π² ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΈ, ΠΌΡ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ число ΠΌΠ΅ΠΆΠ΄Ρƒ 0 ΠΈ количСством Π±Π»ΠΎΠΊΠΎΠ² минус 1. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΊΠ½Π° x ΠΈ y Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с 0, Π° Π½Π΅ с 1, поэтому Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π½Π° 1, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Π£ нас Π΅ΡΡ‚ΡŒ класс Food , поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ экзСмпляр ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ».

Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ссылку Π½Π° Ρ„Π°ΠΉΠ» food.py ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ класс Food . Π’ Ρ„Π°ΠΉΠ»Π΅ main.py сразу послС строки import pygame Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

 from food import Food 

Π’ Ρ„Π°ΠΉΠ»Π΅ main.py послС строки Π³Ρ€Π°Π½ΠΈΡ†) , ΠΈ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌ создайтС Π½ΠΎΠ²Ρ‹ΠΉ Food ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π΄ΠΎΠ±Π°Π²ΠΈΠ² строку:

 food = Food(block_size,bounds) 

Π’ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π² main.py , сразу послС строки snake.draw(pygame, window) , ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ линию, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΄Ρƒ. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку:

 food.draw(pygame, window) 

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ! Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ Π΄ΠΎ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, снова Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡƒ Β« Run > Β». Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ змСю, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π΅Π»Π΅Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΅Π΄Ρƒ.

Π’Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ змСя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ прямо Π½Π°Π΄ Π΅Π΄ΠΎΠΉ, ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚. Основной ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ ΠΈΠ³Ρ€ являСтся ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ столкновСний. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ систСму сСтки, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ обнаруТСния столкновСний. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΠ»Π°ΡΡŒ Π»ΠΈ змСя ΠΈΠ»ΠΈ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»Π°ΡΡŒ с ΠΏΠΈΡ‰Π΅Π²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π·ΠΌΠ΅ΠΈ ΠΈ снова Π²ΠΎΠ·Ρ€ΠΎΠ΄ΠΈΡ‚ΡŒ Π΅Π΄Ρƒ.

ΠœΡ‹ Π²ΠΎΠ·Π»ΠΎΠΆΠΈΠΌ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ столкновСний Π½Π° класс Snake . Π’ snap.py , Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² класс Snake :

 def eat(self): 
self.length += 1

# провСряСт, находится Π»ΠΈ Π³ΠΎΠ»ΠΎΠ²Π° Π·ΠΌΠ΅ΠΈ Π½Π°Π΄ Π΅Π΄ΠΎΠΉ
def check_for_food (self, food):
head = self.body[-1]
if head[0] == food.x and head[1] == food.y:
self.eat()
food.respawn()

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ способ, Сст , ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ Π·ΠΌΠ΅ΠΉΠΊΠΈ. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ свойство length ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ move для опрСдСлСния нСобходимости удалСния хвостового сСгмСнта.

Π—Π°Ρ‚Π΅ΠΌ Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ check_for_food . Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ food Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π’ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ самый ΠΏΠ΅Ρ€Π΅Π΄Π½ΠΈΠΉ Π±Π»ΠΎΠΊ Π·ΠΌΠ΅ΠΈ, ΠΈΠ»ΠΈ Π³ΠΎΠ»ΠΎΠ²Ρƒ , ΠΎΠ±Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ послСднСму элСмСнту Π² спискС Ρ‚Π΅Π»ΠΎ . Напомним, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ индСкс для доступа ΠΊ послСднСму элСмСнту. Π—Π°Ρ‚Π΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡΡ‚Ρ€ΠΎΠ³ΡƒΡŽ систСму сСтки для нашСй ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ схСмы, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ€Π°Π²Π½Ρ‹ Π»ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x ΠΈ y Π³ΠΎΠ»ΠΎΠ²Ρ‹ Π·ΠΌΠ΅ΠΈ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ x ΠΈ y ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π΅Π΄Ρ‹. Если ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ, ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ увСличСния Π΄Π»ΠΈΠ½Ρ‹ Π·ΠΌΠ΅ΠΈ. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ respawn Π½Π° Π΅Π΄Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° исчСзла ΠΈΠ· своСго Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ мСстополоТСния ΠΈ снова появилась Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС.

Π’ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ main.py Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ сразу послС строки snake. move() :

 змСя. ΠΌΠ΅Ρ‚ΠΎΠ΄ обнаруТСния столкновСний Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΈΠ³Ρ€Ρ‹ сразу послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ змСя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΠ»Π°ΡΡŒ Π² Π½ΠΎΠ²Ρ‹ΠΉ Π±Π»ΠΎΠΊ. 

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ это Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, растСт Π»ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ наша змСя, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π΅Π΄ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π΄Ρ‹. НаТмитС ΠΊΠ½ΠΎΠΏΠΊΡƒ Β« Run > Β» Π΅Ρ‰Π΅ Ρ€Π°Π· для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ столкновСний, Ссли змСя пСрСсСкаСт саму сСбя. Π­Ρ‚ΠΎ ΡΠΌΠ΅Ρ€Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Β«Game OverΒ» Π² Snake. Аналогично ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅, съСла Π»ΠΈ змСя ΠΏΠΈΡ‰Ρƒ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊ классу Snake Π² Ρ„Π°ΠΉΠ»Π΅ snake.py , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, пСрСсСкла Π»ΠΈ змСя ΠΈΠ»ΠΈ укусила сСбя:

 def check_tail_collision(self): 
head = self.body[-1]
has_eaten_tail = False

for i in range(len(self.body) - 1):
segment = self.body[i]
if head [0] == segment[0] and head[1] == segment[1]:
has_eaten_tail = True

return has_eaten_tail

Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π³ΠΎΠ»ΠΎΠ²Ρƒ Π·ΠΌΠ΅ΠΈ, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ Π² нашСм check_for_food ΠœΠ΅Ρ‚ΠΎΠ΄ . Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ устанавливаСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ„Π»Π°Π³Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, съСла Π»ΠΈ змСя свой хвост, ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 9.0331 Π›ΠΎΠΆΡŒ .

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· всС сСгмСнты, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅Π»ΠΎ Π·ΠΌΠ΅ΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ послСднСго элСмСнта списка Ρ‚Π΅Π»Π° , Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ этот элСмСнт прСдставляСт Π³ΠΎΠ»ΠΎΠ²Ρƒ Π·ΠΌΠ΅ΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ провСряСм ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ x ΠΈ y Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ сСгмСнта. Если ΠΎΠ½ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ»ΠΎΠ²Π° Π·ΠΌΠ΅ΠΈ находится Π½Π°Π΄ сСгмСнтом Ρ‚Π΅Π»Π°, поэтому ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для нашСго Ρ„Π»Π°Π³Π° has_eaten_tail Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true.

ПослС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ всСх сСгмСнтов ΠΌΡ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„Π»Π°Π³ has_eaten_tail .

ПослСднСС ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, β€” это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ ΠΎΠΊΠ½Π°. Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² класс Snake ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄:

 def check_bounds(self): 
head = self.body[-1]
if head[0] >= self.bounds[0]:
Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ True
, Ссли head[1] >= self. bounds[1]:
Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ True

, Ссли head[0] < 0:
Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ True
, Ссли head[1] < 0:
Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ True

Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ False

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π΅Ρ‰Π΅ Ρ€Π°Π· ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ Π±Π»ΠΎΠΊ head Π·ΠΌΠ΅ΠΈ ΠΈΠ· ΠΊΠΎΠ½Ρ†Π° списка body . Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ свСряСт ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ с Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌΠΈ ΠΎΠΊΠ½Π°. Если ΠΎΠ½ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ любой ΠΈΠ· этих Π³Ρ€Π°Π½ΠΈΡ†, ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True . Если Π³ΠΎΠ»ΠΎΠ²Π° Π·ΠΌΠ΅ΠΈ всС Π΅Ρ‰Π΅ находится Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π³Ρ€Π°Π½ΠΈΡ†, возвращаСтся False .

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΈΠ³Ρ€Ρ‹, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ» для Π²Ρ‹Π·ΠΎΠ²Π° этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ½Ρ†Π° ΠΈΠ³Ρ€Ρ‹. Когда ΠΈΠ³Ρ€Π° заканчиваСтся, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΡƒ сообщСниС Β«Π˜Π³Ρ€Π° ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π°Β» Π½Π° сСкунду ΠΈΠ»ΠΈ Π΄Π²Π΅. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ змСю ΠΈ Π΅Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΡƒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ шанс.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сообщСниС Β«Π˜Π³Ρ€Π° ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π°Β», ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚Π° pygame. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ шаги использования ΡˆΡ€ΠΈΡ„Ρ‚Π° для Π²Ρ‹Π²ΠΎΠ΄Π° тСкста Π½Π° экран:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π°, ΡƒΠΊΠ°Π·Π°Π² Ρ‚ΠΈΠΏ ΡˆΡ€ΠΈΡ„Ρ‚Π°, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΆΠΈΡ€Π½Ρ‹ΠΉ / курсив , ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ конструктора font. SysFont .
  2. ΠžΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ тСкст Π½Π° повСрхности, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ render для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΡˆΡ€ΠΈΡ„Ρ‚Π°, созданного Π²Ρ‹ΡˆΠ΅.
  3. blit ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ тСкст Π½Π° ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°.
  4. ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ это.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ описанныС Π²Ρ‹ΡˆΠ΅ дСйствия, создайтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ font , Π΄ΠΎΠ±Π°Π²ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² строку food = Food(block_size,bounds) Π² Ρ„Π°ΠΉΠ»Π΅ main.py :

 font = pygame.font .SysFont('comicsans',60, True) 

Π’ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ столкновСний, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ€Π°Π½Π΅Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π² класс Π·ΠΌΠ΅ΠΈ. Если ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ столкновСниС, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ нашС сообщСниС Β«Π˜Π³Ρ€Π° ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π°Β», ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€Ρƒ. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ΄ строку snake.check_for_food(food) Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ main.py :

 if Π·ΠΌΠ΅ΠΉΠΊΠ°.check_bounds() == True ΠΈΠ»ΠΈ Π·ΠΌΠ΅ΠΉΠΊΠ°.check_tail_collision() == True: 
text = font.

About the Author

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *

Related Posts