Найти Π² Π”Π·Π΅Π½Π΅
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° программиста

πŸπŸ•ΉοΈπŸΈ Python + Pygame = Amazing Frogs: создаСм ΠΊΡ€ΡƒΡ‚ΡƒΡŽ Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΡƒ

ОглавлСниС

Π“ΠΎΡ‚ΠΎΠ² ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅ ΠΎΡ‚ΠΎΡ€Π²Π΅ΡˆΡŒΡΡ? Π”Π°Π²Π°ΠΉ вмСстС сдСлаСм Amazing Frogs – ΡƒΠ±ΠΈΠΉΡ†Ρƒ ВСтриса Π½Π° Python! Π’ΡƒΡ‚ Ρ‚Π΅Π±Π΅ ΠΈ ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ, ΠΈ Π²Π·Ρ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Ρ†Π²Π΅Ρ‚Π°, ΠΈ хитрая ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠ°. Запасайся ΠΊΠΎΡ„Π΅, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΠΉ IDE, ΠΈ ΠΏΠΎΠ΅Ρ…Π°Π»ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ Π±Π΅Π·ΡƒΠΌΠΈΠ΅!

Π›ΠΎΠ³ΠΈΠΊΠ° ΠΈΠ³Ρ€Ρ‹

Amazing Frogs – ΠΊΠ»ΠΎΠ½ популярной Π²ΠΈΠ½Ρ‚Π°ΠΆΠ½ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ Amazing Blocks:

   Amazing Blocks ΠΈ Amazing Frogs
Amazing Blocks ΠΈ Amazing Frogs

Amazing Blocks – Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ кроссовСр ΠΌΠ΅ΠΆΠ΄Ρƒ Π»Π΅Π³Π΅Π½Π΄Π°Ρ€Π½Ρ‹ΠΌ ΠΏΡ€Π°Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ всСх Π±Π»ΠΎΡ‡Π½Ρ‹Ρ… Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΎΠΊ ВСтрисом ΠΈ ΠΆΠ°Π½Ρ€ΠΎΠΌ Β«Π’Ρ€ΠΈ Π² ряд»:

  • Π€ΠΈΠ³ΡƒΡ€Ρ‹ состоят ΠΈΠ· Ρ‚Ρ€Π΅Ρ… элСмСнтов (Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ) вмСсто Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… (Ρ‚Π΅Ρ‚Ρ€Π°ΠΌΠΈΠ½ΠΎ).
  • Π’Ρ€ΠΈΠΌΠΈΠ½ΠΎ Π½Π΅ ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π²ΠΎΠΊΡ€ΡƒΠ³ своСй оси – вмСсто этого ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами Ρ†Π²Π΅Ρ‚Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ состоят. Π‘Ρ‹Π²Π°ΡŽΡ‚ ΠΈ ΠΎΠ΄Π½ΠΎΡ†Π²Π΅Ρ‚Π½Ρ‹Π΅ Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ.
   ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши ↑ Π±Π»ΠΎΠΊΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами
ΠŸΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ клавиши ↑ Π±Π»ΠΎΠΊΠΈ ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ мСстами
  • Π‘Π»ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΎΡ‚ Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ, Ссли ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° Π±Π»ΠΎΠΊΠ° ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с прСпятствиСм. ΠžΡΡ‚Π°Π²ΡˆΠ°ΡΡΡ Ρ‡Π°ΡΡ‚ΡŒ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅.
  • ВмСсто сгорания Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… Π»ΠΈΠ½ΠΈΠΉ ΡΠ³ΠΎΡ€Π°ΡŽΡ‚ оказавшиСся ΠΏΠΎ сосСдству 3 ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π»ΠΎΠΊΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°. ΠŸΡ€ΠΈ этом сосСдство опрСдСляСтся ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ, Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈ ΠΎΠ±Π΅ΠΈΠΌ диагоналям (справа Π½Π°Π»Π΅Π²ΠΎ ΠΈ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ).
   Amazing Frogs повторяСт всю Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°
Amazing Frogs повторяСт всю Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»Π°

ΠžΡΡ‚Π°Π»ΡŒΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° Amazing Frogs стандартна:

  • ΠŸΡ€ΠΈ Π½Π°Π±ΠΎΡ€Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹Ρ… 20 ΠΎΡ‡ΠΊΠΎΠ² происходит ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ падСния Ρ„ΠΈΠ³ΡƒΡ€ увСличиваСтся.
  • Π˜Π³Ρ€Π° заканчиваСтся, ΠΊΠΎΠ³Π΄Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π΅ Π½Π΅ΠΊΡƒΠ΄Π° ΠΏΠ°Π΄Π°Ρ‚ΡŒ.
  • НаТатиС ↓ сбрасываСт Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ Π²Π½ΠΈΠ·, ΠΏΡ€ΠΎΠ±Π΅Π» ставит ΠΈΠ³Ρ€Ρƒ Π½Π° ΠΏΠ°ΡƒΠ·Ρƒ, Π° Esc ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ.

🐍 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста

Π‘ΠΎΠ»ΡŒΡˆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° питониста»

πŸπŸŽ“ Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python для собСса

ΠŸΠΎΠ΄Ρ‚ΡΠ½ΡƒΡ‚ΡŒ свои знания ΠΏΠΎ Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Python для собСса»

🐍🧩 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ Python

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ Python для ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° нашСм Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ-ΠΊΠ°Π½Π°Π»Π΅ Β«Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π·Π°Π΄Π°Ρ‡ ΠΏΠΎ PythonΒ»

Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΈ основныС настройки ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°

Окно ΠΈΠΌΠ΅Π΅Ρ‚ фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€ 450x600, Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ прСдставляСт собой сСтку 6x12 ΠΊΠ»Π΅Ρ‚ΠΎΠΊ. Π‘Π»ΠΎΠΊΠΈ Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ состоят ΠΈΠ· Π΄Π²ΡƒΡ… ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… элСмСнтов 50Ρ…50, слСгка Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΠΎ яркости (для создания 2,5-эффСкта), ΠΈ ΠΏΠΎΠ»ΡƒΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎΠ³ΠΎ png-изобраТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 20Ρ…20 с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ сглаТивания:

ΠšΠ»Π°ΡΡΡ‹ Block ΠΈ Trimino

Π­Ρ‚ΠΈ классы – ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ элСмСнты ΠΈΠ³Ρ€Ρ‹: Block управляСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π±Π»ΠΎΠΊΠΎΠ², Π° Trimino опрСдСляСт ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ состоящих ΠΈΠ· Π±Π»ΠΎΠΊΠΎΠ² Ρ„ΠΈΠ³ΡƒΡ€ – Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ.

Block обСспСчиваСт отрисовку Π±Π»ΠΎΠΊΠΎΠ², Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ (Π²ΠΏΡ€Π°Π²ΠΎ/Π²Π»Π΅Π²ΠΎ) ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² (ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, Π±Π»ΠΎΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ послС раздСлСния Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ):

Trimino обСспСчиваСт Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… Ρ†Π²Π΅Ρ‚Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², управляСт ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ΠΌ всСх Π±Π»ΠΎΠΊΠΎΠ² сразу (ΠΊΠ°ΠΊ Ρ†Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹), ΠΈ измСняСт окраску элСмСнтов, которая внСшнС выглядит, ΠΊΠ°ΠΊ пСрСстановка Π±Π»ΠΎΠΊΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹:

Оба класса Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с сСткой (grid), которая прСдставляСт собой Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив, ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² Π½Π° ΠΏΠΎΠ»Π΅. Π­Ρ‚ΠΎ позволяСт Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ столкновСний (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для остановки падСния) ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² Π²Π»Π΅Π²ΠΎ ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ.

Окно Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΈΠ³Ρ€Ρ‹

Если ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ заполняСтся Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π΅ Π½Π΅ΠΊΡƒΠ΄Π° ΠΏΠ°Π΄Π°Ρ‚ΡŒ, ΠΈΠ³Ρ€Π° заканчиваСтся: Π½Π° экранС ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ – «Новая ΠΈΠ³Ρ€Π°Β» ΠΈ Β«Π’Ρ‹ΠΉΡ‚ΠΈΒ». Π—Π° Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΈ ΠΊΠ»ΠΈΠΊΠΈ ΠΏΠΎ Π½ΠΈΠΌ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ класс Button:

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

🐍 ПишСм ВСтрис Π½Π° Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Pygame

Класс Game

Π­Ρ‚ΠΎΡ‚ класс Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ всю ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΈΠ³Ρ€Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ состояния ΠΈΠ³Ρ€Ρ‹, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ столкновСний ΠΈ отрисовку. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Game:

  • reset_game – сбрасываСт ΠΈΠ³Ρ€Ρƒ Π΄ΠΎ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния. Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ сСтку, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ, обнуляСт статистику ΠΈ настройки.
  • check_collision – провСряСт, столкнулся Π»ΠΈ Π±Π»ΠΎΠΊ с Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Π΅ΠΉ сСтки ΠΈΠ»ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌ Π±Π»ΠΎΠΊΠΎΠΌ. Если Π±Π»ΠΎΠΊ достиг Π½ΠΈΠ·Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ Π½ΠΈΠΌ Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π±Π»ΠΎΠΊ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ True.
  • lock_trimino – ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ пСрСстаСт Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ, Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠΈ Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² сСткС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ Π±Π»ΠΎΠΊΠΎΠ² сохраняСтся Π² массивС grid. Π—Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ Π»ΠΈΠ½ΠΈΠΈ (ΠΌΠ΅Ρ‚ΠΎΠ΄ check_lines), ΠΈ Ссли Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ряду ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈ, ΠΈΠ³Ρ€Π° заканчиваСтся.
  • draw_next_trimino – ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΈΠ³ΡƒΡ€Ρƒ Π² ΠΏΠ°Π½Π΅Π»ΠΈ статистики справа.
  • find_matches – ΠΈΡ‰Π΅Ρ‚ совпадСния Ρ†Π²Π΅Ρ‚ΠΎΠ² Π±Π»ΠΎΠΊΠΎΠ² Π² сСткС ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ, Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ ΠΈ диагоналям (Ссли Ρ‚Ρ€ΠΈ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π»ΠΎΠΊΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° стоят рядом).
  • remove_matches – удаляСт Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ совпадСния ΠΈΠ· сСтки ΠΈ сдвигаСт Π±Π»ΠΎΠΊΠΈ Π²Ρ‹ΡˆΠ΅ Π²Π½ΠΈΠ·, заполняя пустыС мСста, послС Ρ‡Π΅Π³ΠΎ обновляСтся статистика.
  • level_up – ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΈΠ³Ρ€Ρ‹, Ссли Π±Ρ‹Π»ΠΎ ΡƒΠ΄Π°Π»Π΅Π½ΠΎ достаточно Π±Π»ΠΎΠΊΠΎΠ², послС Ρ‡Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ падСния Π±Π»ΠΎΠΊΠΎΠ².
  • update – обновляСт состояниС ΠΈΠ³Ρ€Ρ‹, заставляя Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ ΠΏΠ°Π΄Π°Ρ‚ΡŒ ΠΈ провСряя столкновСния. Если всС Π±Π»ΠΎΠΊΠΈ Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΈΡΡŒ, ΠΎΠ½ΠΈ Ρ„ΠΈΠΊΡΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΏΠΎΠ»Π΅, послС Ρ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ Π»ΠΈΠ½ΠΈΠΈ (check_lines) Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ 3 ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±Π»ΠΎΠΊΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π°, располоТСнных рядом.
  • draw – отрисовываСт Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ ΠΈ всС Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ Π½Π° сСткС. Π’Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ статистику (счСт, ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ) ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚Ρ€ΠΈΠΌΠΈΠ½ΠΎ, Π° Ссли ΠΈΠ³Ρ€Π° ΠΎΠΊΠΎΠ½Ρ‡Π΅Π½Π°, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΎΠΊΠ½ΠΎ с ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌΠΈ «Новая ΠΈΠ³Ρ€Π°Β» ΠΈ Β«Π’Ρ‹ΠΉΡ‚ΠΈΒ».

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

