ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Π—ΠΌΠ΅ΠΉΠΊΠ° Π½Π° Python

Π― Ρ‚ΠΎΡ‡Π½ΠΎ знаю, Ρ‡Ρ‚ΠΎ Π² дСтствС Π²Ρ‹ всС ΠΈΠ³Ρ€Π°Π»ΠΈ Π² ΠΈΠ³Ρ€Ρƒ Β«Π—ΠΌΠ΅ΠΉΠΊΠ°Β» ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, всСгда Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ. Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ Π΄Π΅Ρ‚ΡŒΠΌΠΈ, ΠΌΡ‹ всС любили ΠΈΡΠΊΠ°Ρ‚ΡŒ Π±Π°Π³ΠΈ Π² ΠΈΠ³Ρ€Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ сообщСниС Game over, Π½ΠΎ сСйчас, Π±ΡƒΠ΄ΡƒΡ‡ΠΈ тСхнарями, Π½Π°ΠΌ навСрняка хочСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΌΠ°Ρ€ носа Π½Π΅ ΠΏΠΎΠ΄Ρ‚ΠΎΡ‡ΠΈΠ». ИмСнно ΠΎΠ± этом ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ Π² нашСй ΡΡ‚Π°Ρ‚ΡŒΠ΅.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ дальшС, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° основныС Ρ€Π°Π·Π΄Π΅Π»Ρ‹ нашСй ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Установка Pygame

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, это ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Pygame. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, просто Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² это, просто ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ приступим ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΠ³Ρ€Ρ‹. Но ΠΏΠ΅Ρ€Π΅Π΄ этим Π΄Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ создании ΠΈΠ³Ρ€Ρ‹.

Π€ΡƒΠ½ΠΊΡ†ΠΈΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ всС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Pygame (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π² случаС успСха ΠΈΠ»ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ).
Для создания повСрхности ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π»ΠΈΠ±ΠΎ список Π»ΠΈΠ±ΠΎ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ (ΠΊΠΎΡ€Ρ‚Π΅ΠΆ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅ΠΉ).
Π—Π°Π΄Π°Π΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚ Pygame, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ систСмныС рСсурсы.

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° наш экран ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½, Π½Π°ΠΌ прСдстоит Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Π½Π΅ΠΌ Π·ΠΌΠ΅ΠΉΠΊΡƒ. Π­Ρ‚ΠΎΠΌΡƒ посвящСн ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π΄Π΅Π».

ΠœΠ°Ρ€ΠΊ Π›ΡƒΡ‚Ρ† Β«Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ PythonΒ»

Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³Ρƒ Ρƒ нас Π² Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π·ΠΌΠ΅ΠΉΠΊΡƒ, ΠΌΡ‹ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅ΠΌ нСсколько Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… для Ρ€Π°ΡΠΊΡ€Π°ΡˆΠΈΠ²Π°Π½ΠΈΡ самой Π·ΠΌΠ΅ΠΉΠΊΠΈ, Π΅Π΄Ρ‹ ΠΈ экрана. Π’ Pygame ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ цвСтовая схСма RGB (RED, GREEN, BLUE). Установка всСх Ρ†Π²Π΅Ρ‚ΠΎΠ² Π² 0 соотвСтствуСт Ρ‡Π΅Ρ€Π½ΠΎΠΌΡƒ Ρ†Π²Π΅Ρ‚Ρƒ, Π° Π² 255 β€” соотвСтствСнно, Π±Π΅Π»ΠΎΠΌΡƒ.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Как ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π·ΠΌΠ΅ΠΉΠΊΠ° создана Π² Π²ΠΈΠ΄Π΅ Π³ΠΎΠ»ΡƒΠ±ΠΎΠ³ΠΎ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π΅ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ.

Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Β«Game overΒ» ΠΏΡ€ΠΈ достиТСнии Π·ΠΌΠ΅ΠΉΠΊΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π΄Ρ‹ для Π·ΠΌΠ΅ΠΉΠΊΠΈ, ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ Π΅Π΅ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Ρ‚ΡŒ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сообщСниС Β«Yummy!!”. Помимо этого, ΠΌΡ‹ внСсСм нСбольшиС измСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π΄ΡƒΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΡƒ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ Π΅Π΅ Π·Π°Π½ΠΎΠ²ΠΎ Π² случаС пораТСния.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Terminal:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ Π·ΠΌΠ΅ΠΉΠΊΠΈ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π·ΠΌΠ΅ΠΉΠΊΠΈ послС поглощСния Сю Π΅Π΄Ρ‹. Π’Π°ΠΊΠΆΠ΅, Ссли Π·ΠΌΠ΅ΠΉΠΊΠ° сталкиваСтся с собствСнным хвостом, ΠΈΠ³Ρ€Π° заканчиваСтся ΠΈ выводится сообщСниС: β€œYou Lost! Press Q-Quit or C-Play Againβ€œ. Π”Π»ΠΈΠ½Π° Π·ΠΌΠ΅ΠΉΠΊΠΈ хранится Π² спискС, Π° Π±Π°Π·ΠΎΠ²Ρ‹Π΅ значСния Π·Π°Π΄Π°Π½Ρ‹ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Π’Ρ‹Π²ΠΎΠ΄ счСта Π½Π° экран

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Π’ΠΎΡ‚ ΠΌΡ‹ ΠΈ дошли Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° нашСй ΡΡ‚Π°Ρ‚ΡŒΠΈ. ΠœΡ‹ надССмся, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ ΠΈ всС Π±Ρ‹Π»ΠΎ понятно. Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅, Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ большС ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ваши знания Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ПишСм ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ Π½Π° python

БСгодня ΠΌΡ‹ создадим всСм ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ камСнь, Π½ΠΎΠΆΠ½ΠΈΡ†Ρ‹, Π±ΡƒΠΌΠ°Π³Π°. Π’ этом Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ ЯП python ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° tkinter, Π½ΠΎ Ссли Π²Ρ‹ Π½Π΅ Π·Π½Π°Π΅Ρ‚Π΅ Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅, ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΡƒΡŽ ΡΡ‚Π°Ρ‚ΡŒΡŽ.

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

ΠŸΠ΅Ρ€Π²ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ, это Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ структура, окошко, Ρƒ мСня ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создаём нСизмСняСмоС ΠΎΠΊΠ½ΠΎ 500 Π½Π° 500 с Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ «КамСнь, Π½ΠΎΠΆΠ½ΠΈΡ†Ρ‹, Π±ΡƒΠΌΠ°Π³Π°Β» ΠΈ Π±Π΅Π»Ρ‹ΠΌ Ρ„ΠΎΠ½ΠΎΠΌ. ИмСнно Π² это окошко ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΎΡ‡ΠΊΠΈ, счСтчики ΠΈ Ρ‚.Π΄.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² наш ΠΌΠ΅Ρ‚ΠΎΠ΄ startUI Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚Π°ΠΊΠΈΠ΅ строчки:

