π ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΠ Π½Π° Python Π΄Π»Ρ ΠΈΠ³ΡΡ ΠΠΌΠ΅ΠΉΠΊΠ° π
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΠ Π½Π° Python Π΄Π»Ρ ΠΈΠ³ΡΡ ΠΠΌΠ΅ΠΉΠΊΠ°
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ° (ΠΠ) Π΄Π»Ρ ΠΈΠ³ΡΡ ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΡΠΈ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ Π°Π»Π³ΠΎΡΠΈΡΠΌ A*.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import heapq
def a_star(start, goal, obstacles):
open_set = []
heapq.heappush(open_set, (0, start))
came_from = {start: None}
g_score = {start: 0}
while open_set:
current = heapq.heappop(open_set)[1]
if current == goal:
return reconstruct_path(came_from, current)
for neighbor in get_neighbors(current):
if neighbor in obstacles:
continue
tentative_g_score = g_score[current] + 1
if neighbor not in g_score or tentative_g_score < g_score[neighbor]:
g_score[neighbor] = tentative_g_score
f_score = tentative_g_score + heuristic(neighbor, goal)
heapq.heappush(open_set, (f_score, neighbor))
came_from[neighbor] = current
return None
def get_neighbors(cell):
# ΠΠ΅ΡΠ½ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΡΠ΅Π΄Π½ΠΈΡ
ΠΊΠ»Π΅ΡΠΎΠΊ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠΈ
pass
def heuristic(cell, goal):
# ΠΡΠ΅Π½ΠΈΡΡ ΡΠ²ΡΠΈΡΡΠΈΠΊΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠΎΠΉ ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡΠ΅ΠΉΠΊΠΎΠΉ
pass
def reconstruct_path(came_from, current):
path = []
while current is not None:
path.append(current)
current = came_from[current]
return path[::-1]
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ a_star
Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ ΠΠ ΠΎΡ Π³ΠΎΠ»ΠΎΠ²Ρ Π·ΠΌΠ΅ΠΉΠΊΠΈ Π΄ΠΎ ΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ Ρ
Π²ΠΎΡΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΈΡΠ΅ΠΉ.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ get_neighbors
ΠΈ heuristic
Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ Π²Π°ΡΠ΅ΠΉ ΠΈΠ³ΡΡ ΠΠΌΠ΅ΠΉΠΊΠ°.
Π£Π΄Π°ΡΠΈ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΠ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΈΠ³ΡΡ ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° Python!
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΠΠ Π½Π° Python Π΄Π»Ρ ΠΈΠ³ΡΡ "ΠΠΌΠ΅ΠΉΠΊΠ°"
ΠΡΠΈΠ²Π΅ΡΡΡΠ²ΡΡ! Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡ (ΠΠ) Π΄Π»Ρ ΠΈΠ³ΡΡ "ΠΠΌΠ΅ΠΉΠΊΠ°" Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ ΡΠΌΠ½ΠΎΠΉ ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
Π¨Π°Π³ 1: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Python ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Π° Π΅Π³ΠΎ ΡΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° pygame Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΠ³ΡΡ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
pip install pygame
Π¨Π°Π³ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΠ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²ΡΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠΊΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π½Π°ΡΠ° Π·ΠΌΠ΅ΠΉΠΊΠ°. ΠΠ°ΠΆΠ΄Π°Ρ ΡΡΠ΅ΠΉΠΊΠ° ΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡΡΡΠ°Ρ ΡΡΠ΅ΠΉΠΊΠ°, ΡΠ±Π»ΠΎΠΊΠΎ ΠΈΠ»ΠΈ ΡΠ°ΠΌΠ° Π·ΠΌΠ΅ΠΉΠΊΠ°.
import pygame
# ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈ ΡΠ²Π΅ΡΠΎΠ² ΠΏΠΎΠ»Ρ
WIDTH = 800
HEIGHT = 600
GRID_SIZE = 20
GRID_WIDTH = WIDTH // GRID_SIZE
GRID_HEIGHT = HEIGHT // GRID_SIZE
BACKGROUND_COLOR = (51, 51, 51)
GRID_COLOR = (255, 255, 255)
# ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°
pygame.init()
window = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("ΠΠΌΠ΅ΠΉΠΊΠ°")
# ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» ΠΈΠ³ΡΡ
while True:
# ΠΡΡΠΈΡΠΎΠ²ΠΊΠ° ΡΠΎΠ½Π° ΠΈ ΡΠ΅ΡΠΊΠΈ
window.fill(BACKGROUND_COLOR)
for x in range(GRID_WIDTH):
for y in range(GRID_HEIGHT):
pygame.draw.rect(window, GRID_COLOR, (x * GRID_SIZE, y * GRID_SIZE, GRID_SIZE, GRID_SIZE), 1)
# ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΡΠΊΡΠ°Π½Π΅
pygame.display.flip()
Π¨Π°Π³ 3: Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΎΠΉ
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΡΠΈΡΡΡΠΏΠΈΠΌ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΠ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΎΠΉ. ΠΠΌΠ΅ΠΉΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π½Π° Π΄Π²ΠΈΠ³Π°ΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ (Π²Π²Π΅ΡΡ , Π²Π½ΠΈΠ·, Π²Π»Π΅Π²ΠΎ, Π²ΠΏΡΠ°Π²ΠΎ) ΠΈ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
import pygame
# ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈ ΡΠ²Π΅ΡΠΎΠ² ΠΏΠΎΠ»Ρ
# ΠΠΎΠ΄ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ...
# ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΎΠΉ
UP = "up"
DOWN = "down"
LEFT = "left"
RIGHT = "right"
snake_direction = RIGHT
# ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» ΠΈΠ³ΡΡ
while True:
# ΠΠΎΠ΄ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»Ρ...
# ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and snake_direction != DOWN:
snake_direction = UP
elif event.key == pygame.K_DOWN and snake_direction != UP:
snake_direction = DOWN
elif event.key == pygame.K_LEFT and snake_direction != RIGHT:
snake_direction = LEFT
elif event.key == pygame.K_RIGHT and snake_direction != LEFT:
snake_direction = RIGHT
# ΠΠΎΠ΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ...
# ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΡΠΊΡΠ°Π½Π΅
pygame.display.flip()
Π¨Π°Π³ 4: Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΠ Π΄Π»Ρ Π·ΠΌΠ΅ΠΉΠΊΠΈ
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΠ Π΄Π»Ρ Π½Π°ΡΠ΅ΠΉ Π·ΠΌΠ΅ΠΉΠΊΠΈ. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ Π²ΡΠ±ΠΎΡΠ° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π·ΠΌΠ΅ΠΉΠΊΠ° Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΡΡΠ΅Π½ΠΊΠΈ ΠΈΠ»ΠΈ ΡΠ±Π»ΠΎΠΊΠ°, ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
import pygame
import random
# ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² ΠΈ ΡΠ²Π΅ΡΠΎΠ² ΠΏΠΎΠ»Ρ
# ΠΠΎΠ΄ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ...
# ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΎΠΉ
# ΠΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΎΠΉ...
# ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
Π΄Π»Ρ ΠΠ Π·ΠΌΠ΅ΠΉΠΊΠΈ
AI_UPDATE_FREQUENCY = 100 # ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π³ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΠ
ai_counter = 0
# ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» ΠΈΠ³ΡΡ
while True:
# ΠΠΎΠ΄ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»Ρ...
# ΠΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ...
# ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ
if ai_counter >= AI_UPDATE_FREQUENCY:
ai_counter = 0
# ΠΡΠ±ΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΠ
directions = [UP, DOWN, LEFT, RIGHT]
new_direction = random.choice(directions)
# ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ
if new_direction == UP and snake_direction != DOWN:
snake_direction = UP
elif new_direction == DOWN and snake_direction != UP:
snake_direction = DOWN
elif new_direction == LEFT and snake_direction != RIGHT:
snake_direction = LEFT
elif new_direction == RIGHT and snake_direction != LEFT:
snake_direction = RIGHT
# ΠΠΎΠ΄ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ ΡΠΎ ΡΡΠ΅Π½ΠΊΠΎΠΉ ΠΈΠ»ΠΈ ΡΠ±Π»ΠΎΠΊΠΎΠΌ...
# ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΡΠΊΡΠ°Π½Π΅
pygame.display.flip()
ΠΡΠ²ΠΎΠ΄
ΠΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡ Π΄Π»Ρ ΠΈΠ³ΡΡ "ΠΠΌΠ΅ΠΉΠΊΠ°" Π½Π° ΡΠ·ΡΠΊΠ΅ Python. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ pygame ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ Π·ΠΌΠ΅ΠΉΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΏΠΎΡΠΎΠ±Π½Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎ Π²ΡΠ±ΠΎΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ.
ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΠ°Π±ΠΎΡΠ°Π½. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌΠΈ ΠΠ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΠΎΠΉ ΠΊ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π² ΠΈΠ³ΡΠ΅.
Π£Π΄Π°ΡΠΈ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²Π°ΡΠ΅ΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈΠ³ΡΡ "ΠΠΌΠ΅ΠΉΠΊΠ°" Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ°!