Перейти до основного контенту

Як намалювати дугу в пітоні arcade

12 хв читання
889 переглядів

Пітон arcade - це зручна бібліотека Програмування на мові Python, яка дозволяє створювати ігри та графічні додатки. Вона надає різні інструменти і функції для роботи з графікою, звуком і введенням з клавіатури, роблячи процес розробки приємним і простим.

Одним з найбільш корисних інструментів, які надає пітон arcade, є можливість малювання дуг. Дуги - це криві лінії, які можуть бути використані для створення різних фігур і елементів ігрового світу. Наприклад, з їх допомогою можна створити красиві пейзажі, анімації або ефекти руху.

Для малювання дуг в пітоні arcade існує спеціальна функція – create_arc(). Вона дозволяє вказати координати центру дуги, її радіус, початковий і кінцевий кути, колір і товщину лінії. Це дає велику гнучкість при роботі з дугами і дозволяє реалізувати різні візуальні ефекти в грі або додатку.

Встановлення бібліотеки Arcade

Для початку, необхідно встановити бібліотеку Arcade в вашому оточенні Python. Для цього можна скористатися інструментом установки пакетів PIP. Відкрийте командний рядок або термінал і виконайте таку команду:

pip install arcade

Після виконання цієї команди, pip автоматично завантажить і встановить бібліотеку Arcade на вашому комп'ютері.

Якщо у вас встановлена якась версія Python, яку ви вже не використовуєте, ви можете створити віртуальне середовище за допомогою інструменту venv, щоб уникнути конфліктів версій пакетів. Для цього виконайте наступні команди:

python -m venv myenv

Після активації віртуального оточення, встановіть бібліотеку Arcade за допомогою команди PIP, як описано вище.

Поздоровляю! Тепер ви готові почати використовувати бібліотеку Arcade для створення захоплюючих ігор і графічних додатків на мові Python.

Створення вікна та полотна

Перед тим, як намалювати дугу в бібліотеці аркада, ми повинні створити вікно і полотно, на якому будемо малювати.

Для створення вікна і полотна нам буде потрібно кілька рядків коду:

window = arcade.Window (WIDTH, HEIGHT, "Моя гра")

У першому рядку ми імпортуємо бібліотеку аркада, щоб використовувати її функціонал.

Потім ми створюємо дві константи, WIDTH і HEIGHT, які визначають розміри вікна і полотна, відповідно. У цьому прикладі ми встановлюємо значення 800 пікселів для ширини та 600 пікселів для висоти.

Далі ми створюємо об'єкт вікна за допомогою функції arcade.Window, передаючи їй значення WIDTH і HEIGHT, а також рядок з назвою вікна "Моя гра".

В останньому рядку коду ми викликаємо функцію arcade.run(), яка запускає ігровий цикл і відображає вікно на екрані.

Тепер у нас є вікно і полотно, на якому ми зможемо малювати дугу.

Малювання дуги на полотні

Для малювання дуги на полотні в бібліотеці Arcade пітона необхідно використовувати метод arcade.draw_arc(). Цей метод дозволяє намалювати дугу з заданим радіусом, кутом початку, кутом закінчення і кольором.

ПараметрТипОпис
center_xfloatКоордината X центру дуги
center_yfloatКоордината Y центру дуги
radiusfloatРадіус дуги
start_anglefloatКут початку дуги
end_anglefloatКут закінчення дуги
color(int, int, int)Колір дуги, заданий в RGB форматі
border_widthfloatТовщина межі дуги (за замовчуванням 1)

Нижче наведено приклад коду, який малює дугу на полотні:

arcade.draw_arc(WIDTH / 2, HEIGHT / 2, 100, 0, 180, arcade.color.RED, 5)

arcade.open_window (WIDTH, HEIGHT, "малювання дуги")

arcade.schedule(on_draw, 1 / 60)

В даному прикладі коду створюється вікно з розмірами 600x400 пікселів, на якому малюється дуга з радіусом 100 пікселів, центром в центрі вікна, кутом початку 0 градусів, кутом закінчення 180 градусів і червоним кольором. Товщина межі дуги дорівнює 5 пікселям.

Налаштування параметрів дуги

Для малювання дуги в бібліотеці arcade є кілька параметрів, які можна налаштувати:

center_x, center_y - координати центру дуги

radius - радіус дуги

start_angle, end_angle - початковий і кінцевий кути (в градусах) для відтворення дуги

color - колір дуги

border_width - ширина рамки дуги (за замовчуванням дорівнює 1)

tilt_angle - нахил дуги

Щоб намалювати дугу, необхідно створити об'єкт типу arcade.Arc. Наприклад, намалювати червону дугу з центром у точці (100, 100) та радіусом 50 пікселів, використовуючи кути від -90 до 90 градусів:

// Імпортуємо бібліотеку arcade

window = arcade.open_window (WIDTH, HEIGHT ," Моя аркадна програма")

// Налаштовуємо параметри дуги

arcade.draw_arc_outline(center_x, center_y, radius, start_angle, end_angle, color, border_width, tilt_angle)

// Запускаємо цикл оновлення екрану

Таким чином, ви можете налаштувати параметри дуги та намалювати їх у своїй аркадній програмі Python за допомогою бібліотеки arcade.

Анімація руху дуги

Для створення анімації руху дуги в бібліотеці Arcade необхідно використовувати класи Sprite і SpriteList.

Sprite представляє об'єкт, який можна намалювати на екрані та переміщатися по ньому, а SpriteList - список спрайтів, який керує їх відтворенням та переміщенням. У нашому випадку, спрайт буде представляти дугу, а список спрайтів буде містити тільки цю дугу.

Спочатку потрібно створити клас для нашої дуги, успадкувавши його від класу arcade.Sprite:

class ArcSprite(arcade.Sprite):def __init__(self, start_angle, end_angle, cx, cy, r, color, width):super().__init__()self.texture = arcade.make_soft_ellipse_texture(int(2*r), int(2*r), color, color)self.center_x = cxself.center_y = cyself.angle = start_angleself.width = widthself.start_angle = start_angleself.end_angle = end_angleself.r = rself.color = color

У конструкторі ми встановлюємо текстуру дуги за допомогою функції make_soft_ellipse_texture з модуля arcade, задаємо початковий кут повороту, координати центру дуги, радіус, колір і товщину лінії.

Далі створимо основний клас програми за допомогою класу arcade.Window:

class MyGame(arcade.Window):def __init__(self, width, height, title):super().__init__(width, height, title)arcade.set_background_color(arcade.color.WHITE)self.arc_sprite_list = arcade.SpriteList()# Создание дуги и добавление её в список спрайтовstart_angle = 0end_angle = 180cx = width // 2cy = height // 2r = 100color = arcade.color.BLUEwidth = 5self.arc_sprite = ArcSprite(start_angle, end_angle, cx, cy, r, color, width)self.arc_sprite_list.append(self.arc_sprite)def on_draw(self):arcade.start_render()# Отрисовка спрайтовself.arc_sprite_list.draw()def on_update(self, delta_time):# Перемещение дугиself.arc_sprite.angle += 1

У конструкторі класу створюємо список спрайтів arc_sprite_list і додаємо туди створену дугу arc_sprite. Потім в методі on_draw отрісовиваем все спрайт зі списку. У методі on_update змінюємо кут повороту дуги для створення ефекту анімації руху.

Для запуску анімації і відображення вікна програми створимо об'єкт MyGame і викличемо метод run:

if __name__ == "__main__":window = MyGame(800, 600, "Animation of arc movement")arcade.run()

Тепер, при запуску програми, ми побачимо вікно з анімацією руху дуги.

Додавання інтерактивності

Для додавання інтерактивних елементів в додаток на основі бібліотеки Arcade, можна скористатися різними засобами. Одним з таких елементів є можливість відстежувати та обробляти дії користувача за допомогою подій клавіатури та миші.

Наприклад, щоб реалізувати зміну положення дуги за допомогою клавіатури, можна скористатися наступним кодом:

import arcadeclass MyGame(arcade.Window):def __init__(self, width, height):super().__init__(width, height)self.arc_start = 0def on_key_press(self, key, modifiers):if key == arcade.key.LEFT:self.arc_start -= 1elif key == arcade.key.RIGHT:self.arc_start += 1def on_draw(self):arcade.start_render()arcade.draw_arc_filled(200, 200, 100, 100, arcade.color.BLUE, self.arc_start, self.arc_start + 180)

В даному прикладі при натисканні на клавіші вліво і вправо змінюється значення self.arc_start, що в результаті змінює положення дуги.

Крім того, можна додати інтерактивність за допомогою миші. Наприклад, змінювати положення дуги при натисканні на певну область екрану:

import arcadeclass MyGame(arcade.Window):def __init__(self, width, height):super().__init__(width, height)self.arc_start = 0def on_mouse_press(self, x, y, button, modifiers):if x > 300 and x < 400 and y >300 and y < 400:self.arc_start += 1def on_draw(self):arcade.start_render()arcade.draw_arc_filled(200, 200, 100, 100, arcade.color.BLUE, self.arc_start, self.arc_start + 180)

В даному прикладі при натисканні на область екрану з координатами (300, 300) - (400, 400) значення self.arc_start збільшується, що призводить до зміни положення дуги.

Таким чином, додавання інтерактивності в додаток на основі бібліотеки Arcade дозволяє зробити його більш захоплюючим і цікавим для користувачів.