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

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

Для создания ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³Π° Π² Python, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ socket для установлСния соСдинСния с Π΄Ρ€ΡƒΠ³ΠΈΠΌ хостом ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΈ получСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

        
import socket

def ping_pong(host, port):
    # Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ сокСта
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # УстановлСниС соСдинСния с сСрвСром
    client_socket.connect((host, port))
    
    # ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° сообщСния "ping" Π½Π° сСрвСр
    client_socket.send(b"ping")
    
    # ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π²Π΅Ρ‚Π° ΠΎΡ‚ сСрвСра
    response = client_socket.recv(1024)
    
    # ΠŸΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°
    print("ΠžΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ сСрвСра:", response.decode("utf-8"))
    
    # Π—Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ соСдинСния
    client_socket.close()

# Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ хоста ΠΈ ΠΏΠΎΡ€Ρ‚Π° сСрвСра
host = "localhost"
port = 1234

# Π’Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ping_pong
ping_pong(host, port)
        
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ создаСтся клиСнтский сокСт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ сСрвСру, отправляСт сообщСниС "ping" ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ ΠΎΡ‚ сСрвСра. ΠžΡ‚Π²Π΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΈ выводится Π½Π° экран.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас установлСн ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½ сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ запросы ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ сообщСния.

НадСюсь, этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³ Π² Python. Π£Π΄Π°Ρ‡ΠΈ!

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

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

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

Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ шагом Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для создания ΠΈΠ³Ρ€Ρ‹. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ pygame, которая прСдоставляСт Π½Π°ΠΌ мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для создания графичСских ΠΈΠ³Ρ€.

import pygame
import random

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΈΠ³Ρ€Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ нас Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ созданиС ΠΈΠ³Ρ€Ρ‹. Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹:

pygame.init()
 
# Установка Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠΊΠ½Π° ΠΈΠ³Ρ€Ρ‹
width = 800
height = 600
window = pygame.display.set_mode((width, height))
pygame.display.set_caption("Пинг-понг")

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ†Π²Π΅Ρ‚ΠΎΠ²

Для создания ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ ΠΈ мяч, Π½Π°ΠΌ понадобятся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π°. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ†Π²Π΅Ρ‚Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ΄Ρ‹ RGB:

white = (255, 255, 255)
black = (0, 0, 0)

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ класс для Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ ΠΏΠΎ экрану ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ столкновСний с мячом:

class Paddle:
    def __init__(self, x, y, width, height):
        self.x = x
        self.y = y
        self.width = width
        self.height = height
        self.velocity = 5
 
    def draw(self):
        pygame.draw.rect(window, white, (self.x, self.y, self.width, self.height))
 
    def move(self, direction):
        if direction == "up":
            self.y -= self.velocity
        elif direction == "down":
            self.y += self.velocity
 
        # ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ двиТСния Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… экрана
        if self.y < 0:
            self.y = 0
        if self.y > height - self.height:
            self.y = height - self.height

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ класса мяча

Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ потрСбуСтся класс для мяча, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° Π΅Π³ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ столкновСний:

class Ball:
    def __init__(self, x, y, radius):
        self.x = x
        self.y = y
        self.radius = radius
        self.velocity_x = 3 * random.choice([-1, 1])
        self.velocity_y = 3 * random.choice([-1, 1])
 
    def draw(self):
        pygame.draw.circle(window, white, (self.x, self.y), self.radius)
 
    def move(self):
        self.x += self.velocity_x
        self.y += self.velocity_y
 
        # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° столкновСний со стСнами
        if self.y < self.radius or self.y > height - self.radius:
            self.velocity_y *= -1
 
        # ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° столкновСний с Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠ°ΠΌΠΈ
        if self.x < paddle1.x + paddle1.width and self.y > paddle1.y and self.y < paddle1.y + paddle1.height:
            self.velocity_x *= -1
        elif self.x > paddle2.x - self.radius and self.y > paddle2.y and self.y < paddle2.y + paddle2.height:
            self.velocity_x *= -1

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Ρ€Π°ΠΊΠ΅Ρ‚ΠΎΠΊ ΠΈ мяча

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляры классов Ρ€Π°ΠΊΠ΅Ρ‚ΠΊΠΈ ΠΈ мяча:

paddle1 = Paddle(50, height / 2 - 50, 10, 100)
paddle2 = Paddle(width - 60, height / 2 - 50, 10, 100)
ball = Ball(width / 2, height / 2, 10)

Π¦ΠΈΠΊΠ» ΠΈΠ³Ρ€Ρ‹

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΎΠΉΡ‚ΠΈ Π² основной Ρ†ΠΈΠΊΠ» ΠΈΠ³Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ состояниС ΠΈΠ³Ρ€Ρ‹ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π²Π²ΠΎΠ΄:

running = True
 
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
 
    keys = pygame.key.get_pressed()
    if keys[pygame.K_w]:
        paddle1.move("up")
    if keys[pygame.K_s]:
        paddle1.move("down")
    if keys[pygame.K_UP]:
        paddle2.move("up")
    if keys[pygame.K_DOWN]:
        paddle2.move("down")
 
    ball.move()
 
    # ΠžΡ‚Ρ€ΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠ³Ρ€ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
    window.fill(black)
    paddle1.draw()
    paddle2.draw()
    ball.draw()
    pygame.display.update()

Π­Ρ‚ΠΎ основной каркас ΠΈΠ³Ρ€Ρ‹ ΠΏΠΈΠ½Π³-ΠΏΠΎΠ½Π³ Π½Π° языкС Python. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ большС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ подсчСт ΠΎΡ‡ΠΊΠΎΠ² ΠΈΠ»ΠΈ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ слоТности, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ³Ρ€Π° стала Π±ΠΎΠ»Π΅Π΅ интСрСсной. Π­Ρ‚Π° ΠΈΠ³Ρ€Π° вдохновляСт Π½Π° Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ программирования ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΠ³Ρ€.

Π£Π΄Π°Ρ‡ΠΈ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅!

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

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

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

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

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

Как Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ BSOD Ρ‡Π΅Ρ€Π΅Π· Python?🐍πŸ’₯

Как ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ docx Π² Python: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΈ совСтами πŸ”πŸ

πŸ” Бколько символов Π² словС python: руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎ подсчСту символов πŸ”

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

ΠšΠΎΡ€Ρ‚Π΅ΠΆ Π² Python: Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅

Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠŸΠΈΡ‚ΠΎΠ½Π΅? 10 интСрСсных ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… программистов

πŸ“± Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Python Π½Π° Android: пошаговая инструкция для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²