π Π‘Π°ΠΌΠΎΡΡΠΈΡΠ΅Π»Ρ ΠΏΠΎ Python Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ . Π§Π°ΡΡΡ 21: ΠΡΠ½ΠΎΠ²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³Ρ Π½Π° Pygame
Π£ΡΠΈΠΌΡΡ Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°ΡΡ Π³ΡΠ°ΡΠΈΠΊΡ ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ, Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°ΠΌΠΈ. Π ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ°ΡΡΠΈ ΡΠ΄Π΅Π»Π°Π΅ΠΌ 10 ΠΌΠΈΠ½ΠΈ-ΡΠΈΠΌΡΠ»ΡΡΠΎΡΠΎΠ² ΠΈ Π»Π°ΠΉΡ-Π²Π΅ΡΡΠΈΠΉ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΈΠ³Ρ.
Python β ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ, ΠΈ ΠΏΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΎΠ½ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄Π»Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΈΠ³Ρ Ρ Π³ΠΈΠΏΠ΅ΡΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎΠΉ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΊΠΎΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Python-ΠΊΠΎΠ΄Π°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ Π½Π° ΠΠΈΡΠΎΠ½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΡΠΈΠ»ΠΈΡΠ½ΡΠ΅ ΠΈΠ³ΡΡ. ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ β Π² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΡΡ Π·Π°Π΄Π°ΡΡ Π±Π΅ΡΡΡ Π½Π° ΡΠ΅Π±Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Python Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ, Π²ΠΎΡ ΡΠ°ΠΌΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅:
- Pygame
- PyKyra
- Pyglet
- Panda3D
- Kivy
- PyopenGL
ΠΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, Pygame β ΠΎΠ½Π° ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΈ ΠΊ ΡΠΎΠΌΡ ΠΆΠ΅ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ³Ρ. ΠΠ° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ Pygame Π΅ΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈΠ³Ρ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΠ³Ρ Π½Π° Pygame ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π·Π΄Π΅ΡΡ.
Pygame Π½Π΅ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΠΎΡΡΠ°Π²ΠΊΡ Python, Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅:
pip install pygame
ΠΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Pygame Π½Π΅ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ Π·Π΄Π΅ΡΡ ΠΌΡ Π·Π°ΡΡΠΎΠ½Π΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΌΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ β ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΏΠΎΠΊΠ°Π΄ΡΠΎΠ²ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ°, ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ.
ΠΠΊΠ½ΠΎ ΠΈ Π³Π»Π°Π²Π½ΡΠΉ ΡΠΈΠΊΠ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π±Π°Π·Π΅ Pygame Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΠΊΠ½Π°, ΠΈ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ β Π·Π°Π΄Π°ΡΡ ΡΠ²Π΅Ρ (ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅) ΡΠΎΠ½Π°:
import pygame
# ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Pygame
pygame.init()
# ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠΊΠ½Π°
window_size = (300, 300)
# Π·Π°Π΄Π°Π΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°
pygame.display.set_caption("Π‘ΠΈΠ½ΠΈΠΉ ΡΠΎΠ½")
# ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ
screen = pygame.display.set_mode(window_size)
# Π·Π°Π΄Π°Π΅ΠΌ ΡΠ²Π΅Ρ ΡΠΎΠ½Π°
background_color = (0, 0, 255) # ΡΠΈΠ½ΠΈΠΉ
# Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΡΠΎΠ½ Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ
screen.fill(background_color)
# ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΡΠΊΡΠ°Π½ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
pygame.display.flip()
# ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π½Π°ΠΆΠΌΠ΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ "ΠΠ°ΠΊΡΡΡΡ"
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
Π¦ΠΈΠΊΠ» while True
ΠΈΠ³ΡΠ°Π΅Ρ ΡΠΎΠ»Ρ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ β Π² Π½Π΅ΠΌ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π€ΡΠ½ΠΊΡΠΈΡ pygame.quit() Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ pygame.init(). ΠΠ»Ρ
Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Python-ΠΏΡΠΎΡΠ΅ΡΡΠ°
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ exit(), Ρ
ΡΠΎΠΉ ΠΆΠ΅ ΡΠ΅Π»ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ sys.exit(), Π½ΠΎ Π΅Π΅ Π½ΡΠΆΠ½ΠΎ
ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ: import sys.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠ½Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅:
import pygame
pygame.init()
window_size = (400, 400)
screen = pygame.display.set_mode(window_size)
pygame.display.set_caption("Peter the Piglet")
# Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
background_image = pygame.image.load("background.png")
# ΠΏΠΎΠ΄Π³ΠΎΠ½ΡΠ΅ΠΌ ΠΌΠ°ΡΡΡΠ°Π± ΠΏΠΎΠ΄ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΊΠ½Π°
background_image = pygame.transform.scale(background_image, window_size)
# Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΡ
screen.blit(background_image, (0, 0))
pygame.display.flip()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΠ±ΡΡΠΈΠΉ (Π½Π°ΠΆΠ°ΡΠΈΠΉ ΠΊΠ»Π°Π²ΠΈΡ ΠΈ ΠΊΠ»ΠΈΠΊΠΎΠ²) Π² Pygame ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ β Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ. ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ²Π΅Ρ ΡΠΎΠ½Π° ΠΏΠΎΡΠ»Π΅ ΠΊΠ»ΠΈΠΊΠ° ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² Pygame ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°ΡΡ ΡΠ²Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ:
import pygame
pygame.init()
pygame.display.set_caption('ΠΠ·ΠΌΠ΅Π½ΠΈ ΡΠ²Π΅Ρ ΡΠΎΠ½Π°')
window_surface = pygame.display.set_mode((300, 300))
background = pygame.Surface((300, 300))
background.fill(pygame.Color('#000000'))
color_list = [
pygame.Color('#FF0000'), # ΠΊΡΠ°ΡΠ½ΡΠΉ
pygame.Color('#00FF00'), # Π·Π΅Π»Π΅Π½ΡΠΉ
pygame.Color('#0000FF'), # ΡΠΈΠ½ΠΈΠΉ
pygame.Color('#FFFF00'), # ΠΆΠ΅Π»ΡΡΠΉ
pygame.Color('#00FFFF'), # Π±ΠΈΡΡΠ·ΠΎΠ²ΡΠΉ
pygame.Color('#FF00FF'), # ΠΏΡΡΠΏΡΡΠ½ΡΠΉ
pygame.Color('#FFFFFF') # Π±Π΅Π»ΡΠΉ
]
current_color_index = 0
button_font = pygame.font.SysFont('Verdana', 15) # ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠΈΡΡ Verdana
button_text_color = pygame.Color("black")
button_color = pygame.Color("gray")
button_rect = pygame.Rect(100, 115, 100, 50)
button_text = button_font.render('ΠΠ°ΠΆΠΌΠΈ!', True, button_text_color)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
if button_rect.collidepoint(event.pos):
current_color_index = (current_color_index + 1) % len(color_list)
background.fill(color_list[current_color_index])
window_surface.blit(background, (0, 0))
pygame.draw.rect(window_surface, button_color, button_rect)
button_rect_center = button_text.get_rect(center=button_rect.center)
window_surface.blit(button_text, button_rect_center)
pygame.display.update()
ΠΠ°ΠΊ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» Pygame ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΡ ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ (Π½Π°ΠΆΠ°ΡΠΈΠΉ ΠΊΠ»Π°Π²ΠΈΡ ΠΈΠ»ΠΈ ΠΊΠ½ΠΎΠΏΠΎΠΊ).
- ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
- ΠΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½Π΅.
GUI Π΄Π»Ρ PyGame
Pygame ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΠΈ Π±ΡΡΡΡΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π²Π΅ΡΠΈ β ΡΡΠΈΡΡΡ, Π·Π²ΡΠΊ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΎΠ±ΡΡΠΈΠΉ, β ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ, Π»Π΅ΠΉΠ±Π»ΠΎΠ², ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΅ΡΠ°ΡΡ Π»ΠΈΠ±ΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ (Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ, Π½Π°Π·Π½Π°ΡΠΈΡΡ Π΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ), Π»ΠΈΠ±ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ GUI-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π’Π°ΠΊΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ, ΠΊ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ:
ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Pygame GUI β Π·Π΅Π»Π΅Π½ΡΠ΅ Π½ΡΠ»ΠΈ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΠ°Π΄Π°ΡΡ Π²Π½ΠΈΠ· Π² ΡΡΠΈΠ»Π΅ Β«ΠΠ°ΡΡΠΈΡΡΒ»:
import pygame
import pygame_gui
import random
window_size = (800, 600)
window = pygame.display.set_mode(window_size)
pygame.display.set_caption('ΠΠ°ΡΡΠΈΡΠ° Lite')
pygame.init()
gui_manager = pygame_gui.UIManager(window_size)
font = pygame.font.SysFont('Consolas', 20)
text_color = pygame.Color('green')
text_symbols = ['0', '1']
text_pos = [(random.randint(0, window_size[0]), 0) for i in range(50)]
text_speed = [(0, random.randint(1, 5)) for i in range(50)]
text_surface_list = []
button_size = (100, 50)
button_pos = (350, 250)
button_text = 'ΠΠ°ΡΡΠΈΡΠ°!'
button = pygame_gui.elements.UIButton(
relative_rect=pygame.Rect(button_pos, button_size),
text=button_text,
manager=gui_manager
)
while True:
time_delta = pygame.time.Clock().tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame_gui.UI_BUTTON_PRESSED:
text_surface_list = []
for i in range(50):
text_symbol = random.choice(text_symbols)
text_surface = font.render(text_symbol, True, text_color)
text_surface_list.append(text_surface)
gui_manager.process_events(event)
gui_manager.update(time_delta)
window.fill(pygame.Color('black'))
for i in range(50):
text_pos[i] = (text_pos[i][0], text_pos[i][1] + text_speed[i][1])
if text_pos[i][1] > window_size[1]:
text_pos[i] = (random.randint(0, window_size[0]), -20)
if len(text_surface_list) > i:
window.blit(text_surface_list[i], text_pos[i])
gui_manager.draw_ui(window)
pygame.display.update()
Π ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Π Pygame Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΠ³ΡΡ β ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ², ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΡΠ»Π»ΠΈΠΏΡΠΎΠ², Π»ΠΈΠ½ΠΈΠΉ, ΠΌΠ½ΠΎΠ³ΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ². ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ:
import pygame
import math
pygame.init()
screen_width = 640
screen_height = 480
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("ΠΠ΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠ³ΡΡΡ")
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
yellow = (255, 255, 0)
pink = (255, 192, 203)
# ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ
rect_x = 50
rect_y = 50
rect_width = 100
rect_height = 50
pygame.draw.rect(screen, red, (rect_x, rect_y, rect_width, rect_height))
# ΡΠΈΡΡΠ΅ΠΌ ΠΊΡΡΠ³
circle_x = 200
circle_y = 75
circle_radius = 30
pygame.draw.circle(screen, green, (circle_x, circle_y), circle_radius)
# ΡΠΈΡΡΠ΅ΠΌ ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ
triangle_x = 350
triangle_y = 50
triangle_width = 100
triangle_height = 100
triangle_points = [(triangle_x, triangle_y), (triangle_x + triangle_width, triangle_y),
(triangle_x + triangle_width / 2, triangle_y + triangle_height)]
pygame.draw.polygon(screen, blue, triangle_points)
# ΡΠΈΡΡΠ΅ΠΌ ΠΏΡΡΠΈΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ
pent_x = 500
pent_y = 100
radius = 40
sides = 5
pent_points = []
for i in range(sides):
angle_deg = 360 * i / sides
angle_rad = math.radians(angle_deg)
x = pent_x + radius * math.sin(angle_rad)
y = pent_y - radius * math.cos(angle_rad)
pent_points.append((x, y))
pygame.draw.polygon(screen, white, pent_points)
# ΡΠΈΡΡΠ΅ΠΌ ΡΠ»Π»ΠΈΠΏΡ
ellipse_x = 100
ellipse_y = 275
ellipse_width = 150
ellipse_height = 60
pygame.draw.ellipse(screen, red, (ellipse_x, ellipse_y, ellipse_width, ellipse_height))
# Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ
horiz_line_y = 400
pygame.draw.line(screen, blue, (50, horiz_line_y), (590, horiz_line_y), 5)
# Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½Π°Ρ Π»ΠΈΠ½ΠΈΡ
vert_line_x = 320
pygame.draw.line(screen, green, (vert_line_x, 50), (vert_line_x, 430), 5)
# ΡΠΈΡΡΠ΅ΠΌ ΠΆΠ΅Π»ΡΡΡ Π·Π²Π΅Π·Π΄Ρ
yellow_star_points = [(260 - 50, 250 - 70), (310 - 50, 250 - 70), (325 - 50, 200 - 70),
(340 - 50, 250 - 70), (390 - 50, 250 - 70), (350 - 50, 290 - 70),
(365 - 50, 340 - 70), (325 - 50, 305 - 70), (285 - 50, 340 - 70),
(300 - 50, 290 - 70)]
pygame.draw.polygon(screen, yellow, yellow_star_points)
# ΡΠΈΡΡΠ΅ΠΌ ΠΎΠΊΡΡΠΆΠ½ΠΎΡΡΡ Ρ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠΌ Π²Π½ΡΡΡΠΈ
circle2_x = 490
circle2_y = 350
circle2_radius = 80
pygame.draw.circle(screen, white, (circle2_x, circle2_y), circle2_radius)
square_side = 60
square_x = circle2_x - square_side / 2
square_y = circle2_y - square_side / 2
pygame.draw.rect(screen, pink, (square_x, square_y, square_side, square_side))
pygame.display.update()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
ΠΠ½ΠΈΠΌΠ°ΡΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ
ΠΡΡΠ΅, Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΏΠ°Π΄Π°ΡΡΠΈΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ Π² Β«ΠΠ°ΡΡΠΈΡΠ΅Β», ΡΠΆΠ΅ Π±ΡΠ»
ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π²
ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΊΡΠ°Π½Π° Ρ
ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΡΠ°ΡΡΠΎΡΠΎΠΉ ΠΊΠ°Π΄ΡΠ° pygame.time.Clock().tick(60).
Π£ΡΠ»ΠΎΠΆΠ½ΠΈΠΌ Π·Π°Π΄Π°ΡΡ β ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΏΡΠΎΡΡΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ Ρ ΠΏΠ°Π΄Π°ΡΡΠΈΠΌΠΈ ΡΠΎΠ·ΠΎΠ²ΡΠΌΠΈ Β«Π·Π²Π΅Π·Π΄Π°ΠΌΠΈΒ».
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π²ΡΡ
ΡΠΎΠ±ΡΡΠΈΠΉ:
- ΠΡΠΈ ΠΊΠ»ΠΈΠΊΠ΅ ΠΌΡΡΡΡ ΠΏΠΎ ΡΠΊΡΠ°Π½Ρ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ.
- ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠΈ Enter β Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΏΠ°Π²ΡΠΈΡ Π·Π²Π΅Π·Π΄. ΠΠΎΡΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
import pygame
import random
pygame.init()
screen_width = 640
screen_height = 480
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("ΠΠ²Π΅Π·Π΄Ρ ΠΏΠ°Π΄Π°ΡΡ Π²Π½ΠΈΠ·")
black = (0, 0, 0)
white = (255, 255, 255)
pink = (255, 192, 203)
font = pygame.font.SysFont("Verdana", 15)
star_list = []
for i in range(50):
x = random.randrange(screen_width)
y = random.randrange(-200, -50)
speed = random.randrange(1, 5)
star_list.append([x, y, speed])
score = 0
freeze = False # ΡΠ»Π°Π³ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.MOUSEBUTTONDOWN: # ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π·Π²Π΅Π·Π΄ ΠΏΠΎ ΠΊΠ»ΠΈΠΊΡ
freeze = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_RETURN: # Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π²Π½ΠΈΠ·, Π΅ΡΠ»ΠΈ Π½Π°ΠΆΠ°Ρ Enter
freeze = False
if not freeze: # Π΅ΡΠ»ΠΈ ΡΠ»Π°Π³ Π½Π΅ Π°ΠΊΡΠΈΠ²Π΅Π½,
# Π·Π²Π΅Π·Π΄Ρ ΠΏΠ°Π΄Π°ΡΡ Π²Π½ΠΈΠ·
for star in star_list:
star[1] += star[2]
if star[1] > screen_height:
star[0] = random.randrange(screen_width)
star[1] = random.randrange(-200, -50)
score += 1
# ΡΠΈΡΡΠ΅ΠΌ Π·Π²Π΅Π·Π΄Ρ, Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ°
screen.fill(black)
for star in star_list:
pygame.draw.circle(screen, pink, (star[0], star[1]), 3)
score_text = font.render("Π£ΠΏΠ°Π»ΠΎ Π·Π²Π΅Π·Π΄: " + str(score), True, white)
screen.blit(score_text, (10, 10))
pygame.display.update()
# ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΡΠ°ΡΡΠΎΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΊΡΠ°Π½Π°
pygame.time.Clock().tick(60)
ΠΡΠ»ΠΈΡΠ½ΠΎ! ΠΡ ΠΎΡΠ²ΠΎΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Ρ Pygame ΠΈ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ²ΠΎΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ.
ΠΡ ΡΠΌΠ΅Π΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π°Π½ΠΈΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ ΠΎΡ ΠΌΡΡΠΈ ΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. Π£ Π²Π°Ρ Π΅ΡΡΡ Π²ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ.
ΠΠΎ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ β ΡΡΠΎ Π΅ΡΠ΅ Π½Π΅ ΠΈΠ³ΡΠ°. Π§ΡΠΎΠ±Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ Π΅Ρ Π² ΠΈΠ³ΡΡ, Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°: ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ°, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΈ ΡΡΡΠΊΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°. Π ΠΏΠΎΠ»Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΎΠΊΠ° Π²Ρ:
- ΠΠ°ΡΡΠΈΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠΊΠ°Π΄ΡΠΎΠ²ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ΅ΠΉ.
- Π Π΅Π°Π»ΠΈΠ·ΡΠ΅ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ β ΠΎΡΠ½ΠΎΠ²Ρ Π»ΡΠ±ΠΎΠΉ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠΊΠΈ.
- ΠΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°ΠΆΠ΅ΠΌ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ.
- ΠΠ°ΠΏΠΈΡΠ΅ΡΠ΅ 10 ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΡ ΠΌΠΈΠ½ΠΈ-ΠΈΠ³Ρ, Π²ΠΊΠ»ΡΡΠ°Ρ Β«ΠΠ°Π±ΠΈΡΠΈΠ½ΡΒ», Β«ΠΠΌΠ΅ΠΉΠΊΡΒ» ΠΈ Β«MemoryΒ», ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ.