Přejít na hlavní obsah

Jak nakreslit oblouk v krajtě arcade

Krajta arcade - je to praktická knihovna programování v jazyce Python, která Vám umožňuje vytvářet hry a grafické aplikace. Poskytuje různé nástroje a funkce pro práci s grafikou, zvukem a vstupem z klávesnice, takže proces vývoje je příjemný a snadný.

Jedním z nejužitečnějších nástrojů, které nabízí krajta arcade, je možnost kreslení oblouků. Oblouky jsou křivky čáry, které lze použít k vytvoření různých tvarů a prvků herního světa. S jejich pomocí lze například vytvořit krásné scenérie, animace nebo pohybové efekty.

Pro kreslení oblouků v krajta arcade existuje speciální funkce – create_arc(). Umožňuje určit souřadnice středu oblouku, jeho poloměr, počáteční a koncový úhel, barvu a tloušťku čáry. To poskytuje větší flexibilitu při práci s oblouky a umožňuje implementaci různých vizuálů ve hře nebo aplikaci.

Instalace knihovny Arcade

Chcete-li začít, musíte nainstalovat knihovnu Arcade ve svém prostředí Python. K tomu lze použít nástroj pro instalaci PIP balíčků. Otevřete příkazový řádek nebo terminál a spusťte následující příkaz:

pip install arcade

Po provedení tohoto příkazu pip automaticky stáhne a nainstaluje knihovnu Arcade do počítače.

Pokud máte nainstalovanou nějakou verzi Pythonu, kterou již nepoužíváte, můžete vytvořit virtuální prostředí pomocí nástroje venv, abyste se vyhnuli konfliktům verzí balíčků. Chcete-li to provést, proveďte následující příkazy:

python -m venv myenv

Po aktivaci virtuálního prostředí nainstalujte knihovnu Arcade pomocí příkazu pip, jak je popsáno výše.

Gratuluji! Nyní jste připraveni začít používat knihovnu Arcade k vytváření zábavných her a grafických aplikací v jazyce Python.

Vytvoření okna a plátna

Než nakreslíme oblouk v arkádové knihovně, musíme vytvořit okno a plátno, na které budeme malovat.

K vytvoření okna a plátna budeme potřebovat několik řádků kódu:

window = arcade.Window (WIDTH, HEIGHT, my game)

V prvním řádku importujeme knihovnu arkád, abychom využili její funkčnost.

Pak vytvoříme dvě konstanty, WIDTH a HEIGHT, které určují rozměry okna a plátna, respektive. V tomto příkladu nastavíme hodnoty 800 pixelů pro šířku a 600 pixelů pro výšku.

Dále vytvoříme objekt okna pomocí funkce arcade.Window, předává jí hodnoty WIDTH a HEIGHT a řádek s názvem okna "moje hra".

V posledním řádku kódu voláme funkci arcade.run(), která spustí herní cyklus a zobrazí okno na obrazovce.

Nyní máme okno a plátno, na které můžeme nakreslit oblouk.

Kreslení oblouku na plátno

Pro kreslení oblouku na plátno v knihovně arcade krajty je nutné použít metodu arcade.draw_arc(). Tato metoda umožňuje nakreslit oblouk s daným poloměrem, úhlem začátku, úhlem konce a barvou.

ParametrTypPopis
center_xfloatSouřadnice X středu oblouku
center_yfloatSouřadnice y centra oblouku
radiusfloatPoloměr oblouku
start_anglefloatÚhel začátku oblouku
end_anglefloatÚhel konce oblouku
color(int, int, int)Barva oblouku nastavená ve formátu RGB
border_widthfloatTloušťka okraje oblouku (výchozí 1)

Níže je uveden příklad kódu, který kreslí oblouk na plátno:

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

arcade.open_window (WIDTH, HEIGHT, "kreslení oblouku")

arcade.schedule(on_draw, 1 / 60)

V tomto příkladu kódu se vytvoří okno o rozměrech 600x400 pixelů, které nakreslí oblouk s poloměrem 100 pixelů, středem ve středu okna, úhlem začátku 0 stupňů, úhlem konce 180 stupňů a červenou barvou. Tloušťka hranice oblouku je 5 pixelů.

Nastavení parametrů oblouku

Pro kreslení oblouku v knihovně arcade existuje několik možností, které lze nakonfigurovat:

center_x, center_y - souřadnice centra oblouku

radius - poloměr oblouku

start_angle, end_angle - počáteční a koncové úhly (ve stupních) pro vykreslení oblouku

color - barva oblouku

border_width - šířka rámu oblouku (výchozí je 1)

tilt_angle - sklon oblouku

Chcete-li nakreslit oblouk, musíte vytvořit objekt typu arcade.Arc. Například nakreslit červený oblouk se středem v bodě (100, 100) a poloměrem 50 pixelů pomocí úhlů -90 až 90 stupňů:

// Importovat knihovnu arcade

window = arcade.open_window (WIDTH, HEIGHT, "můj arkádový program")

// Nastavení oblouku

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

// Spusťte cyklus aktualizace obrazovky

Tímto způsobem můžete upravit nastavení oblouku a nakreslit je ve svém arkádovém programu na krajtu pomocí knihovny arcade.

Animace pohybu oblouku

K vytvoření animace pohybu oblouku v knihovně Arcade je nutné použít třídy Sprite a SpriteList.

Sprite představuje objekt, který lze nakreslit na obrazovku a procházet ji, zatímco SpriteList je seznam skřítků, který řídí jejich kreslení a pohyb. V našem případě bude sprite představovat oblouk a seznam skřítků bude obsahovat pouze tento oblouk.

Nejprve je třeba vytvořit třídu pro náš oblouk tím, že ji zdědíte po třídě 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

V návrhu instalujeme strukturu oblouku pomocí funkce make_soft_ellipse_texture z modulu arcade, nastavíme počáteční úhel otáčení, souřadnice středu oblouku, poloměr, barvu a tloušťku čáry.

Dále vytvoříme hlavní třídu aplikace pomocí třídy 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

V návrhu třídy vytvoříme seznam skřítků arc_sprite_list a přidáme do něj vytvořený oblouk arc_sprite. Poté v metodě on_draw nakreslíme všechny skřítky ze seznamu. V metodě on_update změníme úhel otáčení oblouku, abychom vytvořili efekt pohybové animace.

Pro spuštění animace a zobrazení okna aplikace vytvoříme objekt MyGame a vyvoláme metodu run:

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

Nyní, při spuštění programu, uvidíme okno s animací pohybu oblouku.

Přidání interaktivity

Pro přidání interaktivních prvků do aplikace založené na knihovně Arcade lze použít různé prostředky. Jedním z takových prvků je schopnost sledovat a zpracovávat aktivity uživatele pomocí událostí klávesnice a myši.

Chcete-li například implementovat změnu polohy oblouku pomocí klávesnice, můžete použít následující kód:

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)

V tomto příkladu se stisknutím kláves doleva a doprava změní hodnota sebe.arc_start, což ve výsledku mění polohu oblouku.

Navíc je možné přidat interaktivitu pomocí myši. Například změnit polohu oblouku klepnutím na konkrétní oblast obrazovky:

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)

V tomto příkladu kliknutím na oblast obrazovky se souřadnicemi (300, 300) - (400, 400) hodnota sebe sama.arc_start se zvyšuje, což vede ke změně polohy oblouku.

Přidání interaktivity do aplikace založené na knihovně Arcade tak umožňuje, aby byla pro uživatele zábavnější a zajímavější.