Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

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

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

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

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

Π“Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΈ анимация

Π—Π²ΡƒΠΊ (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΡƒΠ·Ρ‹ΠΊΡƒ)

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ (ΠΌΡ‹ΡˆΡŒ, ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°, Π³Π΅ΠΉΠΌΠΏΠ°Π΄ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅)

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

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

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

1.ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π²ΠΎΠ΄Π° (события)

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

2.ОбновлСниС ΠΈΠ³Ρ€Ρ‹

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

3.Π Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ (прорисовка)

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

ВрСмя

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

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

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

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

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

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

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

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Pygame? ΠšΠ°Ρ€ΠΊΠ°Ρ прилоТСния, FPS

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ эти возмоТности, программист ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ простыС графичСскиС прилоТСния, Π² Ρ‚ΠΎΠΌ числС ΠΈ нСслоТныС ΠΈΠ³Ρ€Ρ‹. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡƒΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° PyGame Π½Π΅ содСрТит физичСского Π΄Π²ΠΈΠΆΠΊΠ° ΠΈ всю Ρ„ΠΈΠ·ΠΈΠΊΡƒ Π² ΠΈΠ³Ρ€Π°Ρ… приходится ΠΏΡ€ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π° основС ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ„ΠΈΠ·ΠΈΠΊΠΈ. Π’Π°ΠΊΠΆΠ΅ Π² этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π½Π΅Ρ‚ понятий ΠΊΠ°ΠΌΠ΅Ρ€ ΠΈ всС измСнСния состояний Π½Π° плоскости осущСствляСтся ΠΏΡƒΡ‚Π΅ΠΌ простого пСрСмСщСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² области ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ пространства. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ, PyGame ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ Π½Π΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ быстро Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ графичСскоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с элСмСнтарной Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π½Π° плоскости ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π·Π²ΡƒΠΊΠΎΠ²Ρ‹ΠΌΠΈ эффСктами.

ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ:

Π‘ Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ ΠΈ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ? Π’Π½Π°Ρ‡Π°Π»Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ PyGame ΠΈ основныС возмоТности Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°. А, Π·Π°Ρ‚Π΅ΠΌ, Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ это всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ИмСнно с этих ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ я ΠΈ Π±ΡƒΠ΄Ρƒ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ наши занятия.

Установка PyGame

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PyGame. ДСлаСтся это ΠΎΡ‡Π΅Π½ΡŒ просто. Под ОБ Windows слСдуСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

pip install pygame

(ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ происходит установка ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ОБ). Π”Π°Π»Π΅Π΅, нСпосрСдствСнно Π² Python, создайтС Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π·Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Π΄Π²Π΅ строчки:

Если ΠΎΠ½ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π±Π΅Π· ошибок, Π·Π½Π°Ρ‡ΠΈΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° установлСна ΠΈ Π³ΠΎΡ‚ΠΎΠ²Π° ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅.

ΠšΠ°Ρ€ΠΊΠ°Ρ прилоТСния

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

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

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Β«Π²Π΅Ρ‡Π½Ρ‹ΠΉΒ» Ρ†ΠΈΠΊΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΠ΅ события ΠΈ ΠΏΡ€ΠΈ нСобходимости ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ. Π’ самом простом Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅, здСсь Π·Π°Π΄Π°Π½ Β«Π²Π΅Ρ‡Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ»Β» ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Ρ†ΠΈΠΊΠ» for, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ события ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ событий. Π‘Π°ΠΌΠ° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ – это ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΡ‹ обращаСмся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции pygame.event.get(). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пСрСмСнная event Π±ΡƒΠ΄Π΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ событиС ΠΈΠ· этой ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. КаТдоС событиС – это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π½Π°Π±ΠΎΡ€Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… свойств. Π’ частности, всС события ΠΈΠΌΠ΅ΡŽΡ‚ свойство type, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ ΠΈ провСряСм. Если ΠΎΠ½ΠΎ Ρ€Π°Π²Π½ΠΎ константС pygame.QUIT, Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΏΡ€ΠΈΡˆΠ»ΠΎ событиС закрытия прилоТСния. И здСсь, Π² качСствС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° выступаСт стандартная Python-функция exit, которая Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΏΡ€ΠΈ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΎΠΊΠ½ΠΎ Π½Π° экранС, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°ΠΊΡ€ΠΎΠ΅ΠΌ Π΅Π³ΠΎ. ΠŸΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ срабатываСт событиС pygame.QUIT ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Если, Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, вмСсто exit Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ pass, Ρ‚ΠΎ нашС ΠΎΠΊΠ½ΠΎ Π·Π°ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚.ΠΊ. ΠΌΡ‹ фактичСски ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ этого события.

Однако, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ exit() Π½Π΅ всСгда Π±Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ просто Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Ρ†ΠΈΠΊΠ» ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ PyGame, Π½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ дальнСйшСС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ этом случаС ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ quit() ΠΏΠ°ΠΊΠ΅Ρ‚Π° PyGame:

Но ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π° ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ (ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅). ΠžΡ‚ΠΊΡƒΠ΄Π° ΠΎΠ½Π° взялась? Π­Ρ‚ΠΎ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ остановкС PyGame основной Ρ†ΠΈΠΊΠ» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ пытаСтся ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ событий. Но эта ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡƒΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°, Ρ‚.ΠΊ. PyGame остановлСн ΠΈ ΡƒΠΆΠ΅ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠžΡ‚ΡΡŽΠ΄Π° ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ это ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΌΡ‹ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΠΌ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ условиС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΌΡ‹ этого ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ выглядит ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ каркас прилоТСния PyGame.

Π—Π°Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ FPS

Однако Π² Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ сущСствСнный нСдостаток. Π“Π»Π°Π²Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ слишком быстро: ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ нСсколько миллисСкунд провСряСтся ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ событий. Π­Ρ‚ΠΎ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ процСссор ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Бобытия Ρ‚Π°ΠΊ быстро Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π”Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° выполняСтся анимация Π² динамичСских ΠΈΠ³Ρ€Π°Ρ… (Ρ‚ΠΈΠΏΠ° Π°Ρ€ΠΊΠ°Π½ΠΎΠΈΠ΄), Π²ΠΏΠΎΠ»Π½Π΅ достаточно 60 ΠΊΠ°Π΄Ρ€ΠΎΠ² Π² сСкунду, Ρ‚.Π΅. Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π³Π»Π°Π²Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» с частотой:

1/60 сСк = 17 миллисСкунд

А Π² статичСских ΠΈΠ³Ρ€Π°Ρ…, Ρ‚ΠΈΠΏΠ° пасьянс, ΠΌΠΈΠ½Π΅Ρ€ ΠΈ Ρ‚.ΠΏ., достаточно 30 ΠΊΠ°Π΄Ρ€ΠΎΠ² Π² сСкунду:

1/30 сСк = 34 миллисСкунд

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ Π² Π³Π»Π°Π²Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ прилоТСния? Если Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Β«Π² Π»ΠΎΠ±Β», Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ просто ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ эти Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° while:

Но это Π½Π΅ Π»ΡƒΡ‡ΡˆΠ΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… устройствах врСмя выполнСния ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π° Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹ΠΌ (ΠΈΠ·-Π·Π° Ρ€Π°Π·Π½ΠΎΠΉ скорости Ρ€Π°Π±ΠΎΡ‚Ρ‹ ЦП). Π—Π΄Π΅ΡΡŒ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π² 20 мс добавляСтся ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΌΡ‹ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ врСмя ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ событий, Π° просто добавляСм Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ Π² 20 мс. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ дольшС. И это ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΌ процСссС: Π½Π° ΠΎΠ΄Π½ΠΎΠΌ устройствС ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ пСрсонаТ Π±ΡƒΠ΄Π΅Ρ‚ быстрСС ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, Π° Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ – ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ встроСнный Π² PyGame инструмСнт Ρ‚ΠΈΠΊΠΎΠ² Π½Π° основС класса Clock:

Π—Π΄Π΅ΡΡŒ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ tick указываСтся частота выполнСния Ρ†ΠΈΠΊΠ»Π° Π·Π° ΠΎΠ΄Π½Ρƒ сСкунду. Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ 60 ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ» while 60 Ρ€Π°Π· Π² сСкунду. ΠŸΡ€ΠΈ этом автоматичСски учитываСтся врСмя, Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… строчСк ΠΊΠΎΠ΄Π° Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΠ½ΠΎ вычитаСтся ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ врСмя ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 17 мс. И это врСмя Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π½Π° всСх устройствах (разумССтся, Ссли ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ способно ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»Π°).

Π’ΠΎΡ‚ эту Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ (60) Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ Frames Per Second (FPS) ΠΈ, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‡Π΅Ρ€Π΅Π· ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ:

НаконСц, послСдний ΡˆΡ‚Ρ€ΠΈΡ…. ИзмСним Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π° ΠΈ Π΅Π³ΠΎ ΠΈΠΊΠΎΠ½ΠΊΡƒ. Π­Ρ‚ΠΎ дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΡ… Π΄Π²ΡƒΡ… строчСк:

НапримСр, Ссли ΠΏΡ€ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„Π»Π°Π³:

Ρ‚ΠΎ ΠΎΠΊΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ…. Или Ρ‚Π°ΠΊ:

ΠœΡ‹ здСсь сразу Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π΄Π²ΠΎΠΉΠ½ΡƒΡŽ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ускорСниС ΠΈ полноэкранный Ρ€Π΅ΠΆΠΈΠΌ. По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ.

Π’ΠΎΡ‚ Ρ‚Π°ΠΊ ΠΌΡ‹ с Π²Π°ΠΌΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ каркас прилоТСния Π½Π° PyGame. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ занятии ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ графичСскиС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Ρ‹ Π² ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Pygame? ΠšΠ°Ρ€ΠΊΠ°Ρ прилоТСния, FPS | Pygame #1

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

РисованиС графичСских ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² | Pygame #2

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

Как ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ события ΠΎΡ‚ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ | Pygame #3

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

Как ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ события ΠΎΡ‚ ΠΌΡ‹ΡˆΠΈ | Pygame #4

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ повСрхностСй (Surface) ΠΈ ΠΈΡ… анимация. ΠœΠ΅Ρ‚ΠΎΠ΄ blit | Pygame #5

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

Класс Rect. Π•Π³ΠΎ Ρ€ΠΎΠ»ΡŒ, свойства ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ | Pygame #6

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

Как Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ тСкст Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΡˆΡ€ΠΈΡ„Ρ‚Π°ΠΌΠΈ | Pygame #7

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

Как Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с изобраТСниями. ΠœΠΎΠ΄ΡƒΠ»ΠΈ image ΠΈ transform | Pygame #8

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ спрайты ΠΈ ΠΊΠ°ΠΊ с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ | Pygame #9

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

Как Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ столкновСний | Pygame #10

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame

ДобавляСм Π·Π²ΡƒΠΊ Π² ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ процСсс. ΠœΠΎΠ΄ΡƒΠ»ΠΈ mixer ΠΈ music | Pygame #11

Β© 2021 ЧастичноС ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ с Π΄Π°Π½Π½ΠΎΠ³ΠΎ сайта для распространСния Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π±ΡƒΠΌΠ°ΠΆΠ½Ρ‹Ρ…, строго Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ. ВсС тСксты ΠΈ изобраТСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ сайта

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

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° 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 Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

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

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

Pygame ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈΠ³Ρ€

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

Pygame – это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для языка Python, созданная для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 2D ΠΈΠ³Ρ€. Π’Π°ΠΊΠΆΠ΅ Pygame ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠΌ. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ понятия «Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°» ΠΈ «Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ» нСсколько Ρ€Π°Π·Π½Ρ‹Π΅. Но ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ касаСтся классификации ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ инструмСнта, Π½Π΅ всС Ρ‚Π°ΠΊ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ.

Π’ любом случаС, Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ являСтся Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ‰Π½Ρ‹ΠΌ ΠΏΠΎ-ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, ΠΎΠ½ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ свою спСцифику Π½Π° особСнности программирования ΠΈ сфСру использования ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния спСцифики Pygame – это Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ. Однако Π΅Π³ΠΎ слоТно Π½Π°Π·Π²Π°Ρ‚ΡŒ «ΠΌΠΎΡ‰Π½Ρ‹ΠΌ инструмСнтом». По своСму ΠΎΠ±ΡŠΠ΅ΠΌΡƒ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ это скорСС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°.

Π’Π°ΠΊΠΆΠ΅ сущСствуСт понятиС «ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ Π΄Π²ΠΈΠΆΠΊΠ°» ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ срСды для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€. По своСму Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Pygame ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹ΠΌ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния классификации ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Pygame являСтся API для ΠŸΠΈΡ‚ΠΎΠ½Π° ΠΊ API Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SDL.

API – это интСрфСйс (Π² основном Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ классов) для ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ (часто Π±ΠΎΠ»Π΅Π΅ высокоуровнСвого) программирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚Π° ΠΈΠ»ΠΈ иная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. SDL – это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹ΠΌΠΈ устройствами ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Π’ этом смыслС Pygame ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с Tkinter, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‡Π΅Ρ€Π΅Π· свои Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ классы прСдоставляСт ΠŸΠΈΡ‚ΠΎΠ½Ρƒ доступ ΠΊ графичСской Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Tk.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€

Π˜Π³Ρ€Ρ‹ событийно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ любоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с графичСским интСрфСйсом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅, Π½ΠΎ ΠΈΠ³Ρ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Tkinter, Π² частности Π½Π° Π΅Π³ΠΎ экзСмплярах холста. Но ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ основноС Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ графичСского ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса совсСм Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ вСлосипСды. Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ прСдназначСнная для написания ΠΈΠ³Ρ€, ΡƒΠΆΠ΅ содСрТит Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ Π»ΠΈ Π΄Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π°Π΄ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ совпадСниС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСпростой Π·Π°Π΄Π°Ρ‡Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°Π΄ΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ области пСрСкрытия, Ρ„ΠΎΡ€ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π΄Ρ€. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΈ (столкновСния) с Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ опциями настройки.

ΠŸΡ€ΠΈ всСм этом Pygame достаточно Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ, Ссли Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π² Π½Π΅ΠΌ Π½Π΅ остаСтся Π·Π° ΠΊΠ°Π΄Ρ€ΠΎΠΌ, Π° даСтся программисту Π½Π° Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ, Π²Ρ‹Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ «ΡˆΠ΅ΡΡ‚Π΅Ρ€Π΅Π½ΠΊΠΈ». Π’Π°ΠΊ Π² Pygame отсутствуСт эмуляция физичСских явлСний. Если Π²Π°ΠΌ Π½Π°Π΄ΠΎ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ с ускорСниСм ΠΈΠ»ΠΈ ΠΏΠΎ Π΄ΡƒΠ³Π΅, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΠΉΡ‚Π΅ это сами, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ взяв ΠΈΠ· курса Ρ„ΠΈΠ·ΠΈΠΊΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ.

Π˜Π³Ρ€Ρ‹ относятся ΠΊ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠΉΠ½Ρ‹ΠΌ прилоТСниям. Однако, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ этой Π³Ρ€ΡƒΠΏΠΏΡ‹, для Π½ΠΈΡ… Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Π° слоТная программная Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ, хотя достаточно простой, плюс эмуляция физичСских явлСний. Π’ ΠΈΠ³Ρ€Π°Ρ… программируСтся ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ искусствСнного ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚Π°. Π’ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΠΈΠ³Ρ€Π΅, хотя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ, Π° Π½Π΅ с ИИ, ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΈΡ€Ρ‹, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠΎ Π·Π°ΠΊΠΎΠ½Π°ΠΌ, Π·Π°Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈΠ³Ρ€Ρ‹ Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚Ρ€ΠΈ основных логичСских Π±Π»ΠΎΠΊΠ°:

ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ событий, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌ.

ИзмСнСниС состояний ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², согласно ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π΄ΡˆΠΈΠΌ событиям.

ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° экранС, согласно ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ состояниям.

Π­Ρ‚ΠΈ Ρ‚Ρ€ΠΈ этапа ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ Π² Ρ†ΠΈΠΊΠ»Π΅ бСсчислСнноС количСство Ρ€Π°Π·, ΠΏΠΎΠΊΠ° ΠΈΠ³Ρ€Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°.

ΠœΠ΅ΡΡ‚ΠΎ Pygame срСди инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Π° Π»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygame, ΠΏΠΈΡˆΡƒΡ‚ Π»ΠΈ Π½Π° Π½Π΅ΠΉ слоТныС ΠΈΠ³Ρ€Ρ‹? Π₯отя Π½Π° Pygame Π΅ΡΡ‚ΡŒ вострСбованныС ΠΈΠ³Ρ€Ρ‹, Π² ΠΏΠΎΠ΄Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ случаС – Π½Π΅Ρ‚. Для программирования ΠΏΠΎΠ΄ Π°Π½Π΄Ρ€ΠΎΠΈΠ΄ ΠΈ дСсктоп ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π±ΠΎΠ»Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ Π΄Π²ΠΈΠΆΠΊΠΈ.

Для создания Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Ρ… Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π½Ρ‹Ρ… ΠΈΠ³Ρ€ ΠΈΠ½Π΄ΠΈ-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ (ΠΎΡ‚ слова independent – нСзависимый, здСсь понимаСтся ΠΊΠ°ΠΊ «ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ°», «Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΈΠ»ΠΈ Π½Π° Ρ„ΠΈΡ€ΠΌΡƒ») часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ JavaScript ΠΈ Π΅Π³ΠΎ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ JS Ρ€ΠΎΠ΄Π½ΠΎΠΉ для Π²Π΅Π±Π° язык. Π₯отя ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° с Python Π½Π° JavaScript (https://github.com/jggatc/pyjsdl).

Π’ Ρ‡Π΅ΠΌ Ρ‚ΠΎΠ³Π΄Π° прСимущСство Pygame? Оно Π² Π»Π΅Π³ΠΊΠΎΠΌ Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π² ΠΎΡ‚Ρ€Π°ΡΠ»ΡŒ ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Pygame – нСбольшая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Π‘Π°ΠΌ Python позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΈ ясный ΠΊΠΎΠ΄. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ это Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ Π½Π°Ρ‡Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с особСнностями Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€. Π‘ΠΎΠ»Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌΠΈ программистами Pygame ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для быстрого создания ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° ΠΈΠ³Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ всС Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. ПослС этого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° пСрСписываСтся Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ языкС. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, прСимущСство Pygame Π² Π»Π΅Π³ΠΊΠΎΠΌ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈ быстрой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

ПослС Pygame Тизнь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈΠ³Ρ€ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π½Π΅ заканчиваСтся. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² сторону Kivy (https://kivy.org). Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° Python Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Π΅ прилоТСния. Π’ большСй стСпСни ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ΄ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Pygame

Pygame Π½Π΅ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Python, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ поставляСтся с установочным ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ, Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ установки. Π’ Ubuntu ΠΈ родствСнных дистрибутивах Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ pip:

Если pip Π½Π΅ установлСн, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ выполняСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ установкС смотритС здСсь: https://www.pygame.org/wiki/GettingStarted

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ:

Для Windows вмСсто ‘python3’ Π½Π°Π΄ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ‘py’. ΠŸΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ запуск ΠΈΠ³Ρ€Ρ‹ aliens, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ examples (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹) Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pygame.

Шапошникова Б. (plustilino) © 2020

Pygame. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈΠ³Ρ€ Π½Π° Python

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

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

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