π ΠΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ Π½Π° ΠΠΈΡΠΎΠ½Π΅ Π±Π΅Π· pygame: ΠΏΠΎΡΠ°Π³ΠΎΠ²ΡΠΉ Π³ΠΈΠ΄ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
Π§ΡΠΎΠ±Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ Π½Π° Python Π±Π΅Π· pygame, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ turtle. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
import turtle
import time
delay = 0.1
# ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΎΠΊΠ½Π° ΠΈΠ³ΡΡ
window = turtle.Screen()
window.title("ΠΠΌΠ΅ΠΉΠΊΠ°")
window.bgcolor("black")
window.setup(width=600, height=600)
window.tracer(0)
# ΠΠΎΠ»ΠΎΠ²Π° Π·ΠΌΠ΅ΠΉΠΊΠΈ
head = turtle.Turtle()
head.speed(0)
head.shape("square")
head.color("white")
head.penup()
head.goto(0, 0)
head.direction = "Stop"
# ΠΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΠ»ΠΎΠ²Ρ Π·ΠΌΠ΅ΠΉΠΊΠΈ
def move():
if head.direction == "up":
y = head.ycor()
head.sety(y + 20)
# ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅
# ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ»
while True:
window.update()
move()
time.sleep(delay)
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ Π½Π°ΡΠ½Π΅ΠΌ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΡΡΠ½ΠΈΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠ° Π½Π° ΠΏΠΈΡΠΎΠ½Π΅. ΠΠΌΠ΅ΠΉΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ³ΡΠ° ΠΠΌΠ΅ΠΉΠΊΠ° - ΡΡΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π°ΡΠΊΠ°Π΄Π½Π°Ρ ΠΈΠ³ΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ³ΡΠΎΠΊ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·ΠΌΠ΅ΠΉΠΊΠΎΠΉ, ΡΡΠ΅Π΄Π°Π΅Ρ ΠΏΠΈΡΡ ΠΈ ΡΡΠ°ΡΠ°Π΅ΡΡΡ Π²ΡΠΆΠΈΡΡ, ΠΈΠ·Π±Π΅Π³Π°Ρ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ Ρ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΡΠΌΠΈ ΠΈΠ»ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ΅Π»ΠΎΠΌ.
ΠΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ³Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Pygame, Π½ΠΎ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Pygame. ΠΡΠΎ Π΄Π°ΡΡ Π²Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΡΠ°Π·Π²ΠΈΡΡ ΡΠ²ΠΎΠΈ Π½Π°Π²ΡΠΊΠΈ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Tkinter, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π° Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Python. ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ.
import tkinter as tk
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ
window = tk.Tk()
window.title("ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° ΠΏΠΈΡΠΎΠ½Π΅")
window.geometry("400x400")
# ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ»
window.mainloop()
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π·ΠΌΠ΅ΠΉΠΊΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ Π΅Π΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΊΠΈ, ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ²Π΅Ρ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π·ΠΌΠ΅ΠΉΠΊΠΈ.
import tkinter as tk
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ
window = tk.Tk()
window.title("ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° ΠΏΠΈΡΠΎΠ½Π΅")
window.geometry("400x400")
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π·ΠΌΠ΅ΠΉΠΊΡ
snake = [(100, 100), (90, 100), (80, 100)]
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ
def move_snake():
x, y = snake[0]
if direction == "ΠΠΏΡΠ°Π²ΠΎ":
x += 10
elif direction == "ΠΠ»Π΅Π²ΠΎ":
x -= 10
elif direction == "ΠΠ²Π΅ΡΡ
":
y -= 10
elif direction == "ΠΠ½ΠΈΠ·":
y += 10
# ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π½ΠΎΠ²ΡΡ Π³ΠΎΠ»ΠΎΠ²Ρ Π·ΠΌΠ΅ΠΉΠΊΠ΅
snake.insert(0, (x, y))
# Π£Π΄Π°Π»ΡΠ΅ΠΌ Ρ
Π²ΠΎΡΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ
snake.pop()
# ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ
def change_direction(new_direction):
global direction
direction = new_direction
# ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ»
window.mainloop()
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·ΠΌΠ΅ΠΉΠΊΠΈ ΠΈ ΠΏΠΈΡΠΈ Π½Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ create_rectangle
ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ canvas
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Tkinter, ΡΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ Π½Π° ΠΈΠ³ΡΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ»Π΅.
import tkinter as tk
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ
window = tk.Tk()
window.title("ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° ΠΏΠΈΡΠΎΠ½Π΅")
window.geometry("400x400")
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π·ΠΌΠ΅ΠΉΠΊΡ
snake = [(100, 100), (90, 100), (80, 100)]
def move_snake():
# ΠΠΎΠ΄ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ
def change_direction(new_direction):
# ΠΠΎΠ΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅
canvas = tk.Canvas(window, bg="black", width=400, height=400)
# Π ΠΈΡΡΠ΅ΠΌ Π·ΠΌΠ΅ΠΉΠΊΡ
for segment in snake:
x, y = segment
canvas.create_rectangle(x, y, x+10, y+10, fill="green")
# Π ΠΈΡΡΠ΅ΠΌ ΠΏΠΈΡΡ Π΄Π»Ρ Π·ΠΌΠ΅ΠΉΠΊΠΈ
food_x, food_y = (200, 200)
canvas.create_oval(food_x, food_y, food_x+10, food_y+10, fill="red")
# ΠΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅
canvas.pack()
# ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ»
window.mainloop()
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΎΡΡΠ°Π»ΠΎΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ Π·ΠΌΠ΅ΠΉΠΊΠΈ Ρ ΠΏΠΈΡΠ΅ΠΉ ΠΈ Π΅Π΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ΅Π»ΠΎΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ Π·ΠΌΠ΅ΠΉΠΊΠΈ ΠΏΡΠΈ ΡΡΠ΅Π΄Π°Π½ΠΈΠΈ ΠΏΠΈΡΠΈ. ΠΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΉ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ ΠΈ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
import tkinter as tk
window = tk.Tk()
window.title("ΠΠΌΠ΅ΠΉΠΊΠ° Π½Π° ΠΏΠΈΡΠΎΠ½Π΅")
window.geometry("400x400")
snake = [(100, 100), (90, 100), (80, 100)]
direction = "ΠΠΏΡΠ°Π²ΠΎ"
def move_snake():
# ΠΠΎΠ΄ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ
def change_direction(new_direction):
# ΠΠΎΠ΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ
canvas = tk.Canvas(window, bg="black", width=400, height=400)
# ΠΠΎΠ΄ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·ΠΌΠ΅ΠΉΠΊΠΈ
food_x, food_y = (200, 200)
canvas.create_oval(food_x, food_y, food_x+10, food_y+10, fill="red")
# ΠΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ³ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ
def game_loop():
move_snake()
head_x, head_y = snake[0]
# ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΈΡΠ΅ΠΉ
if head_x == food_x and head_y == food_y:
# ΠΠ΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ Π½ΠΎΠ²ΡΡ ΠΏΠΈΡΡ
food_x, food_y = (generate_new_food())
# Π£Π²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ Π΄Π»ΠΈΠ½Ρ Π·ΠΌΠ΅ΠΉΠΊΠΈ
snake.append((head_x, head_y))
# ΠΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΡΡΠΎΠ»ΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠ΅ Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠ΅Π»ΠΎΠΌ
if (head_x, head_y) in snake[1:]:
# ΠΠΎΠ½Π΅Ρ ΠΈΠ³ΡΡ
game_over()
# ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠΊΠ» ΠΈΠ³ΡΡ
window.after(100, game_loop)
# ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΈΠ³ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠΊΠ»
game_loop()
window.mainloop()
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠ° ΡΡΠ°ΡΡΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π·ΠΌΠ΅ΠΉΠΊΡ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Pygame. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ ΠΈ ΡΠ»ΡΡΡΠ°ΡΡ ΡΡΡ ΠΈΠ³ΡΡ, Π΄ΠΎΠ±Π°Π²Π»ΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ. Π£Π΄Π°ΡΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ!