Перший ігровий проєкт (м'ячик)
Бібліотека pygame встановлюється такими командами:
python get-pip.py
файл get-pip.py (розмістити в папці Python)
python -m pip install pygame
Підключивши бібліотеку, можемо програмувати графічні ігрові програми. Наприклад, розглянемо базовий шаблон.
Змінні BLACK WHITE GREEN RED описують кольори: чорний, білий, зелений, червоний. Як описати синій, фіолетовий, жовтий колір?
Змінна size визначає розмір ігрового екрану. screen = pygame.display.set_mode(size) створює ігрове вікно заданого розміру. pygame.display.set_caption("Моя гра") задає назву вікна.
Змінна done = False вказує на показник завершення програми. Далі у програмі, коли настане подія pygame.event.get() завершення гри, змінна done набуде значення True і цикл while not done: буде завершено.
Команда clock = pygame.time.Clock() запускає ігровий годинник, який буде оновлюватись кожні 60 мілісекунд командою clock.tick(60).
screen.fill(WHITE) - зафарбовуємо ігрове вікно білим кольором.
pygame.display.flip() - відбувається виведення зображення на ігровий екран.
import pygame
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GREEN = (0, 255, 0)
RED = (255, 0, 0)
pygame.init()
size = (700, 500)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Моя гра")
done = False
clock = pygame.time.Clock()
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
screen.fill(WHITE)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Перед командою pygame.display.flip() можна розмістити команди малювання та взаємодії ігрових об'єктів. Наприклад, створимо зображення кулі.
pygame.draw.circle(screen,BLACK,(50,50),25,25)
circle - малювання кола.
screen - місце малювання (ігрове полотно)
BLACK - колір
(50,50) - координати центру кола
25,25 - радіуси по горизонталі та вертикалі
Команда pygame.draw.ellipse(screen,BLACK,(50,50,25,25),1) намалює незафарбоване коло, з товщиною лінії 1.
Команда pygame.draw.rect(screen,BLACK,(rect_x,50,50,50)) намалює зафарбований прямокутник.
Можемо задати анімацію руху кола. Для цього введемо змінні pos_x = 50 (координата побудови по осі Х) та krok=1 (крок зміни координати) перед циклом while not done:
команду малювання змінимо:
pygame.draw.ellipse(screen,BLACK,(pos_x,50,25,25),1)
а після неї додамо команду зміни координати (координату збільшити на 1):
pos_x += krok
Для того, щоб коло відбивалось від меж екрану, введемо перевірку: якщо досягнули межі (pos_x>700), то потрібно не збільшувати координату на 1, а зменшувати. А точніше, крок зміни координати тепер стане від'ємним, а не додатнім.
if pos_x>700:
krok = -krok
pos_x += krok
Подумайте, яку команду потрібно додати, щоб м'яч відбивався від другої межі екрану.
Як зробити так, щоб м'яч рухався не лише по горизонталі, але й по вертикалі?
Як змінити швидкість руху м'яча?
Як змінити напрям (кут) руху м'яча?
https://pygame-zero.readthedocs.io/en/stable/introduction.html