ПОМОГИТЕ СРОЧНО!!!! 30 балл.
створіть власну гру в Python.
Завдання №1
Опишіть коротко сценарій майбутньої гри та модуля PyGame, які вам можуть знадобитись для реалізації сценарію.
Завдання №2
Створіть ігровий цикл для майбутньої гри.
Завдання №3
Створити саму гру (використовуйте набуті знання з минулих тем)
Answers & Comments
import pygame, sys
from pygame.locals import *
# Налаштування Pygame
pygame.init()
clock = pygame.time.Clock()
# Налаштування вікна
WINDOW_SIZE = (600, 400)
screen = pygame.display.set_mode(WINDOW_SIZE)
pygame.display.set_caption('Ping Pong')
# Кольори
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
# Розміри ракеток та м'яча
BALL_SIZE = 20
PADDLE_WIDTH = 15
PADDLE_HEIGHT = 60
# Швидкість м'яча та ракеток
BALL_SPEED = 5
PADDLE_SPEED = 5
# Початкове положення м'яча та ракеток
ball_pos = [300, 200]
ball_vel = [BALL_SPEED, BALL_SPEED]
paddle1_pos = [30, 175]
paddle2_pos = [555, 175]
# Колір м'яча
ball_color = WHITE
# Оновлення положення м'яча та ракеток
def update_ball():
global ball_pos, ball_vel, ball_color
# Оновлення положення м'яча
ball_pos[0] += ball_vel[0]
ball_pos[1] += ball_vel[1]
# Перевірка на зіткнення з верхньою та нижньою стінками
if ball_pos[1] <= BALL_SIZE / 2 or ball_pos[1] >= WINDOW_SIZE[1] - BALL_SIZE / 2:
ball_vel[1] *= -1
# Перевірка на зіткнення з ракетками
if ball_pos[0] <= PADDLE_WIDTH + BALL_SIZE / 2 + paddle1_pos[0]:
if paddle1_pos[1] < ball_pos[1] < paddle1_pos[1] + PADDLE_HEIGHT:
ball_vel[0] *= -1
ball_color = RED
else:
reset_ball()
else:
ball_color = WHITE
if ball_pos[0] >= paddle2_pos[0] - BALL_SIZE / 2:
if paddle2_pos[1] < ball_pos[1] < paddle2_pos[1] + PADDLE_HEIGHT:
ball_vel[0] *= -1
ball_color = RED
else:
reset_ball()
else:
ball_color = WHITE
def update_paddles():
global paddle1_pos, paddle2_pos
# Оновлення положення ракеток
keys = pygame.key.get_pressed()
if keys[K_w]:
paddle1_pos[1] -= PADDLE_SPEED
if keys[K_s]:
paddle1_pos[1] += PADDLE_SPEED
if keys[K_UP]:
paddle2_pos[1] -= PADDLE_SPEED
if keys[K_DOWN]:
paddle2_pos[1] += PADDLE_SPEED
# Обмеження руху ракеток у межах вікна
if paddle1_pos[1] < 0:
paddle1_pos[1] = 0
if paddle1_pos[1] > WINDOW_SIZE[1] - PADDLE_HEIGHT:
paddle1_pos[1] = WINDOW_SIZE[1] - PADDLE_HEIGHT
if paddle2_pos[1] < 0:
paddle2_pos[1] = 0
if paddle2_pos[1] > WINDOW_SIZE[1] - PADDLE_HEIGHT:
paddle2_pos[1] = WINDOW_SIZE[1] - PADDLE_HEIGHT
# Скидання положення м'яча після голу
def reset_ball():
global ball_pos, ball_vel
ball_pos = [300, 200]
ball_vel = [BALL_SPEED, BALL_SPEED]
# Головний цикл гри
while True:
# Обробка подій
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
# Оновлення стану гри
update_ball()
update_paddles()
# Очищення екрану
screen.fill(BLACK)
# Малювання м'яча та ракеток
pygame.draw.circle(screen, ball_color, ball_pos, BALL_SIZE / 2)
pygame.draw.rect(screen, WHITE, (paddle1_pos[0], paddle1_pos[1], PADDLE_WIDTH, PADDLE_HEIGHT))
pygame.draw.rect(screen, WHITE, (paddle2_pos[0], paddle2_pos[1], PADDLE_WIDTH, PADDLE_HEIGHT))
# Оновлення екрану
pygame.display.update()
clock.tick(60)
Ось гра Пінг Понг - колись робив для форума. Трішки змінив.