You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
630 lines
23 KiB
630 lines
23 KiB
---
|
|
title: Библиотека Pygame Python
|
|
excerpt: Библиотека для разработки игр Pygame
|
|
date: '2023-11-08'
|
|
tags:
|
|
- Информатика
|
|
- Программирование
|
|
- Python
|
|
- Задачи
|
|
- Pygame
|
|
---
|
|
|
|
<TableOfContents>
|
|
- [Урок 1](#урок-1)
|
|
- [Урок 2](#урок-2)
|
|
</TableOfContents>
|
|
|
|
# Урок 1
|
|
|
|
pygame - это библиотека модулей для языка Python, созданная для разработки 2D игр.
|
|
|
|
Для того чтобы установить pygame на свой компьютер необходимо открыть командную строку или терминал и написать команду
|
|
|
|
```python
|
|
pip3 install pygame
|
|
```
|
|
После установки необходимо создать новый файл и импортировать модуль pygame и написать шаблон игры
|
|
|
|
```python
|
|
# Импортируем библиотеку pygame
|
|
import pygame
|
|
# Импортируем системную функцию exit
|
|
from sys import exit
|
|
|
|
# Инициализируем pygame
|
|
pygame.init()
|
|
|
|
# Создаем окошко 800 пикселей шириной
|
|
# и 600 пикселей высотой и записываем его
|
|
# в переменную display.
|
|
# Переменную display называют поверхностью.
|
|
display = pygame.display.set_mode( (800, 600) )
|
|
|
|
# Основной цикл игры
|
|
while True:
|
|
# Ждем события (действия пользователя)
|
|
for event in pygame.event.get():
|
|
# Если нажали на крестик,
|
|
# то закрываем окно
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
|
|
# Обновляем поверхность игры
|
|
# на каждом шаге основного цикла игры
|
|
pygame.display.update()
|
|
```
|
|
|
|
Пользователь может взаимодействовать с нашей игрой. Каждое действие пользователя - это некоторое событие, которое мы можем обработать. Выражение pygame.event.get() - это список событий, произошедших в нашей игре.
|
|
|
|
Цикл for просто перебирает необработанные события. Каждое событие он присваивает переменной event (можно написать любую другую).
|
|
|
|
Поговорим о цикле while, основном цикле игры. Как часто он выполняется? Очень и очень часто, это зависит от мощности компьютера. Для обновления экрана в играх часто используют 60 кадров в секунду.
|
|
|
|
Ограничим количество выполнений цикла.
|
|
```python
|
|
import pygame
|
|
from sys import exit
|
|
|
|
pygame.init()
|
|
|
|
display = pygame.display.set_mode( (800, 600) )
|
|
|
|
FPS = 60 # Создаем переменную FPS
|
|
clock = pg.time.Clock() # Создаем счетчик для FPS
|
|
while True:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS) # Замедляем цикл до 60 выполнений в секунду
|
|
```
|
|
Методу tick() передается желаемое количество кадров в секунду. Задержку он вычисляет сам. На каждой итерации основного цикла игры секунда делится на 60 и на вычисленную величину выполняется задержка.
|
|
|
|
Рисование фигур
|
|
В библиотеке pygame существует множество функций для рисования различных фигур.
|
|
|
|
Функция polygon() рисует произвольную фигуру. Она принимает 3 обязательных параметра (поверхность, цвет и кортеж координат) и 1 необязательный (толщину линий).
|
|
```python
|
|
import pygame
|
|
from sys import exit
|
|
|
|
pygame.init()
|
|
|
|
display = pygame.display.set_mode( (800, 600) )
|
|
|
|
# Рисуем полигон (да, получится квадратик)
|
|
pygame.draw.polygon( display, (255, 0, 0) , ( (0, 0), (100, 0), (100, 100), (0, 100) ) )
|
|
|
|
FPS = 60
|
|
clock = pg.time.Clock()
|
|
while True:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
```
|
|
|
|
display - наша поверхность
|
|
|
|
(255, 0, 0) - красный цвет, почитайте про rgb
|
|
|
|
( (0, 0), (100, 0), (100, 100), (0, 100) ) - координаты вершин квадрата. Возьмите листочек и нарисуйте его координатах (замените сотню на единицу).
|
|
|
|
Давайте нарисуем треугольник
|
|
```python
|
|
import pygame
|
|
from sys import exit
|
|
|
|
pygame.init()
|
|
|
|
display = pygame.display.set_mode( (800, 600) )
|
|
|
|
# Рисуем квадратик
|
|
pygame.draw.polygon( display, (255, 0, 0) , ( (0, 0), (100, 0), (100, 100), (0, 100) ) )
|
|
# Рисуем синий треугольник
|
|
pygame.draw.polygon( display, (0, 0, 255) , ( (100, 100), (200, 200), (100, 200) ) )
|
|
|
|
FPS = 60 # Создаем переменную FPS
|
|
clock = pg.time.Clock()
|
|
while True:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
|
|
display - поверхность
|
|
```
|
|
(0, 0, 255) - синий цвет
|
|
|
|
((100, 100), (200, 200), (100, 200)) - координаты вершин нашего треугольник.
|
|
|
|
Самостоятельно нарисуйте пятиугольник (вам помогут карандаш и лист бумаги)
|
|
Рисование окружностей
|
|
Чтобы нарисовать окружность нужно вызвать метод circle из модуля draw. Команда выглядит так: pygame.draw.circle(display, color, position, radius).
|
|
|
|
display - поверхность, на которой рисуем
|
|
|
|
color - цвет, записанный в кортеже из трех чисел. (еще раз про rgb)
|
|
|
|
position - координаты точки центра окружности (кортеж из двух чисел (x, y))
|
|
|
|
radius - радиус окружности в пикселях
|
|
|
|
```python
|
|
import pygame
|
|
from sys import exit
|
|
|
|
pygame.init()
|
|
|
|
display = pygame.display.set_mode( (800, 600) )
|
|
|
|
# Рисуем квадратик
|
|
pygame.draw.polygon( display, (255, 0, 0) , ( (0, 0), (100, 0), (100, 100), (0, 100) ) )
|
|
# Рисуем синию линию
|
|
pygame.draw.polygon( display, (0, 0, 255) , ( (100, 100), (200, 200), (100, 200) ) )
|
|
# Рисуем желтую окружность с радиусом 100 пикселей
|
|
pygame.draw.circle( display, (255, 255, 0) , (400,200), 100)
|
|
|
|
FPS = 60
|
|
clock = pg.time.Clock()
|
|
while True:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
```
|
|
|
|
display - наша поверхнотсть для рисования
|
|
|
|
(255, 255, 0) - желтый цвет
|
|
|
|
(400, 200) - координаты точки центра (в нашем случае 400 пикселей от верхнего левого угла по горизонтали и 200 пикселей по вертикали)
|
|
|
|
100 - радиус нашей окружности в пикселях
|
|
|
|
Объявления переменных для цветов
|
|
Для нашего с вами удобства давайте объявим несколько переменных, в которые сохраним используемые нами цвета
|
|
```python
|
|
import pygame
|
|
from sys import exit
|
|
|
|
pygame.init()
|
|
|
|
WHITE = (255, 255, 255)
|
|
BLACK = (0, 0, 0)
|
|
PURPLE = (156, 39, 176)
|
|
INDIGO = (63, 81, 181)
|
|
BLUE = (33, 150, 243)
|
|
GREEN = (76, 175, 80)
|
|
YELLOW = (255, 235, 59)
|
|
ORANGE = (255, 152, 0)
|
|
GREY = (158, 158, 158)
|
|
|
|
display = pygame.display.set_mode( (800, 600) )
|
|
|
|
# Рисуем квадратик
|
|
pygame.draw.polygon( display, (255, 0, 0) , ( (0, 0), (100, 0), (100, 100), (0, 100) ) )
|
|
# Рисуем синию линию
|
|
pygame.draw.polygon( display, (0, 0, 255) , ( (100, 100), (200, 200), (100, 200) ) )
|
|
# Рисуем желтую окружность с радиусом 100 пикселей
|
|
pygame.draw.circle( display, (255, 255, 0) , (400,200), 100)
|
|
|
|
FPS = 60
|
|
clock = pg.time.Clock()
|
|
while True:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
```
|
|
Рисование прямоугольников
|
|
Для отрисовки прямоугольников можно использовать метод rect.
|
|
|
|
pygame.draw.rect(display, color, (x, y, width, height) )
|
|
|
|
color - цвет (теперь можно просто написать имя переменную)
|
|
|
|
(x, y, width, height) - кортеж из четырех значений. Первые два значения - это координаты верхнего левого угла прямоугольника, а два последних - это ширина и высота.
|
|
|
|
```python
|
|
import pygame
|
|
from sys import exit
|
|
|
|
pygame.init()
|
|
|
|
WHITE = (255, 255, 255)
|
|
BLACK = (0, 0, 0)
|
|
PURPLE = (156, 39, 176)
|
|
INDIGO = (63, 81, 181)
|
|
BLUE = (33, 150, 243)
|
|
GREEN = (76, 175, 80)
|
|
YELLOW = (255, 235, 59)
|
|
ORANGE = (255, 152, 0)
|
|
GREY = (158, 158, 158)
|
|
|
|
display = pygame.display.set_mode( (800, 600) )
|
|
|
|
# Рисуем квадратик
|
|
pygame.draw.polygon( display, (255, 0, 0) , ( (0, 0), (100, 0), (100, 100), (0, 100) ) )
|
|
# Рисуем синию линию
|
|
pygame.draw.polygon( display, (0, 0, 255) , ( (100, 100), (200, 200), (100, 200) ) )
|
|
# Рисуем желтую окружность с радиусом 100 пикселей
|
|
pygame.draw.circle( display, (255, 255, 0) , (400,200), 100)
|
|
# Рисуем фиолетовый прямоугольник 200х300
|
|
pygame.draw.rect( display, PURPLE , (600, 300, 200, 300))
|
|
|
|
FPS = 60
|
|
clock = pg.time.Clock()
|
|
while True:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
```
|
|
|
|
Если ваша творческая натура требует большего, то вот ссылка на документацию модулю draw
|
|
|
|
Там можно найти рисование линий, дуг, эллипсов.
|
|
|
|
Большой пример запусти его на компьтере:
|
|
|
|
```python
|
|
import pygame
|
|
from sys import exit
|
|
from random import randint
|
|
# Функция, возвращающая случайный оттенок зеленого цвета
|
|
def randomGreen():
|
|
return randint(0, 100), randint(100, 255), randint(0,100)
|
|
# Функция, возвращающая случайный оттенок красного цвета
|
|
def randomRed():
|
|
return randint(100, 255), randint(0, 100), randint(0,100)
|
|
|
|
pygame.init()
|
|
display = pygame.display.set_mode( (600, 600) )
|
|
display.fill((255,255,255))
|
|
x = 100 # начальная позиция по оси X
|
|
y = 100 # начальная позиция по оси Y
|
|
while y < 500: # Пока мы не достигли точки с координатой y == 500
|
|
# Вложенный цикл для рисования линии из квадратиков
|
|
while x < 500: # Пока мы не достигли точки с координатой x == 500
|
|
# Рисуем квадратик с координатами x, y
|
|
pygame.draw.rect(display, randomGreen(), (x, y, 25, 25))
|
|
x += 25 # Смещаем позицию квадратика по оси X
|
|
# По завершению вложенного цикла увеличиваем переменную y
|
|
# для перехода на новую строчку
|
|
y += 25
|
|
x = 100 # Возвращаем позицию по оси X в начало строчки
|
|
# Рисуем "мордочку" крипера
|
|
pygame.draw.rect(display, (0,0,0), (150, 200, 100, 100))
|
|
pygame.draw.rect(display, (0,0,0), (350, 200, 100, 100))
|
|
pygame.draw.rect(display, (0,0,0), (250, 300, 100, 100))
|
|
pygame.draw.rect(display, (0,0,0), (200, 350, 50, 100))
|
|
pygame.draw.rect(display, (0,0,0), (350, 350, 50, 100))
|
|
while True:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
pygame.display.update()
|
|
```
|
|
|
|
Задания:
|
|
|
|
1.Нарисуйте дерево из minecraft, используя полученные знания
|
|
|
|
2.Нарисуйте оранжевую, красную, синию и фиолетовую звезды
|
|
|
|
<TableOfContents>
|
|
- [Урок 1](#урок-1)
|
|
- [Урок 2](#урок-2)
|
|
</TableOfContents>
|
|
|
|
# Урок №2
|
|
|
|
Обработка нажатий клавиш клавиатуры
|
|
|
|
Создадим базовый шаблон для нашей игры
|
|
|
|
```python
|
|
import pygame
|
|
from sys import exit
|
|
|
|
pygame.init()
|
|
|
|
WHITE = (255, 255, 255)
|
|
BLACK = (0, 0, 0)
|
|
PURPLE = (156, 39, 176)
|
|
INDIGO = (63, 81, 181)
|
|
BLUE = (33, 150, 243)
|
|
GREEN = (76, 175, 80)
|
|
YELLOW = (255, 235, 59)
|
|
ORANGE = (255, 152, 0)
|
|
GREY = (158, 158, 158)
|
|
|
|
display = pygame.display.set_mode( (800, 600) )
|
|
|
|
FPS = 60
|
|
clock = pygame.time.Clock()
|
|
while True:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
```
|
|
|
|
pygame отслеживает все происходящие в игре события и позволяет нам их обрабатывать. При возникновении события создается экземпляр класса Event. Каждый экземпляр этого класса имеет определенный список свойств. Одно из этих свойств - это свойство type. Именно оно позволяет нам понять, какое событие произошло.
|
|
|
|
События клавиатуры имеют тип KEYDOWN.
|
|
|
|
Еще одно важное свойство - это свойство key. Для нас оно представляет интерес, когда мы обнаружили событие с типом KEYDOWN. С помощью свойства key мы можем узнать, какая клавиша была нажата.
|
|
|
|
```python
|
|
import pygame
|
|
from sys import exit
|
|
|
|
pygame.init()
|
|
|
|
WHITE = (255, 255, 255)
|
|
BLACK = (0, 0, 0)
|
|
PURPLE = (156, 39, 176)
|
|
INDIGO = (63, 81, 181)
|
|
BLUE = (33, 150, 243)
|
|
GREEN = (76, 175, 80)
|
|
YELLOW = (255, 235, 59)
|
|
ORANGE = (255, 152, 0)
|
|
GREY = (158, 158, 158)
|
|
|
|
display = pygame.display.set_mode( (800, 600) )
|
|
|
|
FPS = 60
|
|
clock = pygame.time.Clock()
|
|
while True:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
elif event.type == pygame.KEYDOWN:
|
|
if event.key == pygame.K_LEFT:
|
|
print('Левая стрелка')
|
|
elif event.key == pygame.K_RIGHT:
|
|
print('Правая стрелка')
|
|
elif event.key ==pygame.K_UP:
|
|
print('Стрелка вверх')
|
|
elif event.key ==pygame.K_DOWN:
|
|
print('Стрелка вниз')
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
```
|
|
|
|
После запуска скрипта при нажатии стрелок на клавиатуре в стандартный вывод будут выводится строки с информацией о нажатой клавише.
|
|
|
|
Напишем код, который будет рисовать кружок
|
|
```python
|
|
pygame.draw.circle(display, BLUE, (400, 300), 5)
|
|
# Добавьте этот скрипт после цикла while
|
|
```
|
|
Заставим кружок двигаться. Нужно объявить две переменные - x и y. Эти переменные будут координатами нашего кружка. При нажатии клавиши мы будем изменять эти переменные. Если нажата стрелка вправо, увеличим переменную x на 10. Если - стрелка влево, уменьшим переменную x на 10. Проделаем то же самое с переменной y.
|
|
```python
|
|
import pygame
|
|
from sys import exit
|
|
|
|
pygame.init()
|
|
|
|
WHITE = (255, 255, 255)
|
|
BLACK = (0, 0, 0)
|
|
PURPLE = (156, 39, 176)
|
|
INDIGO = (63, 81, 181)
|
|
BLUE = (33, 150, 243)
|
|
GREEN = (76, 175, 80)
|
|
YELLOW = (255, 235, 59)
|
|
ORANGE = (255, 152, 0)
|
|
GREY = (158, 158, 158)
|
|
|
|
display = pygame.display.set_mode( (800, 600) )
|
|
|
|
FPS = 60
|
|
clock = pygame.time.Clock()
|
|
|
|
x = 400 # начальная координата по оси X
|
|
y = 300 # начальная координата по оси Y
|
|
|
|
while True:
|
|
# Рисуем кружок в точке с координатами x,y
|
|
pygame.draw.circle(display, BLUE, (x, y), 5)
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
elif event.type == pygame.KEYDOWN:
|
|
if event.key == pygame.K_LEFT:
|
|
print('Левая стрелка')
|
|
x -= 10
|
|
elif event.key == pygame.K_RIGHT:
|
|
print('Правая стрелка')
|
|
x += 10
|
|
elif event.key == pygame.K_UP:
|
|
print('Стрелка вверх')
|
|
y -= 10
|
|
elif event.key == pygame.K_DOWN:
|
|
print('Стрелка вниз')
|
|
y += 10
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
```
|
|
|
|
Есть один нюанс. Шарик перемещается только один раз при зажатии одной из клавиш. Немного изменим наш код для того, чтобы он обратывал зажатые клавиш.
|
|
|
|
```python
|
|
# ... Код выше без изменений
|
|
while True:
|
|
pygame.draw.circle(display, BLUE, (x, y), 5)
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
# Найдите 10 отличий
|
|
# Удаляем elif с KEYDOWN
|
|
keys = pygame.key.get_pressed() # Словарь всех нажатых клавиш
|
|
# Обрабатываем каждую клавишу по отдельности
|
|
if keys[pygame.K_LEFT]:
|
|
x -= 10
|
|
if keys[pygame.K_RIGHT]:
|
|
x += 10
|
|
if keys[pygame.K_UP]:
|
|
y -= 10
|
|
if keys[pygame.K_DOWN]:
|
|
y += 10
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
```
|
|
|
|
События мыши
|
|
В pygame обрабатываются три типа событий мыши: нажатие кнопки (значение свойства type события соответствует MOUSEBUTTONDOWN), отпускание кнопки (MOUSEBUTTONUP), перемещение мыши (MOUSEMOTION). Какая именно кнопка была нажата, записывается в другое свойство события - button. Для левой кнопки это число 1, для средней - 2, для правой - 3, для прокручивания вперед - 4, для прокручивания назад - 5.
|
|
|
|
Другим атрибутом мышиных типов событий является свойство pos, в которое записываются координаты нажатия (кортеж из двух чисел).
|
|
|
|
При нажатии левой кнопки мыши будем рисовать оранжевый кружок
|
|
```python
|
|
# Код выше без изменений...
|
|
while True:
|
|
display.fill(BLACK)
|
|
pygame.draw.circle(display, BLUE, (x, y), 5)
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
elif event.type == pygame.MOUSEBUTTONDOWN:
|
|
if event.button == 1:
|
|
pygame.draw.circle(display, ORANGE, (event.pos[0], event.pos[1]), 30)
|
|
keys = pygame.key.get_pressed()
|
|
if keys[pygame.K_LEFT]:
|
|
print('Левая стрелка')
|
|
x -= 10
|
|
if keys[pygame.K_RIGHT]:
|
|
print('Правая стрелка')
|
|
x += 10
|
|
if keys[pygame.K_UP]:
|
|
print('Стрелка вверх')
|
|
y -= 10
|
|
if keys[pygame.K_DOWN]:
|
|
print('Стрелка вниз')
|
|
y += 10
|
|
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
```
|
|
Добавим появление белых кружков по нажатию правой кнопки мыши.
|
|
```python
|
|
# Код выше без изменений...
|
|
while True:
|
|
display.fill(BLACK)
|
|
pygame.draw.circle(display, BLUE, (x, y), 5)
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
elif event.type == pygame.MOUSEBUTTONDOWN:
|
|
if event.button == 1:
|
|
pygame.draw.circle(display, ORANGE, (event.pos[0], event.pos[1]), 30)
|
|
elif event.button == 3:
|
|
pygame.draw.circle(display, WHITE, (event.pos[0], event.pos[1]), 30)
|
|
keys = pygame.key.get_pressed()
|
|
if keys[pygame.K_LEFT]:
|
|
print('Левая стрелка')
|
|
x -= 10
|
|
if keys[pygame.K_RIGHT]:
|
|
print('Правая стрелка')
|
|
x += 10
|
|
if keys[pygame.K_UP]:
|
|
print('Стрелка вверх')
|
|
y -= 10
|
|
if keys[pygame.K_DOWN]:
|
|
print('Стрелка вниз')
|
|
y += 10
|
|
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
```
|
|
Добавим очищение поверхности при скролле колесика мыши
|
|
|
|
```python
|
|
# Код выше без изменений...
|
|
while True:
|
|
display.fill(BLACK)
|
|
pygame.draw.circle(display, BLUE, (x, y), 5)
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
exit()
|
|
elif event.type == pygame.MOUSEBUTTONDOWN:
|
|
if event.button == 1:
|
|
pygame.draw.circle(display, ORANGE, (event.pos[0], event.pos[1]), 30)
|
|
elif event.button == 3:
|
|
pygame.draw.circle(display, WHITE, (event.pos[0], event.pos[1]), 30)
|
|
elif event.button == 5:
|
|
display.fill(BLACK)
|
|
keys = pygame.key.get_pressed()
|
|
if keys[pygame.K_LEFT]:
|
|
print('Левая стрелка')
|
|
x -= 10
|
|
if keys[pygame.K_RIGHT]:
|
|
print('Правая стрелка')
|
|
x += 10
|
|
if keys[pygame.K_UP]:
|
|
print('Стрелка вверх')
|
|
y -= 10
|
|
if keys[pygame.K_DOWN]:
|
|
print('Стрелка вниз')
|
|
y += 10
|
|
|
|
|
|
pygame.display.update()
|
|
|
|
clock.tick(FPS)
|
|
```
|
|
|
|
Задание:
|
|
Создайте еще один перемещающийся объект, назначьте клавиши WASD для его перемещения. Ключи клавиш: W == K_w, A == K_a, D == K_d, S == K_s. Обратите внимание, что вам понадобятся новые переменные для координат, например, x1 и y1.
|
|
|
|
<TableOfContents>
|
|
- [Урок 1](#урок-1)
|
|
- [Урок 2](#урок-2)
|
|
</TableOfContents> |