πŸ˜›πŸ‘» ПишСм ΠΈΠ³Ρ€Ρƒ Pac-Man Π½Π° Python Π² 300 строк ΠΊΠΎΠ΄Π°

Основной ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ» ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий

Π—Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° основной ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ происходят ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ состояния ΠΈΠ³Ρ€Ρ‹, отрисовка ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° экранС ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡƒΠ·Π°ΠΌΠΈ:

  • clock = pygame.time.Clock() – ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для контроля частоты обновлСния ΠΈΠ³Ρ€Ρ‹ (FPS).
  • running = True – пСрСмСнная-Ρ„Π»Π°Π³ для основного Ρ†ΠΈΠΊΠ»Π° ΠΈΠ³Ρ€Ρ‹, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° True, Ρ†ΠΈΠΊΠ» продолТаСтся. Π’Π½ΡƒΡ‚Ρ€ΠΈ этого Ρ†ΠΈΠΊΠ»Π° происходит всС взаимодСйствиС с ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹.
  • paused = False – пСрСмСнная для отслСТивания, поставлСна Π»ΠΈ ΠΈΠ³Ρ€Π° Π½Π° ΠΏΠ°ΡƒΠ·Ρƒ.
  • ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий for event in pygame.event.get(). Π—Π΄Π΅ΡΡŒ происходит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ события (Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ клавиш ΠΈΠ»ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΎΠΊΠ½Π°).

ΠŸΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ находится Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Amazing Frogs.

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Pygame ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ простых логичСских ΠΈΠ³Ρ€: ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΈΡ… событий Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π±Π΅Ρ€Π΅Ρ‚ Π½Π° сСбя. Однако Ссли Π²Ρ‹ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ созданиС слоТной ΠΈΠ³Ρ€Ρ‹ с Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΌ интСрфСйсом, Π΅ΡΡ‚ΡŒ смысл ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Arcade ΠΈΠ»ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ Flet, основанный Π½Π° Flutter.

***

Python: ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‡ΠΊΠ° Π΄ΠΎ junior-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

Π₯ΠΎΡ‡Π΅ΡˆΡŒ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Python ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚? Наш курс ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ пошаговоС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ основ Π΄ΠΎ создания Π±ΠΎΡ‚ΠΎΠ² ΠΈ парсСров, с ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связью ΠΎΡ‚ экспСртов.

  • 90+ часов обучСния
  • 4 ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для ΠΏΠΎΡ€Ρ‚Ρ„ΠΎΠ»ΠΈΠΎ
  • Π Π°Π±ΠΎΡ‚Π° с PyCharm ΠΈ Jupyter Notebook
  • ΠžΡΠ½ΠΎΠ²Ρ‹ ООП ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΠΎΡ‚ΠΎΠ² для Telegram ΠΈ Instagram
  • ΠŸΠ°Ρ€ΡΠΈΠ½Π³ Π²Π΅Π±-страниц

ΠšΡƒΡ€Ρ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°ΠΊ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, Ρ‚Π°ΠΊ ΠΈ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒ свои знания. Π£Ρ‡ΠΈΡ‚Π΅ΡΡŒ Π² своСм Ρ‚Π΅ΠΌΠΏΠ΅ с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΉ.

Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ, Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ

(function () { let link = document .getElementById ("3728f6bf-4aa8-4c19-9184-b07c4659bb21-https://proglib.io/w/98fb3ce1-45"); if (! link) return; let href = link .getAttribute ("href"); if (! href) return; let prefix = link .dataset .prefix; let action = link .dataset .action; link .addEventListener ("click", function (e) { let data = new FormData (); data .append ("url", href); apiFetch (action, { method: "POST", body: data }) .then (function (res) {}) .catch (function (err) { console .error (err); }); }) })();