𧩠ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ Π»Π°Π±ΠΈΡΠΈΠ½Ρ Π½Π° Python - ΠΏΡΠΎΡΡΠΎ ΠΈ Π²Π΅ΡΠ΅Π»ΠΎ! π
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ Π»Π°Π±ΠΈΡΠΈΠ½Ρ Π² Python?
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π»Π°Π±ΠΈΡΠΈΠ½Ρ Π² Python, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ turtle Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠ°. ΠΠΎΡ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
import turtle
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΠ½ΠΎ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠ°
window = turtle.Screen()
window.title("ΠΠ°Π±ΠΈΡΠΈΠ½Ρ")
window.bgcolor("white")
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΡΠ΅ΠΏΠ°ΡΠΊΡ
t = turtle.Turtle()
t.shape("turtle")
t.color("black")
t.penup()
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ»Π΅ΡΠΊΠΈ
def draw_square():
t.pendown()
for _ in range(4):
t.forward(40)
t.right(90)
t.penup()
# Π ΠΈΡΡΠ΅ΠΌ Π»Π°Π±ΠΈΡΠΈΠ½Ρ
for y in range(5):
for x in range(5):
draw_square()
t.forward(40)
t.goto(0, (y + 1) * -40)
# ΠΠ°Π²Π΅ΡΡΠ°Π΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
window.mainloop()
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π»Π°Π±ΠΈΡΠΈΠ½Ρ ΠΈΠ· 5x5 ΠΊΠ»Π΅ΡΠΎΠΊ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Ρ turtle. ΠΠ°ΠΆΠ΄Π°Ρ ΠΊΠ»Π΅ΡΠΊΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠΌ, Π° ΡΠ΅ΡΠ΅ΠΏΠ°ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π²ΠΎΠΊΡΡΠ³ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠ°, ΡΠΈΡΡΡ Π΅Π³ΠΎ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠ°, ΡΡΠΈΠ»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π»Π°Π±ΠΈΡΠΈΠ½ΡΡ. Π£Π΄Π°ΡΠΈ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python!
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ Π»Π°Π±ΠΈΡΠΈΠ½Ρ Π² Python
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π»Π°Π±ΠΈΡΠΈΠ½Ρ Π² Python Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³ΡΠ°Π²ΠΈΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°. ΠΠ°Π±ΠΈΡΠΈΠ½ΡΡ - ΡΡΠΎ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈΠ³ΡΠΎΠ²ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΡ Π½Π°ΡΡΠΈΠΌΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ Π»Π°Π±ΠΈΡΠΈΠ½Ρ, ΡΠ°Π³ Π·Π° ΡΠ°Π³ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Python.
Π¨Π°Π³ 1: ΠΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ
ΠΠ΅ΡΠ²ΡΠΌ ΡΠ°Π³ΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π½Π°ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΉ ΠΈ Π°Π½ΠΈΠΌΠ°ΡΠΈΠ΅ΠΉ. ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ Pygame Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠΊΠ½Π° ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠ°.
import pygame
import random
Π¨Π°Π³ 2: ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°
ΠΠΎΡΠ»Π΅ ΠΈΠΌΠΏΠΎΡΡΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΠΌ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠΊΠ½Π° ΠΈ Π·Π°Π΄Π°Π΄ΠΈΠΌ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.
pygame.init()
WIDTH = 800
HEIGHT = 600
win = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("ΠΠ°Π±ΠΈΡΠΈΠ½Ρ")
Π¨Π°Π³ 3: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠ°
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π»Π°Π±ΠΈΡΠΈΠ½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³ΡΠ°Π²ΠΈΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°. ΠΡΠ°Π²ΠΈΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ - ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠ°, Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΠ΅ΠΉΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π²Π΅Ρ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ ΡΠΎΡΠ΅Π΄Π½ΠΈΠΌΠΈ ΡΡΠ΅ΠΉΠΊΠ°ΠΌΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΈΡ Π²Π΅ΡΠΎΠ².
class Cell:
def __init__(self, x, y):
self.x = x
self.y = y
self.walls = [True, True, True, True]
self.visited = False
def removeWalls(current, next):
x = current.x - next.x
if x == 1:
current.walls[1] = False
next.walls[3] = False
elif x == -1:
current.walls[3] = False
next.walls[1] = False
y = current.y - next.y
if y == 1:
current.walls[0] = False
next.walls[2] = False
elif y == -1:
current.walls[2] = False
next.walls[0] = False
def drawGrid():
for cell in grid:
x = cell.x * w
y = cell.y * w
if cell.walls[0]:
pygame.draw.line(win, (255, 255, 255), (x, y), (x + w, y))
if cell.walls[1]:
pygame.draw.line(win, (255, 255, 255), (x + w, y), (x + w, y + w))
if cell.walls[2]:
pygame.draw.line(win, (255, 255, 255), (x + w, y + w), (x, y + w))
if cell.walls[3]:
pygame.draw.line(win, (255, 255, 255), (x, y + w), (x, y))
def draw():
win.fill((0, 0, 0))
drawGrid()
pygame.display.update()
Π¨Π°Π³ 4: ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ»
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ», Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΊΡΠ°Π½Π°. ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ΅ΡΠΊΡ ΡΡΠ΅Π΅ΠΊ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ Π³ΡΠ°Π²ΠΈΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈ ΠΎΡΠΎΠ±ΡΠ°Π·ΠΈΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π»Π°Π±ΠΈΡΠΈΠ½Ρ.
# ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
w = 20
cols = WIDTH // w
rows = HEIGHT // w
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠΊΠΈ ΡΡΠ΅Π΅ΠΊ
grid = []
for j in range(rows):
for i in range(cols):
cell = Cell(i, j)
grid.append(cell)
# ΠΡΠ°Π²ΠΈΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ
current = grid[0]
stack = []
while True:
current.visited = True
next_cell = None
neighbors = []
i = current.x
j = current.y
top = grid[index(i, j - 1)]
right = grid[index(i + 1, j)]
bottom = grid[index(i, j + 1)]
left = grid[index(i - 1, j)]
if top and not top.visited:
neighbors.append(top)
if right and not right.visited:
neighbors.append(right)
if bottom and not bottom.visited:
neighbors.append(bottom)
if left and not left.visited:
neighbors.append(left)
if len(neighbors) > 0:
next_cell = random.choice(neighbors)
stack.append(current)
removeWalls(current, next_cell)
current = next_cell
elif len(stack) > 0:
current = stack.pop()
draw()
if len(stack) == 0:
break
Π¨Π°Π³ 5: ΠΠ°ΠΏΡΡΠΊ ΠΈΠ³ΡΡ
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΈΠ³ΡΡ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
# ΠΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ»
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΈΠ·ΡΡΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π»Π°Π±ΠΈΡΠΈΠ½Ρ Π² Python, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π³ΡΠ°Π²ΠΈΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ. ΠΡ ΠΈΠ·ΡΡΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ°Π³ΠΈ, Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠΊΠ½Π° Π΄ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠ°. ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠ° ΡΡΠ°ΡΡΡ Π±ΡΠ»Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ Π΄Π»Ρ Π²Π°Ρ ΠΈ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π»Π°Π±ΠΈΡΠΈΠ½Ρ Π² Python.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π»Π°Π±ΠΈΡΠΈΠ½ΡΠΎΠ² - ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Python Π΄Π»Ρ ΡΠ°Π·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³Ρ. Python - ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΡΠ΅ΡΠ°Ρ . ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅, ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΠΉΡΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΈ ΡΠ³Π»ΡΠ±Π»ΡΡΡ ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ.