Додамо до проекту фігуру (корабель прибульців), котра буде рухатись за вказівником миші. 

Всі події (Interrupt Events), котрі відбуваються на ігровому полі, фіксуються (Event Listener) середовищем pygame. Настання події може зумовити виконання певного коду, обробника цієї події Event Handler.


Впродовж гри відбувається багато подій: згенеровані рухом мишки, клацанням кнопок мишки, натисканням клавіш на клавіатурі. Кожна із цих подій має певні параметри, які можна використати для обробки цієї події: координати, яку саме кнопку чи клавішу натиснуто тощо.


Координати вказівника миші ми отримуємо у вигляді так званого масиву. До окремих елементів цього масиву (координата X та координата Y) можна отримати доступ за їхнім індексом. Ці координати можна використати для розміщення, наприклад, корабля прибульців:

def on_mouse_move(pos):

    ship.left = pos[0]

    ship.top = 450

Не забудьте, що ship попередньо необхідно створити у програмі як окремий ігровий об'єкт (Actor).


Доповнення 1

Додамо функцію пострілу: якщо натиснуто кнопку миші, то з корабля прибульців робиться "постріл" кулькою, що летить вгору.

Для програмування використаємо подію 

def on_mouse_down(pos):

У ній потрібно зобразити кульку в координатах корабля прибульців.

Далі слід доповнити  функцію update, адже кулька має постійно рухатись вгору.

Для коректної роботи програми задайте початкове положення кульки за межами екрану.


Доповнення 2

Додайте до проекту перевірку зіткнення двох об'єктів - кульки з корабля прибульців та початкового персонажа гри. При зіткненні вони повинні зникати.

Перевірка зіткнення виконується командою alien.colliderect(ball) якщо її результатом є True, то зіткнення відбулося.


Доповнення 3

Додайте підрахунок очок, які потрібно виводити командою:

screen.draw.text(str(points), (10, 10), color=(200, 200, 200))

у функції draw()


Презентація-конспект

Власна копія презентації з завданням https://docs.google.com/presentation/d/1XqqrfTknwMLGQPL0uLJfRZRn8GwteKLXV680BP89aY8/copy

Остання зміна: Неділя 18 липня 2021 06:18 AM