Π­Ρ‚ΠΈ 7 строчСк добавят Π² нашС ΠΎΠΊΠ½ΠΎ 3 ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅Ρ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡŽΡ‚. ΠœΡ‹ исправим это ΠΏΠΎΠ·ΠΆΠ΅.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄Π΅Π»Π°Π΅Ρ‚ свой Π²Ρ‹Π±ΠΎΡ€, наТимая Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈΠ· 3 ΠΊΠ½ΠΎΠΏΠΎΠΊ, это ΠΊΡ€ΡƒΡ‚ΠΎ, Π½ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΎΠΏΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΈΠΌΠ΅Π½Π½ΠΎ для этого Π½ΡƒΠΆΠ΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ random.

А Π²ΠΎΡ‚ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€, ΠΈ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚, ΠΊΡ‚ΠΎ ΠΆΠ΅ Π²Ρ‹ΠΈΠ³Ρ€Π°Π» Π² этом Ρ€Π°ΡƒΠ½Π΄Π΅. Π‘Π΄Π΅Π»Π°Π΅ΠΌ это Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π§Ρ‚ΠΎ Ρ‚ΡƒΡ‚ происходит?

Всё ΠΎΡ‡Π΅Π½ΡŒ просто. Π“Ρ€ΡƒΠ±ΠΎ говоря, Ссли ΠΈΠ³Ρ€ΠΎΠΊ Π½Π°ΠΆΠΌΠ΅Ρ‚ камСнь, отправится 1, Ссли Π½ΠΎΠΆΠ½ΠΈΡ†Ρ‹, Ρ‚ΠΎ 2, Π° Ссли Π±ΡƒΠΌΠ°Π³Π°, Ρ‚ΠΎ 3, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ отправится, Π½ΠΎ ΠΈ вывСдСтся Π² консоль.
На счСт ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Он свой Π²Ρ‹Π±ΠΎΡ€ Π΄Π΅Π»Π°Π΅Ρ‚, Π½ΠΎ Π΅Π³ΠΎ Π²Ρ‹Π±ΠΎΡ€ Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ ΠΈΠ΄Ρ‘Ρ‚.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΊΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΈ для этого ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Label. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² startUI Ρ‚Π°ΠΊΠΈΠ΅ строчки:

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ нас Π΅ΡΡ‚ΡŒ надпись, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°ΡƒΠ½Π΄Π° ΠΈ надпись со статистикой.

Π‘Π΄Π΅Π»Π°Π΅ΠΌ 3 счСтчика:

1. ΠŸΠΎΡ€Π°ΠΆΠ΅Π½ΠΈΠΉ
2. ПобСд
3. НичСй

Для этого всС Π² Ρ‚ΠΎΡ‚ ΠΆΠ΅ startUI Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚Π°ΠΊΡƒΡŽ строку:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² классС main создаСм ΠΌΠ΅Ρ‚ΠΎΠ΄ btn_click, ΠΈ пишСм Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ строки:

НСдолго ΠΌΡƒΠ·Ρ‹ΠΊΠ° ΠΈΠ³Ρ€Π°Π»Π°. Π’Π°ΠΌ ΠΆΠ΅, Π² btn_click, удаляСм

БобствСнно всё, Π½Π° этом созданиС Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΎΡΡŒ. Всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ³Ρ€Π°Ρ‚ΡŒ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ€ Π½Π° Python 3 ΠΈ Pygame: Π§Π°ΡΡ‚ΡŒ 1

МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ приходят Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ПО, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ хотят ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹. НС всС ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈΠ³Ρ€, Π½ΠΎ любой ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ собствСнныС ΠΈΠ³Ρ€Ρ‹ ΠΈΠ· интСрСса (Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, ΠΈ с Π²Ρ‹Π³ΠΎΠ΄ΠΎΠΉ). Π’ этом Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π΅, состоящСм ΠΈΠ· пяти частСй, я расскаТу Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π²ΡƒΡ…ΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python 3 ΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° PyGame.

ΠœΡ‹ создадим Π²Π΅Ρ€ΡΠΈΡŽ классичСской ΠΈΠ³Ρ€Ρ‹ Breakout. Освоив этот Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π», Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для создания ΠΈΠ³Ρ€Ρ‹, ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с возмоТностями Pygame ΠΈ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ собствСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ³Ρ€Ρ‹.

ΠœΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ возмоТности:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ€

Π“Π»Π°Π²Π½ΠΎΠ΅ Π² ΠΈΠ³Ρ€Π°Ρ… β€” ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ пиксСлСй Π½Π° экранС ΠΈ ΠΈΠ·Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΉ ΡˆΡƒΠΌ. ΠŸΠΎΡ‡Ρ‚ΠΈ Π²ΠΎ всСх Π²ΠΈΠ΄Π΅ΠΎΠΈΠ³Ρ€Π°Ρ… Π΅ΡΡ‚ΡŒ эти элСмСнты. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСрныС ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΈΠ³Ρ€Ρ‹, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… трСбуСтся ΠΌΠ½ΠΎΠ³ΠΎ сСтСвого программирования.

Основной Ρ†ΠΈΠΊΠ»

Основной Ρ†ΠΈΠΊΠ» (main loop) ΠΈΠ³Ρ€Ρ‹ выполняСтся ΠΈ обновляСт экран Ρ‡Π΅Ρ€Π΅Π· фиксированныС ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Они Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ частотой ΠΊΠ°Π΄Ρ€ΠΎΠ² ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΠ»Π°Π²Π½ΠΎΡΡ‚ΡŒ пСрСмСщСния. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ³Ρ€Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ экран 30-60 Ρ€Π°Π· Π² сСкунду. Если частота Π±ΡƒΠ΄Π΅Ρ‚ мСньшС, Ρ‚ΠΎ покаТСтся, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π½Π° экранС Π΄Ρ‘Ρ€Π³Π°ΡŽΡ‚ΡΡ.

Π’Π½ΡƒΡ‚Ρ€ΠΈ основного Ρ†ΠΈΠΊΠ»Π° Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ основных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ состояния ΠΈΠ³Ρ€Ρ‹ ΠΈ отрисовка Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния Π½Π° экранС.

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий

Бобытия Π² ΠΈΠ³Ρ€Π΅ состоят ΠΈΠ· всСго, Ρ‡Ρ‚ΠΎ происходит Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ управлСния ΠΊΠΎΠ΄Π° ΠΈΠ³Ρ€Ρ‹, Π½ΠΎ относится ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΈΠ³Ρ€Ρ‹. НапримСр, Ссли Π² Breakout ΠΈΠ³Ρ€ΠΎΠΊ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ «стрСлка Π²Π»Π΅Π²ΠΎΒ», Ρ‚ΠΎ ΠΈΠ³Ρ€Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΡƒ Π²Π»Π΅Π²ΠΎ. Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌΠΈ событиями ΡΠ²Π»ΡΡŽΡ‚ΡΡ наТатия (ΠΈ отТатия) клавиш, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΠΈ, наТатия ΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΌΡ‹ΡˆΠΈ (особСнно Π² мСню) ΠΈ события Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, дСйствиС спСцэффСкта ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π»ΠΈΡ‚ΡŒΡΡ 10 сСкунд).

ОбновлСниС состояния

Π‘Π΅Ρ€Π΄Ρ†Π΅ любой ΠΈΠ³Ρ€Ρ‹ β€” это Π΅Ρ‘ состояниС: всё Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° отслСТиваСт ΠΈ отрисовываСт Π½Π° экранС. Π’ случаС Breakout ΠΊ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ относятся ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ всСх ΠΊΠΈΡ€ΠΏΠΈΡ‡Π΅ΠΉ, позиция ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ мяча, ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΆΠΈΠ·Π½ΠΈ ΠΈ ΠΎΡ‡ΠΊΠΈ.

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ состояниС, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠΉ:

ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ°

Π˜Π³Ρ€Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ своё состояниС Π½Π° экранС, Π² Ρ‚ΠΎΠΌ числС ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ гСомСтричСскиС Ρ„ΠΈΠ³ΡƒΡ€Ρ‹, изобраТСния ΠΈ тСкст.

Π˜Π³Ρ€ΠΎΠ²Π°Ρ Ρ„ΠΈΠ·ΠΈΠΊΠ°

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΈΠ³Ρ€ симулируСтся физичСскоС ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠ΅. Π’ Breakout мяч отскакиваСт ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ систСму Ρ„ΠΈΠ·ΠΈΠΊΠΈ Ρ‚Π²Ρ‘Ρ€Π΄ΠΎΠ³ΠΎ Ρ‚Π΅Π»Π° (Ссли это ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Π²Π°Ρ‚ΡŒ).

Π’ Π±ΠΎΠ»Π΅Π΅ слоТных ΠΈΠ³Ρ€Π°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·ΠΎΡ‰Ρ€Ρ‘Π½Π½Ρ‹Π΅ ΠΈ рСалистичныС физичСскиС систСмы (особСнно Π² 3D-ΠΈΠ³Ρ€Π°Ρ…). Π‘Ρ‚ΠΎΠΈΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ³Ρ€Π°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π½Ρ‹Ρ…, Ρ„ΠΈΠ·ΠΈΠΊΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Ρ‚, ΠΈ это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

ИИ (искусствСнный ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚)

НапримСр, Π²Ρ€Π°Π³ΠΈ ΠΏΡ€Π΅ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΈΠ³Ρ€ΠΎΠΊΠ° ΠΈ Π·Π½Π°ΡŽΡ‚ ΠΎ Π΅Π³ΠΎ мСстополоТСнии. Π’ Breakout Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ИИ. Π˜Π³Ρ€ΠΎΠΊ сраТаСтся с Ρ…ΠΎΠ»ΠΎΠ΄Π½Ρ‹ΠΌΠΈ ΠΈ Ρ‚Π²Ρ‘Ρ€Π΄Ρ‹ΠΌΠΈ ΠΊΠΈΡ€ΠΏΠΈΡ‡Π°ΠΌΠΈ. Однако ИИ Π² ΠΈΠ³Ρ€Π°Ρ… часто ΠΎΡ‡Π΅Π½ΡŒ прост ΠΈ всСго лишь слСдуСт простым (ΠΈΠ»ΠΈ слоТным) ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ псСвдоразумныС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

ВоспроизвСдСниС Π·Π²ΡƒΠΊΠ°

ВоспроизвСдСниС Π·Π²ΡƒΠΊΠ° β€” Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½Ρ‹ΠΉ аспСкт ΠΈΠ³Ρ€. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС сущСствуСт Π΄Π²Π° Ρ‚ΠΈΠΏΠ° Π·Π²ΡƒΠΊΠ°: фоновая ΠΌΡƒΠ·Ρ‹ΠΊΠ° ΠΈ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ эффСкты. Π’ Breakout я Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ эффСкты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ воспроизводятся ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… событиях.

Ѐоновая ΠΌΡƒΠ·Ρ‹ΠΊΠ° β€” это просто ΠΌΡƒΠ·Ρ‹ΠΊΠ°, постоянно ΠΈΠ³Ρ€Π°ΡŽΡ‰Π°Ρ Π½Π° Ρ„ΠΎΠ½Π΅. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ³Ρ€Π°Ρ… ΠΎΠ½Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π° Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мСняСтся Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅.

Π–ΠΈΠ·Π½ΠΈ, ΠΎΡ‡ΠΊΠΈ ΠΈ ΡƒΡ€ΠΎΠ²Π½ΠΈ

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

Знакомство с Pygame

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ³Ρ€Ρ‹, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ·Π½Π°Π΅ΠΌ ΠΎ Pygame, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·ΡŒΠΌΡ‘Ρ‚ Π½Π° сСбя Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Pygame?

Pygame β€” это Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ языка Python для программирования ΠΈΠ³Ρ€. Он создан ΠΏΠΎΠ²Π΅Ρ€Ρ… SDL ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ всСм Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ:

Установка Pygame

Π­Ρ‚ΠΎ станСт ΡΠ΅Ρ€ΡŒΡ‘Π·Π½Ρ‹ΠΌ прСпятствиСм ΠΏΡ€ΠΈ запускС ΠΈΠ³Ρ€Ρ‹. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΅Ρ‘ Π² Windows Π²Π½ΡƒΡ‚Ρ€ΠΈ VirtualBox VM. НадСюсь, ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ прочтСния этой ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½Π°.

АрхитСктура ΠΈΠ³Ρ€Ρ‹

Π˜Π³Ρ€Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΊΡƒΡ‡Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со мноТСством ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Breakout β€” это нСбольшая ΠΈΠ³Ρ€Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ всСм Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слишком ΡƒΡ‚ΠΎΠΌΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ я Ρ€Π΅ΡˆΠΈΠ» ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ структуру ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, которая ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ ΠΈ для Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΈΠ³Ρ€.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΠ°ΠΏΠΎΠΊ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²

Pipfile ΠΈ Pipfile.lock β€” это соврСмСнный способ управлСния зависимостями Π² Python. Папка images содСрТит изобраТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΈΠ³Ρ€ΠΎΠΉ (Π² нашСй вСрсии Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅), Π° Π² ΠΏΠ°ΠΏΠΊΠ΅ sound_effects directory Π»Π΅ΠΆΠ°Ρ‚ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Π΅ ΠΊΠ»ΠΈΠΏΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ (ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ) Π² качСствС Π·Π²ΡƒΠΊΠΎΠ²Ρ‹Ρ… эффСктов.

Π€Π°ΠΉΠ»Ρ‹ ball.py, paddle.py ΠΈ brick.py содСрТат ΠΊΠΎΠ΄, относящийся ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Breakout. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ я Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΡŽ ΠΈΡ… Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… частях Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π°. Π€Π°ΠΉΠ» text_object.py содСрТит ΠΊΠΎΠ΄ отобраТСния тСкста Π½Π° экранС, Π° Π² Ρ„Π°ΠΉΠ»Π΅ background.py содСрТится игровая Π»ΠΎΠ³ΠΈΠΊΠ° Breakout.

Однако сущСствуСт нСсколько ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ «скСлСт» ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния. ΠžΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Π² Π½ΠΈΡ… классы ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ³Ρ€Π°Ρ… Π½Π° основС Pygame.

Класс GameObject

GameObject прСдставляСт собой Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π·Π½Π°ΡŽΡ‰ΠΈΠΉ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ сСбя Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒ, ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ свои Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ. Π’ Pygame Π΅ΡΡ‚ΡŒ ΠΈ класс Sprite, ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Ρ€ΠΎΠ»ΡŒ, Π½ΠΎ Π² этом Ρ‚ΡƒΡ‚ΠΎΡ€ΠΈΠ°Π»Π΅ я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π°ΠΌ, ΠΊΠ°ΠΊ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° Π½ΠΈΠ·ΠΊΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π° Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ слишком Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π½Π° Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ магию. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит класс GameObject:

Класс Game

Класс Game β€” это ядро ΠΈΠ³Ρ€Ρ‹. Он выполняСтся Π² основном Ρ†ΠΈΠΊΠ»Π΅. Π’ Π½Ρ‘ΠΌ Π΅ΡΡ‚ΡŒ мноТСство ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… возмоТностСй. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ.

ΠœΠ΅Ρ‚ΠΎΠ΄ __init__() ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ сам Pygame, систСму ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² ΠΈ Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ ΠΌΠΈΠΊΡˆΠ΅Ρ€. Π’Ρ€ΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²Π° Π½ΡƒΠΆΠ½Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Π²ΠΎ всякой ΠΈΠ³Ρ€Π΅ Π½Π° Pygame ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, поэтому ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ подсистСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ, ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½Ρ‹Π΅ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. ΠœΠ΅Ρ‚ΠΎΠ΄ создаёт Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ (Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ всё отрисовываСтся) ΠΈ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ‚Π°ΠΉΠΌΠ΅Ρ€ с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ частотой ΠΊΠ°Π΄Ρ€ΠΎΠ².

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ self.objects Ρ…Ρ€Π°Π½ΠΈΡ‚ всС ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒΡΡ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ списками Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… событиях.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ update() ΠΈ draw() ΠΎΡ‡Π΅Π½ΡŒ просты. Они обходят всС управляСмыС ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Если Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π° Π½Π° экранС, Ρ‚ΠΎ порядок списка ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² опрСдСляСт, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ частично ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ.

ΠœΠ΅Ρ‚ΠΎΠ΄ handle_events() ΡΠ»ΡƒΡˆΠ°Π΅Ρ‚ события, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Pygame, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ события клавиш ΠΈ ΠΌΡ‹ΡˆΠΈ. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ события ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ события ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ².

Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ обновляСт экран, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ записываСт Π½Π° физичСский дисплСй всё содСрТимоС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‚Ρ€Π΅Π½Π΄Π΅Ρ€Π΅Π½ΠΎ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. И послСднСС, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅ β€” ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ clock.tick() для управлСния Ρ‚Π΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ итСрация.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой части ΠΌΡ‹ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ основы программирования ΠΈΠ³Ρ€ ΠΈ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² создании ΠΈΠ³Ρ€. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ‹ рассмотрСли сам Pygame ΠΈ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. НаконСц, ΠΌΡ‹ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΠ»ΠΈΡΡŒ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈΠ³Ρ€Ρ‹ ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ структуру ΠΏΠ°ΠΏΠΎΠΊ, классы GameObject ΠΈ Game.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Pygame / Π§Π°ΡΡ‚ΡŒ 1. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π­Ρ‚ΠΎ пСрвая Ρ‡Π°ΡΡ‚ΡŒ сСрии руководств Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ PygameΒ». Она ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для программистов Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ срСднСго ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ заинтСрСсованы Π² создании ΠΈΠ³Ρ€ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΈ собствСнных Π½Π°Π²Ρ‹ΠΊΠΎΠ² кодирования Π½Π° Python.

Код Π² ΡƒΡ€ΠΎΠΊΠ°Ρ… Π±Ρ‹Π» написан Π½Π° Python 3.7 ΠΈ Pygame 1.9.6

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Pygame?

Pygame β€” это «игровая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Β», Π½Π°Π±ΠΎΡ€ инструмСнтов, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰ΠΈΡ… программистам ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹. К Π½ΠΈΠΌ относятся:

Π˜Π³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»

Π’ сСрдцС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹ Π»Π΅ΠΆΠΈΡ‚ Ρ†ΠΈΠΊΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ принято Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Β«ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠΌΒ». Он запускаСтся снова ΠΈ снова, дСлая всС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° ΠΈΠ³Ρ€Π°. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π² ΠΈΠ³Ρ€Π΅ называСтся ΠΊΠ°Π΄Ρ€ΠΎΠΌ.

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΊΠ°Π΄Ρ€Π΅ происходит масса Π²Π΅Ρ‰Π΅ΠΉ, Π½ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Π½Π° Ρ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

Π Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎΠ±ΠΎ всСм, Ρ‡Ρ‚ΠΎ происходит Π²Π½Π΅ ΠΈΠ³Ρ€Ρ‹ β€” Ρ‚Π΅Ρ… событиях, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ наТатия клавиш Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π΅, ΠΊΠ»ΠΈΠΊΠΈ ΠΌΡ‹ΡˆΡŒΡŽ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ИзмСнСниС всСго, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°Π΄Ρ€Π°. Если пСрсонаТ Π² Π²ΠΎΠ·Π΄ΡƒΡ…Π΅, гравитация Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡ‚ΡΠ½ΡƒΡ‚ΡŒ Π΅Π³ΠΎ Π²Π½ΠΈΠ·. Если Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π½Π° большой скорости, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π·ΠΎΡ€Π²Π°Ρ‚ΡŒΡΡ.

Π’ этом шагС всС выводится Π½Π° экран: Ρ„ΠΎΠ½Ρ‹, пСрсонаТи, мСню. ВсС, Ρ‡Ρ‚ΠΎ ΠΈΠ³Ρ€ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, появляСтся Π½Π° экранС Π² Π½ΡƒΠΆΠ½ΠΎΠΌ мСстС.

ВрСмя

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½Ρ‹ΠΉ аспСкт ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° β€” ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹. МногиС навСрняка Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ FPS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Frames Per Second (ΠΈΠ»ΠΈ ΠΊΠ°Π΄Ρ€Ρ‹ Π² сСкунду). Он ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, сколько Ρ€Π°Π· Ρ†ΠΈΠΊΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒΡΡ Π·Π° ΠΎΠ΄Π½Ρƒ сСкунду. Π­Ρ‚ΠΎ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ³Ρ€Π° Π½Π΅ Π±Ρ‹Π»Π° слишком ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠΉ ΠΈΠ»ΠΈ быстрой. Π’Π°ΠΆΠ½ΠΎ ΠΈ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ³Ρ€Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° с Ρ€Π°Π·Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ПК. Если пСрсонаТу Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ 10 сСкунд Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΠ΅Ρ‡ΡŒ экран, эти 10 сСкунд Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ для всСх ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ².

БозданиС шаблона Pygame

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, зная ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ… элСмСнтов состоит ΠΈΠ³Ρ€Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ процСссу написания ΠΊΠΎΠ΄Π°. ΠΠ°Ρ‡Π°Ρ‚ΡŒ стоит с создания ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ pygame, которая всСго лишь ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠΊΠ½ΠΎ ΠΈ запускаСт ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ». Π­Ρ‚ΠΎ отправная Ρ‚ΠΎΡ‡ΠΊΠ° для любого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° pygame.

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ настроСк ΠΈΠ³Ρ€Ρ‹:

Π”Π°Π»ΡŒΡˆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ ΠΈΠ³Ρ€Ρ‹:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ»:

Π Π°Π·Π΄Π΅Π» Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π° (отрисовки)

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

Π­ΠΊΡ€Π°Π½Ρ‹ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² сдСланы ΠΈΠ· пиксСлСй, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит 3 элСмСнта: красный, Π·Π΅Π»Π΅Π½Ρ‹ΠΉ ΠΈ синий. Π¦Π²Π΅Ρ‚ пиксСля опрСдСляСтся Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Π³ΠΎΡ€ΠΈΡ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· элСмСнтов:
ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… основных Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 0 (Π²Ρ‹ΠΊΠ»ΡŽΡ‡Π΅Π½) Π΄ΠΎ 255 (Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π½Π° 100%), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта Π΅ΡΡ‚ΡŒ 256 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ².

Π£Π·Π½Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ количСство ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ Ρ†Π²Π΅Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ, ΡƒΠΌΠ½ΠΎΠΆΠΈΠ²:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, зная, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ†Π²Π΅Ρ‚Π°, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΡ… Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ:

А послС этого β€” Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ вСсь экран.

Но этого нСдостаточно. ДисплСй ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π΅ Ρ‚Π°ΠΊ. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ пиксСль β€” Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π»Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ экрану. По ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹ΠΌ ΠΌΠ΅Ρ€ΠΊΠ°ΠΌ это ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ процСсс. Если Π½ΡƒΠΆΠ½ΠΎ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π½Π° экранС ΠΌΠ½ΠΎΠ³ΠΎ всСго, это Π·Π°ΠΉΠΌΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π˜ΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ способом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся β€” двойная буфСризация. Π—Π²ΡƒΡ‡ΠΈΡ‚ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, Π½ΠΎ Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ двусторонняя доска, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ, показывая Ρ‚ΠΎ ΠΎΠ΄Π½Ρƒ, Ρ‚ΠΎ Π²Ρ‚ΠΎΡ€ΡƒΡŽ сторону. Одна Π±ΡƒΠ΄Π΅Ρ‚ дисплССм (Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΈΠ΄ΠΈΡ‚ ΠΈΠ³Ρ€ΠΎΠΊ), Π° вторая β€” ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ скрытой, Π΅Π΅ смоТСт Β«Π²ΠΈΠ΄Π΅Ρ‚ΡŒΒ» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΊΠ°Π΄Ρ€ΠΎΠΌ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π·Π°Π΄Π½Π΅ΠΉ части доски. Когда отрисовка Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, доска поворачиваСтся ΠΈ Π΅Π΅ содСрТимоС дСмонстрируСтся ΠΈΠ³Ρ€ΠΎΠΊΡƒ.

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

А это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ процСсс отрисовки происходит ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π·Π° ΠΊΠ°Π΄Ρ€, Π° Π½Π΅ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта.

Π’ pygame это происходит автоматичСски. НуТно всСго лишь ΡΠΊΠ°Π·Π°Ρ‚ΡŒ доскС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΠ»Π°ΡΡŒ, ΠΊΠΎΠ³Π΄Π° отрисовка Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° называСтся flip() :

Π“Π»Π°Π²Π½ΠΎΠ΅ β€” ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ функция flip() Π±Ρ‹Π»Π° Π² ΠΊΠΎΠ½Ρ†Π΅. Если ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ послС ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π°, это содСрТимоС Π½Π΅ отобразится Π½Π° экранС.

Π Π°Π·Π΄Π΅Π» Π²Π²ΠΎΠ΄Π° (событий)

Π˜Π³Ρ€Ρ‹ Π΅Ρ‰Π΅ Π½Π΅Ρ‚, поэтому ΠΏΠΎΠΊΠ° слоТно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты управлСния понадобятся. Но Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ Π²Π°ΠΆΠ½ΠΎΠ΅ событиС. Если ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ сСйчас, Ρ‚ΠΎ станСт понятно, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ возмоТности Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ. ΠΠ°ΠΆΠ°Ρ‚ΡŒ Π½Π° крСстик Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΠ³Π»Ρƒ нСдостаточно. Π­Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ событиС, ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° считала Π΅Π³ΠΎ ΠΈ, соотвСтствСнно, Π·Π°ΠΊΡ€Ρ‹Π»Π° ΠΈΠ³Ρ€Ρƒ.

Бобытия происходят постоянно. Π§Ρ‚ΠΎ, Ссли ΠΈΠ³Ρ€ΠΎΠΊ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΏΡ€Ρ‹ΠΆΠΊΠ° Π²ΠΎ врСмя отрисовки? Π­Ρ‚ΠΎ нСльзя ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΠ½Π°Ρ‡Π΅ ΠΈΠ³Ρ€ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π½. Для этого pygame сохраняСт всС события, ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΠ΅ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСго ΠΊΠ°Π΄Ρ€Π°. Π”Π°ΠΆΠ΅ Ссли ΠΈΠ³Ρ€ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π»ΡƒΠΏΠΈΡ‚ΡŒ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ, Π²Ρ‹ Π½Π΅ пропуститС Π½ΠΈ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Π½ΠΈΡ…. БоздаСтся список, ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ†ΠΈΠΊΠ»Π° for ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΏΠΎ всСм ΠΈΠ· Π½ΠΈΡ….

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ FPS

Пока Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‡Π΅Π³ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Ρ€Π°Π·Π΄Π΅Π» Update (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅), Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ настройка FPS ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΠΈΠ³Ρ€Ρ‹. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Команда tick() просит pygame ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, сколько Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Ρ†ΠΈΠΊΠ», Π° Π·Π°Ρ‚Π΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ°ΡƒΠ·Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΠΊΠ» (Ρ†Π΅Π»Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€) длился Π½ΡƒΠΆΠ½ΠΎ врСмя. Если Π·Π°Π΄Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ FPS 30, это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°Π΄Ρ€Π° β€” 1/30, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ 0,03 сСкунды. Если Ρ†ΠΈΠΊΠ» ΠΊΠΎΠ΄Π° (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅) Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 0,01 сСкунды, Ρ‚ΠΎΠ³Π΄Π° pygame сдСлаСт ΠΏΠ°ΡƒΠ·Ρƒ Π½Π° 0,02 сСкунды.

НаконСц, Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΎΠΊΠ½ΠΎ ΠΈΠ³Ρ€Ρ‹ закрываСтся. Для этого Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ pygame.quit() Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ΄Π°. Π€ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ шаблон pygame Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ руководствС этот шаблон Π±ΡƒΠ΄Π΅Ρ‚ использован ΠΊΠ°ΠΊ отправная Ρ‚ΠΎΡ‡ΠΊΠ° для изучСния процСсса отрисовки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° экранС ΠΈ ΠΈΡ… двиТСния.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ПишСм ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Ρ€ Π½Π° Python, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ pygame

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame
Π‘Ρ€Π°Π·Ρƒ ΠΎΠ³ΠΎΠ²ΠΎΡ€ΡŽΡΡŒ, Ρ‡Ρ‚ΠΎ здСсь написано для самых ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ…Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ….

Π”Π°Π²Π½ΠΎ Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ сСбя Π² качСствС ΠΈΠ³Ρ€ΠΎΠ΄Π΅Π»Π°, ΠΈ Π½Π΅Π΄Π°Π²Π½ΠΎ Π²Ρ‹ΠΏΠ°Π» случай ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Python ΠΈ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ давнюю ΠΌΠ΅Ρ‡Ρ‚Ρƒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Ρ€?

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Ρ€(platformer)β€” ΠΆΠ°Π½Ρ€ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… основной Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ процСсса являСтся ΠΏΡ€Ρ‹Π³Π°Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌ, лазаньС ΠΏΠΎ лСстницам, собираниС ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ², ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ уровня.
Π’ΠΈΠΊΠΈ

Одними ΠΈΠ· ΠΌΠΎΠΈΡ… Π»ΡŽΠ±ΠΈΠΌΡ‹Ρ… ΠΈΠ³Ρ€ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΆΠ°Π½Ρ€Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ Β«Super Mario BrothersΒ» ΠΈ Β«Super Meat BoyΒ». Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ срСднСС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Π‘Π°ΠΌΠΎΠ΅ β€” самоС Π½Π°Ρ‡Π°Π»ΠΎ.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ python Π²Π΅Ρ‚ΠΊΠΈ 2.Ρ…, с 3.Ρ… ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ запуска ниТСописанных скриптов!

НавСрноС, Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ³Ρ€Ρ‹, Π΄Π° ΠΈ всС прилоТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ pygame Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Π˜Π³Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ Β«ΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒΡΡΒ» Π² Ρ†ΠΈΠΊΠ»Π΅ ( while 1), ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ всё (Ρ„ΠΎΠ½, ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, монстров, Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ сообщСния ΠΈ Ρ‚.Π΄). Π’Π°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ рисованиС ΠΈΠ΄Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‚.Π΅. Ссли спСрва Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ гСроя, Π° ΠΏΠΎΡ‚ΠΎΠΌ Π·Π°Π»ΠΈΡ‚ΡŒ Ρ„ΠΎΠ½, Ρ‚ΠΎ гСроя Π²ΠΈΠ΄Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, ΡƒΡ‡Ρ‚ΠΈΡ‚Π΅ это Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅.

Запустив этот ΠΊΠΎΠ΄, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΎΠΊΠ½ΠΎ, Π·Π°Π»ΠΈΡ‚ΠΎΠ΅ зСлСнСньким Ρ†Π²Π΅Ρ‚ΠΎΠΌ.

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame
(ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° кликабСльна)

Ну Ρ‡Ρ‚ΠΎ ΠΆΠ΅, Π½Π°Ρ‡Π°Π»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ, ΠΈΠ΄Ρ‘ΠΌ дальшС.

Π£Ρ€ΠΎΠ²Π΅Π½ΡŒ.

А ΠΊΠ°ΠΊ Π±Π΅Π· Π½Π΅Π³ΠΎ? Под словом Β«ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒΒ» Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ пространства, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ всякой β€” всячиной, ΠΈ ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ наш пСрсонаТ.

Для построСния уровня создадим Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив m Π½Π° n. КаТдая ячСйка (m,n) Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ· сСбя ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ. ΠŸΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π² сСбС Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ, Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈ Π±Ρ‹Ρ‚ΡŒ пустым. ΠœΡ‹ Π² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°Ρ… Π±ΡƒΠ΄Π΅ΠΌ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Π΅ константы

Π—Π°Ρ‚Π΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ объявлСниС уровня Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main

И Π² основной Ρ†ΠΈΠΊΠ» Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’.Π΅. ΠœΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив level, ΠΈ, Ссли Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ символ Β«-Β», Ρ‚ΠΎ ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ (x * PLATFORM_WIDTH, y * PLATFORM_HEIGHT), Π³Π΄Π΅ x,y β€” индСкс Π² массивС level

Запустив, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

ΠŸΠ΅Ρ€ΡΠΎΠ½Π°ΠΆ

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΊΡƒΠ±ΠΈΠΊΠΈ Π½Π° Ρ„ΠΎΠ½Π΅ β€” это ΠΎΡ‡Π΅Π½ΡŒ скучно. Нам Π½ΡƒΠΆΠ΅Π½ наш пСрсонаТ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π±Π΅Π³Π°Ρ‚ΡŒ ΠΈ ΠΏΡ€Ρ‹Π³Π°Ρ‚ΡŒ ΠΏΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°ΠΌ.

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ класс нашСго гСроя.

Для удобства, Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ нашСго пСрсонаТа Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ player.py

Π§Ρ‚ΠΎ Ρ‚ΡƒΡ‚ интСрСсного?
Начнём с Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ создаём Π½ΠΎΠ²Ρ‹ΠΉ класс, Π½Π°ΡΠ»Π΅Π΄ΡƒΡΡΡŒ ΠΎΡ‚ класса pygame.sprite.Sprite, Ρ‚Π΅ΠΌ самым Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽ всС характСристики спрайта.
CΠΏΡ€Π°ΠΉΡ‚ β€” это двиТущССся растровоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π˜ΠΌΠ΅Π΅Ρ‚ ряд ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ свойств.

self.rect = Rect(x, y, WIDTH, HEIGHT), Π² этой строчкС ΠΌΡ‹ создаСм фактичСскиС Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ нашСго пСрсонаТа, ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ гСроя, Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° столкновСния. Но ΠΎΠ± этом Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅.

ΠœΠ΅Ρ‚ΠΎΠ΄ update(self, left, right)) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для описания повСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ update(*args) β†’ None. ΠœΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… спрайтов.

ΠœΠ΅Ρ‚ΠΎΠ΄ draw(self, screen) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π²ΠΎΠ΄Π° пСрсонаТа Π½Π° экран. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΡƒΠ±Π΅Ρ€Π΅ΠΌ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ интСрСсный способ отобраТСния гСроя.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ нашСго гСроя Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ уровня Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ гСроя ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΅Π³ΠΎ пСрСмСщСния.

Π’ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ событий Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’.Π΅. Если Π½Π°ΠΆΠ°Π»ΠΈ Π½Π° ΠΊΠ»Π°Π²ΠΈΡˆΡƒ Β«Π»Π΅Π²ΠΎΒ», Ρ‚ΠΎ ΠΈΠ΄Ρ‘ΠΌ Π²Π»Π΅Π²ΠΎ. Если отпустили β€” останавливаСмся. Π’Π°ΠΊ ΠΆΠ΅ с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Β«ΠΏΡ€Π°Π²ΠΎΒ»

Π‘Π°ΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ вызываСтся Ρ‚Π°ΠΊ: (добавляСм послС пСрСрисовки Ρ„ΠΎΠ½Π° ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ)

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Но, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, наш сСрый Π±Π»ΠΎΠΊ слишком быстро пСрСмСщаСтся, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π² количСствС ΠΊΠ°Π΄Ρ€ΠΎΠ² Π² сСкунду. Для этого послС опрСдСлСния уровня Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ‚Π°ΠΉΠΌΠ΅Ρ€

И Π² Π½Π°Ρ‡Π°Π»ΠΎ основного Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Завис Π² Π²ΠΎΠ·Π΄ΡƒΡ…Π΅

Π”Π°, наш Π³Π΅Ρ€ΠΎΠΉ Π² Π±Π΅Π·Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΎΠ½ завис Π² Π²ΠΎΠ·Π΄ΡƒΡ…Π΅.
Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π³Ρ€Π°Π²ΠΈΡ‚Π°Ρ†ΠΈΠΈ ΠΈ возмоТности ΠΏΡ€Ρ‹Π³Π°Ρ‚ΡŒ.

И Ρ‚Π°ΠΊ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ player.py

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Π΅ констант

Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄ _init_ добавляСм строки:

ДобавляСм Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ update
def update(self, left, right, up):
И Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° добавляСм:

И ΠΏΠ΅Ρ€Π΅Π΄ строчкой self.rect.x += self.xvel
ДобавляСм

И Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:
ПослС строчки left = right = False
Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ up

Π’ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ событий Π΄ΠΎΠ±Π°Π²ΠΈΠΌ

И ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° update, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π½ΠΎΠ²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ up:
hero.update(left, right)
Π½Π°

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создали силу Π³Ρ€Π°Π²ΠΈΡ‚Π°Ρ†ΠΈΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΡΠ½ΡƒΡ‚ΡŒ нас Π²Π½ΠΈΠ·, постоянно наращивая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, Ссли ΠΌΡ‹ Π½Π΅ стоим Π½Π° Π·Π΅ΠΌΠ»Π΅, ΠΈ ΠΏΡ€Ρ‹Π³Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π΅Ρ‚Π΅ ΠΌΡ‹ Π½Π΅ ΡƒΠΌΠ΅Π΅ΠΌ. А ΠΌΡ‹ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ‚Π²Π΅Ρ€Π΄ΠΎ Π²ΡΡ‚Π°Ρ‚ΡŒ Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, поэтому Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ наш Π³Π΅Ρ€ΠΎΠΉ ΠΏΠ°Π΄Π°Π΅Ρ‚ Π΄Π°Π»Π΅ΠΊΠΎ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ видимости.
ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Π’ΡΡ‚Π°Π½ΡŒ ΠΎΠ±Π΅ΠΈΠΌΠΈ Π½ΠΎΠ³Π°ΠΌΠΈ Π½Π° зСмлю свою.

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π° Π·Π΅ΠΌΠ»Π΅ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Π²Π΅Ρ€Π΄ΠΎΠΉ повСрхности? ΠžΡ‚Π²Π΅Ρ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° пСрСсСчСниС, Π½ΠΎ для этого ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ созданиС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» blocks.py, ΠΈ пСрСнСсСм Π² Π½Π΅Π³ΠΎ описаниС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π”Π°Π»ΡŒΡˆΠ΅ создадим класс, Π½Π°ΡΠ»Π΅Π΄ΡƒΡΡΡŒ ΠΎΡ‚ pygame.sprite.Sprite

Π’ΡƒΡ‚ Π½Π΅Ρ‚ Π½ΠΈ Ρ‡Π΅Π³ΠΎ Π½Π°ΠΌ ΡƒΠΆΠ΅ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ, ΠΈΠ΄Ρ‘ΠΌ дальшС.

Π’ основной Ρ„Π°ΠΉΠ»Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ΠΌ измСнСния, ΠΏΠ΅Ρ€Π΅Π΄ описаниСм массива level Π΄ΠΎΠ±Π°Π²ΠΈΠΌ

Π“Ρ€ΡƒΠΏΠΏΠ° спрайтов entities Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для отобраТСния всСх элСмСнтов этой Π³Ρ€ΡƒΠΏΠΏΡ‹.
Массив platforms Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π½Π° пСрСсСчСниС с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ.

Π’.Π΅. создаём экзСмплр класса Platform, добавляСм Π΅Π³ΠΎ Π² Π³Ρ€ΡƒΠΏΠΏΡƒ спрайтов entities ΠΈ массив platforms. Π’ entities, Ρ‡Ρ‚ΠΎΠ±Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ отобраТСния. Π’ platforms Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡ‚ΠΎΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ массив Π±Π»ΠΎΠΊΠΎΠ² Π½Π° пСрСсСчСниС с ΠΈΠ³Ρ€ΠΎΠΊΠΎΠΌ.

Π”Π°Π»ΡŒΡˆΠ΅, вСсь ΠΊΠΎΠ΄ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ уровня выносим ΠΈΠ· Ρ†ΠΈΠΊΠ»Π°.

И Ρ‚Π°ΠΊ ΠΆΠ΅ строчку
hero.draw(screen) # ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
Π—Π°ΠΌΠ΅Π½ΠΈΠΌ Π½Π°

Запустив, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π½ΠΈ Ρ‡Π΅Π³ΠΎ Π½Π΅ измСнилось. Π’Π΅Ρ€Π½ΠΎ. Π’Π΅Π΄ΡŒ ΠΌΡ‹ Π½Π΅ провСряСм нашСго гСроя Π½Π° столкновСния. Начнём это ΠΈΡΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ.

Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ player.py

УдаляСм ΠΌΠ΅Ρ‚ΠΎΠ΄ draw, ΠΎΠ½ Π½Π°ΠΌ большС Π½Π΅ Π½ΡƒΠΆΠ΅Π½. И добавляСм Π½ΠΎΠ²Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ collide

Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ происходит ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° пСрСсСчСниС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ гСроя ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ΅ имССтся, Ρ‚ΠΎ Π²Ρ‹ΡˆΠ΅ описанной Π»ΠΎΠ³ΠΈΠΊΠ΅ происходит дСйствиС.

Ну, ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ это всё происходило, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄.
ИзмСним число Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° update, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ выглядит Ρ‚Π°ΠΊ:

И Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ² Π² основном Ρ„Π°ΠΉΠ»Π΅.

Π’.Π΅. ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΠ»ΠΈ гСроя Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ Π½Π° пСрСсСчСниС ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΠ»ΠΈ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎ, снова ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ»ΠΈ Π½Π° пСрСсСчСниС ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ.

Π’ΠΎΡ‚, Ρ‡Ρ‚ΠΎ получится, ΠΊΠΎΠ³Π΄Π° запустим.

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Π€Ρƒ[Ρƒ]! ДвиТущийся ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ β€” Π½Π΅ красиво!

Π”Π°Π²Π°ΠΉΡ‚Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ приукрасим нашСго ΠœΠ°Ρ€ΠΈΠΎΠ‘ΠΎΡ.

НачнСм с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ. Для этого Π² Ρ„Π°ΠΉΠ»Π΅ blocks.py сдСлаСм нСбольшиС измСнСния.

Π—Π°ΠΌΠ΅Π½ΠΈΠΌ Π·Π°Π»ΠΈΠ²ΠΊΡƒ Ρ†Π²Π΅Ρ‚ΠΎΠΌ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, для этого строчку
self.image.fill(Color(PLATFORM_COLOR))
Π—Π°ΠΌΠ΅Π½ΠΈΠΌ Π½Π°

ΠœΡ‹ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ вмСсто сплошного Ρ†Π²Π΅Ρ‚Π°. РазумССтся, Ρ„Π°ΠΉΠ» Β«platform.pngΒ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ Β«blocksΒ», которая Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с исходными ΠΊΠΎΠ΄Π°ΠΌΠΈ.

Π’ΠΎΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ

ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Π‘ΠΏΠ΅Ρ€Π²Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π±Π»ΠΎΠΊ констант.

Π’ΡƒΡ‚, Π΄ΡƒΠΌΠ°ΡŽ, понятно, анимация Ρ€Π°Π·Π½Ρ‹Ρ… дСйствий гСроя.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ __init__

Π—Π΄Π΅ΡΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ дСйствия ΠΌΡ‹ создаСм Π½Π°Π±ΠΎΡ€ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ, ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΈΡ…(Ρ‚.Π΅. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ смСну ΠΊΠ°Π΄Ρ€ΠΎΠ²).
))
ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠ°Π΄Ρ€ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΈ врСмя ΠΏΠΎΠΊΠ°Π·Π°.

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΡƒΡŽ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ смСну Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΉ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ update.

Вуаля!
ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Π‘ΠΎΠ»ΡŒΡˆΠ΅, Π½ΡƒΠΆΠ½ΠΎ большС мСста

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΎΠΊΠ½Π° ΠΌΡ‹ ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π΅ΠΌ созданиСм динамичСской ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹.

Для этого создадим класс Camera

Π”Π°Π»Π΅Π΅, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ экзСмпляр ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ΅Ρ€Π΅Π΄ основным Ρ†ΠΈΠΊΠ»ΠΎΠΌ:

ΠœΡ‹ создали Π²Π½ΡƒΡ‚Ρ€ΠΈ большого ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ:

мСньший ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΎΠΊΠ½Π°.

МСньший ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ цСнтрируСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ пСрсонаТа(ΠΌΠ΅Ρ‚ΠΎΠ΄ update), ΠΈ всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€ΠΈΡΡƒΡŽΡ‚ΡΡ Π² мСньшСм ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ (ΠΌΠ΅Ρ‚ΠΎΠ΄ apply), Π·Π° счСт Ρ‡Π΅Π³ΠΎ создаётся Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ двиТСния ΠΊΠ°ΠΌΠ΅Ρ€Ρ‹.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π²Ρ‹ΡˆΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ рисованиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π—Π°ΠΌΠ΅Π½ΠΈΠΌ строчку
entities.draw(screen) # ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
На

И ΠΏΠ΅Ρ€Π΅Π΄ Π½Π΅ΠΉ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.

Π’ΠΎΡ‚, собствСнно, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame. Π€ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ ΠΈΠ³Ρ€Ρ‹ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ pygame

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ, ссылка Π½Π° GitHub

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части, Ссли Π±ΡƒΠ΄Π΅Ρ‚ вострСбовано сообщСством, ΠΌΡ‹ создадим свой Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ с блэкдТСком ΠΈ ΡˆΠ»ΡŽΡ…Π°ΠΌΠΈ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ, монстрами, Ρ‚Π΅Π»Π΅ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ, ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, принцСссой.

upd pygame ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚ΡΡŽΠ΄Π°, спасибо, Chris_Griffin Π·Π° Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅
upd1 Вторая Ρ‡Π°ΡΡ‚ΡŒ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

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

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