🐍 Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·ΠΌΠ΅ΠΉΠΊΡƒ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π±Π΅Π· 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. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ эту ΠΈΠ³Ρ€Ρƒ, добавляя Π½ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ особСнности. Π£Π΄Π°Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ!

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

Π—ΠΌΠ΅ΠΉΠΊΠ° Π½Π° Python Π·Π° 5 ΠΌΠΈΠ½ΡƒΡ‚ [ Pygame ]

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Π½Π° Python ΠΏΠΎΠ΄ Android? (PyGame)

Π—ΠΌΠ΅ΠΉΠΊΠ° Π·Π° 5 ΠΌΠΈΠ½ΡƒΡ‚ Π½Π° Python

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”Ž Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ python Ρ‡Π΅Ρ€Π΅Π· cmd: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ руководство

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΡ€Π΅Π½ΡŒ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅: просто ΠΈ эффСктивно πŸ”

βš”οΈ Rust ΠΈΠ»ΠΈ 🐍 Python: Π’ Ρ‡Π΅ΠΌ прСимущСства Rust ΠΏΠ΅Ρ€Π΅Π΄ Python?

🐍 Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·ΠΌΠ΅ΠΉΠΊΡƒ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅ Π±Π΅Π· pygame: ΠΏΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ Π³ΠΈΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ”’ Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ послСднюю Ρ†ΠΈΡ„Ρ€Ρƒ числа Π² Python?

πŸ” Как ΠΈΠ· timestamp ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Ρ‚Ρƒ Π² Python? Π£Π·Π½Π°Π΅ΠΌ простым способом

πŸ” Как Π½Π°ΠΉΡ‚ΠΈ наимСньшСС число ΠΈΠ· 4 чисСл Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅?