πŸ“ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… πŸ“

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³ Π½Π° Python, Π²Π°ΠΌ понадобится ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ socket для создания сокСтов ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· ΡΠ΅Ρ‚ΡŒ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ простой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³Π°:


import socket

# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ сокСт
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# УстанавливаСм адрСс ΠΈ ΠΏΠΎΡ€Ρ‚ для связи
address = ('localhost', 8000)

# ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌ запрос 'ping' Π½Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ адрСс
sock.sendto(b'ping', address)

# ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ сСрвСра
data, server = sock.recvfrom(1024)

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚
print(f'ΠžΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ сСрвСра: {data.decode()}')

# Π—Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ соСдинСниС
sock.close()

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΈΠ½Π³ ΠΏΠΎΠ½Π³ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅

ΠŸΡ€ΠΈΠ²Π΅Ρ‚! Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ "ΠΏΠΈΠ½Π³ ΠΏΠΎΠ½Π³" Π½Π° языкС программирования Python. Пинг ΠΏΠΎΠ½Π³ - это ΠΎΠ΄Π½Π° ΠΈΠ· самых популярных Π°Ρ€ΠΊΠ°Π΄Π½Ρ‹Ρ… ΠΈΠ³Ρ€, Π³Π΄Π΅ Π΄Π²Π° ΠΈΠ³Ρ€ΠΎΠΊΠ° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ, отбивая мяч ΠΈ ΠΏΡ‹Ρ‚Π°ΡΡΡŒ Π·Π°Π±ΠΈΡ‚ΡŒ Π³ΠΎΠ» Π² Π²ΠΎΡ€ΠΎΡ‚Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠ°. Он ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ основы программирования.

Установка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pygame

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ написанию ΠΊΠΎΠ΄Π°, Π½Π°ΠΌ понадобится ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ pygame. Она прСдоставляСт Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρ‹ Π½Π° Python. Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ pygame, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС:

pip install pygame

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ созданиС ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ³Ρ€Π°. Для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

import pygame

# Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Pygame
pygame.init()

# Π¨ΠΈΡ€ΠΈΠ½Π° ΠΈ высота ΠΎΠΊΠ½Π°
width = 800
height = 400

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π°
window = pygame.display.set_mode((width, height))
pygame.display.set_caption("Пинг Понг")

# Основной Ρ†ΠΈΠΊΠ» ΠΈΠ³Ρ€Ρ‹
while True:
    # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()

Π’ этом ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ с ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pygame, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π΅, устанавливаСм ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту ΠΎΠΊΠ½Π°, создаСм ΠΎΠΊΠ½ΠΎ ΠΈ устанавливаСм Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ Π²Ρ…ΠΎΠ΄ΠΈΠΌ Π² основной Ρ†ΠΈΠΊΠ» ΠΈΠ³Ρ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ события.

ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° экранС

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ отрисовка Ρ€Π°ΠΊΠ΅Ρ‚ΠΎΠΊ ΠΈ мяча Π½Π° экранС. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ послС создания ΠΎΠΊΠ½Π°:

# Π¦Π²Π΅Ρ‚Π°
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)

# Π Π°ΠΊΠ΅Ρ‚ΠΊΠΈ
racket_width = 10
racket_height = 60

racket1_x = 50
racket1_y = height / 2 - racket_height / 2

racket2_x = width - 50 - racket_width
racket2_y = height / 2 - racket_height / 2

# ΠœΡΡ‡
ball_radius = 10
ball_x = width / 2
ball_y = height / 2
ball_speed_x = 3
ball_speed_y = 3

def draw_objects():
    window.fill(BLACK)
    pygame.draw.rect(window, WHITE, (racket1_x, racket1_y, racket_width, racket_height))
    pygame.draw.rect(window, WHITE, (racket2_x, racket2_y, racket_width, racket_height))
    pygame.draw.circle(window, WHITE, (int(ball_x), int(ball_y)), ball_radius)

# Основной Ρ†ΠΈΠΊΠ» ΠΈΠ³Ρ€Ρ‹
while True:
    # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()

    # ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
    draw_objects()
    pygame.display.update()

Π’ этом ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ добавляСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Ρ€Π°ΠΊΠ΅Ρ‚ΠΎΠΊ ΠΈ мяча, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ… Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ скорости. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ draw_objects(), которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ ΠΈ мяч Π½Π° экранС. Π’ основном Ρ†ΠΈΠΊΠ»Π΅ ΠΈΠ³Ρ€Ρ‹ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ обновляСм экран, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ измСнСния.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ клавиш. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² основной Ρ†ΠΈΠΊΠ» ΠΈΠ³Ρ€Ρ‹:

# Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ
keys = pygame.key.get_pressed()
if keys[pygame.K_w] and racket1_y > 0:
    racket1_y -= 5
elif keys[pygame.K_s] and racket1_y < height - racket_height:
    racket1_y += 5

if keys[pygame.K_UP] and racket2_y > 0:
    racket2_y -= 5
elif keys[pygame.K_DOWN] and racket2_y < height - racket_height:
    racket2_y += 5

Π’ этом ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ pygame.key.get_pressed() для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ состояния клавиш. Если Π½Π°ΠΆΠ°Ρ‚Π° клавиша W ΠΈ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ° Π½Π΅ достигла Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΠΊΠ½Π°, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΡƒ Π²Π²Π΅Ρ€Ρ…. Аналогично, Ссли Π½Π°ΠΆΠ°Ρ‚Π° клавиша S ΠΈ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠ° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ° Π½Π΅ достигла Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΠΊΠ½Π°, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅ΠΌ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΡƒ Π²Π½ΠΈΠ·. Π’ΠΎ ΠΆΠ΅ самоС ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ ΠΈ для Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ клавиши со стрСлками Π²Π²Π΅Ρ€Ρ… ΠΈ Π²Π½ΠΈΠ·.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ мяча

И послСдний шаг - Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ двиТСния мяча. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² основной Ρ†ΠΈΠΊΠ» ΠΈΠ³Ρ€Ρ‹, послС управлСния Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ:

# ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ мяча
ball_x += ball_speed_x
ball_y += ball_speed_y

if ball_y <= 0 or ball_y >= height - ball_radius:
    ball_speed_y *= -1

if ball_x <= racket1_x + racket_width and racket1_y <= ball_y <= racket1_y + racket_height:
    ball_speed_x *= -1

if ball_x >= racket2_x - ball_radius and racket2_y <= ball_y <= racket2_y + racket_height:
    ball_speed_x *= -1

Π’ этом ΠΊΠΎΠ΄Π΅ ΠΌΡ‹ добавляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ball_speed_x ΠΈ ball_speed_y, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ двиТСния мяча ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΈ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ соотвСтствСнно. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ обновляСм ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ мяча Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ основного Ρ†ΠΈΠΊΠ»Π° ΠΈΠ³Ρ€Ρ‹. Если мяч достиг Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΠΊΠ½Π°, Π΅Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΠΈ мСняСтся Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅. Если мяч сталкиваСтся с Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ³Ρ€ΠΎΠΊΠ°, Π΅Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ мСняСтся Π½Π° ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ΅.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ! Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ ΠΈΠ³Ρ€Ρƒ "ΠΏΠΈΠ½Π³ ΠΏΠΎΠ½Π³" Π½Π° языкС программирования Python. ΠœΡ‹ рассмотрСли установку Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ pygame, созданиС ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, отрисовку ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ мяча. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π² Π²Π°ΡˆΡƒ ΠΈΠ³Ρ€Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π΅ Π΅Ρ‰Π΅ интСрСснСС. Π£Π΄Π°Ρ‡ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ!

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

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Пинг-Понг Π½Π° Python ΠΈ PyGame

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ³Ρ€ Π½Π° python. Пинг-Понг (Ping Pong) Π½Π° Python Π§Π°ΡΡ‚ΡŒ 1

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΈΠ³Ρ€Ρƒ Ping Pong Π½Π° Python Π·Π° 30 сСкунд!

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

Ѐункция Π² Python: Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈ ΠΊΠ°ΠΊ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

πŸ”’ Как ΠΏΠΎΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ²Π°Π½Ρ‚ΠΈΠ»ΡŒ Π² Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…: пошаговоС руководство

πŸ” Как Π½Π°ΠΉΡ‚ΠΈ максимальноС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅?

πŸ“ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… πŸ“

Как ΠΏΠΈΡΠ°Ρ‚ΡŒ бэкэнд Π½Π° python: основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ²Π΅Ρ€Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Π½Π΅ΠΉΡ€ΠΎΠ½Π½ΡƒΡŽ ΡΠ΅Ρ‚ΡŒ Π½Π° Python?

πŸ”½ Как ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Python: пошаговая инструкция для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