Tato webová stránka používá cookies ke zlepšení vašeho zážitku. Pokračováním v prohlížení souhlasíte
s jejich používáním. Více informací
AI Tutoriál
Vytvoř mi animované autíčko v pythonu
Úvod
Motivace a cíle tutoriálu
Tento tutoriál vám pomůže pochopit základní principy animace v jazyce Python a ukáže vám, jak jednoduchým způsobem vytvořit animované autíčko.
Budete se učit pracovat s knihovnou
turtle
, která poskytuje vizuální uživatelské rozhraní pro kreslení a animaci.
Potřebné znalosti a software
Pro tento tutoriál je potřeba mít základní znalosti programování v jazyce Python. Pokud s Pythonem teprve začínáte, doporučujeme vám se seznámit s jeho základy.
Kód tutoriálu můžete spustit v libovolném editoru pro Python.
Doporučujeme nainstalovat Python s podporou knihovny
turtle
.
Knihovna
turtle
je součástí standardních instalací Pythonu.
Pokud knihovna
turtle
není v nainstalované verzi Pythonu dostupná, je potřeba ji doinstalovat pomocí nástroje pip.
U některých editorů je potřeba nakonfigurovat, aby správně pracoval s Pythonem.
Základní kroky animace
Vytvoření plátna a nastavení grafiky
Importování knihovny 'turtle'
Prvním krokem je importovat knihovnu
turtle
. Tato knihovna poskytuje funkce pro kreslení a animaci v Pythonu.
Importování se provádí pomocí příkazu `import turtle`:
import turtle
Vytvoření plátna pro kreslení
Poté je potřeba vytvořit plátno, na kterém bude autíčko kresleno. To se děje funkcí `turtle.Screen()`:
screen = turtle.Screen()
Zde se plátno pojmenuje `screen`, ale můžete použít libovolné jméno.
Nastavení rychlosti kreslení
Rychlost kreslení autíčka se nastavuje funkcí `speed()`:
turtle.speed(0)
Hodnota `0` nastaví maximální rychlost kreslení. Můžete si vybrat i jinou rychlost (např. `1` pro pomalejší kreslení).
Pokud není rychlost kreslení nastavena, autíčko se bude kreslit pomalu, což může zpomalovat animaci.
Nastavení barvy a tloušťky čáry
Barvu čáry nastavíme funkcí `color()`:
turtle.color("red")
Můžeme použít anglické názvy barev (např. "red", "blue", "green") nebo hexadecimální kód barvy (např. "#ff0000" pro červenou).
Tloušťku čáry nastavíme funkcí `width()`:
turtle.width(3)
Argument funkce `width()` udává tloušťku čáry v pixelech.
Nakreslení autíčka
Použití funkcí 'forward()', 'backward()', 'right()', 'left()'
Pro kreslení autíčka využijeme funkce `forward()`, `backward()`, `right()` a `left()`. Tyto funkce řídí pohyb kreslícího pera.
Kreslení obdélníku pro karoserii
Karoserii autíčka nakreslíme jako obdélník. Funkce `forward()` posune pero vpřed, `right()` otočí pero doprava.
Kola nakreslíme jako kruhy. Funkce `circle()` nakreslí kruh s daným poloměrem.
turtle.penup() # Zvedne pero, aby se kreslil kruh na jiném místě
turtle.goto(-50, -30) # Posune pero na požadované místo
turtle.pendown() # Položí pero
turtle.circle(10)
turtle.penup()
turtle.goto(50, -30)
turtle.pendown()
turtle.circle(10)
Pokud není pero zvednuto před kreslením kruhu, bude kruh kreslen z předchozího umístění pera a může se tak překrývat s karoserií.
Pohyb autíčka
Použití smyčky 'while' pro neustálý pohyb
Pro realizaci neustálého pohybu použijeme smyčku `while`. Smyčka se bude opakovat, dokud není splněna podmínka.
while True:
turtle.forward(10)
turtle.sleep(0.1)
V tomto kódu se autíčko posune o 10 pixelů vpřed a pak se zastaví na 0.1 sekundy. Potom se smyčka opakuje a autíčko se posune znovu.
Použití 'forward()' pro pohyb vpřed
Funkce `forward()` posouvá autíčko vpřed o zadaný počet pixelů.
turtle.forward(10)
Využití funkce 'sleep()' pro plynulý pohyb
Funkce `sleep()` zpozdrží program na zadaný čas. To umožňuje plynulost pohybu.
turtle.sleep(0.1)
Zmýna směru pohybu
Použití funkce 'right()' pro otáčení vpravo
Funkce `right()` otáčí autíčko doprava o zadaný počet stupňů.
turtle.right(90)
V tomto případě se autíčko otočí o 90 stupňů doprava.
Použití funkce 'left()' pro otáčení vlevo
Funkce `left()` otáčí autíčko doleva o zadaný počet stupňů.
turtle.left(90)
V tomto případě se autíčko otočí o 90 stupňů doleva.
Náhodné otáčení autíčka
Pro náhodné otáčení autíčka použijeme modul `random`.
import random
while True:
turtle.forward(10)
turtle.sleep(0.1)
otaceni = random.randint(0, 360)
turtle.right(otaceni)
Funkce `random.randint(0, 360)` vygeneruje náhodné číslo mezi 0 a 360 a tím se autíčko otočí náhodným směrem.
Rozšíření animace
Přidání dalších objektů do animace
Můžeme k autíčku přidat další objekty, jako jsou stromy, domy, nebo jiné auta. Pro kreslení nových objektů použijeme stejné funkce `turtle` jako pro kreslení autíčka.
V tomto případě je k autíčku přidaný strom. Strom je nakreslený podobně jako autíčko.
Pokud se objekty překrývají, může být ztížené jejich rozlišení. V takovém případě je potřeba upravit jejich pozici nebo velikost.
Zmýna barvy karoserie a kol
Kromě barvy čáry můžeme také změnit barvu výplně objektů. Pro změnu barvy karoserie a kol použijeme funkce `fillcolor()` a `begin_fill()` a `end_fill()`.
V tomto případě funkce `onkey()` umožňuje uživateli ovládat auto pomocí šipek na klávesnici. Funkce `doprava()`, `vlevo()` a `vpřed()` řídí pohyb autíčka. Funkce `listen()` zabezpečuje, že klávesy budou zaznamenány.
Uložení animace jako obrázku nebo videa
Animaci můžeme uložit buď jako obrázek, nebo jako video. Pro uložení animace jako obrázku použijeme funkci `getcanvas()` a `saveaspng()`. Pro uložení animace jako videa použijeme modul `moviepy`.
import turtle
import random
from moviepy.editor import VideoClip
from moviepy.video.io.bindings import mplfig_to_npimage
# Funkce pro uložení animace jako obrázku
def ulozit_obrazek(jmeno_souboru):
canvas = turtle.getcanvas()
canvas.postscript(file=jmeno_souboru + ".eps")
turtle.getcanvas().update()
# Funkce pro uložení animace jako videa
def ulozit_video(jmeno_souboru, delka):
def make_frame(t):
screen = turtle.Screen()
turtle.update()
return mplfig_to_npimage(screen.getcanvas())
clip = VideoClip(make_frame, duration=delka)
clip.write_videofile(jmeno_souboru + ".mp4", fps=24)
screen = turtle.Screen()
turtle.speed(0)
turtle.color("red")
# Kreslení autíčka
turtle.begin_fill()
turtle.forward(100)
turtle.right(90)
turtle.forward(50)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(50)
turtle.end_fill()
turtle.penup()
turtle.goto(-50, -30)
turtle.pendown()
turtle.color("black")
turtle.begin_fill()
turtle.
Závěr
Shrnutí učení
V tomto tutoriálu jsme se seznámili s animací v Pythonu pomocí knihovny
turtle
. Naučili jsme se kreslit základní objekty, jako je obdélník a kruh, a pak je animovat.
Dále jsme se naučili ovládat směr pohybu a přidávat interakci s uživatelem. Nakonec jsme si ukázali, jak uložit animaci jako obrázek nebo video.
Další možnosti a zdroje pro rozvoj
Knihovna
turtle
nabízí mnoho dalších možností pro tvorbu animací. Můžete si experimentovat s různými tvary a barvami, přidávat efekty, jako je stín a průhlednost, a vytvářet komplexní animace s více objekty.
Další zdroje pro rozvíjení vašich znalostí o animaci v Pythonu: