A „Turtle” aPythonelőre telepített könyvtára, ami lehetővé teszi a felhasználók számára képek és rajzok létrehozását úgy, hogy egy virtuális rajzfelülettel látja el a Python környezetet. A rajzhoz használt képernyő-tollat teknősnek hívják, innen a könyvtár neve. Ennek az az oka, hogy a Ateknős-könyvtár interaktív módon segít a kezdő programozóknak tesztelni a különböző alapvető programozási alapszerkezeteket mint pl. a ciklus, elágazás, eljárás.
A teknősbéka grafika kapcsán meg kell említenünk Seymour Papert nevét, aki matematikus a Massachusetts Institute of Technology-n, számítógéptudós, pszichológus és kiváló pedagógus volt. A mesterséges intelligencia kutatása úttörőinek és a Logo programozási nyelv megalkotóinak egyike.
A könyvtár elemeinek használata nagyon egyszerű, a parancsok felépítése egységes, mindegyik a turtle névvel kezdődik, majd ponttal elválasztva a konkrét parancs és a paraméterek.
turtle.right(90) turtle.forward(100)
A leggyakrabban használt parancsokat az alábbi táblázatban láthatod:
A turtle graphic programok elején egységesen a következő lépéseket kell elvégezni:
– könyvtár importálása:
import turtle
– rajzolóablak létrehozása
ablak = turtle.Screen()
– rajzoló teknős létrehozása:
fred = turtle.Turtle()
Nem kötelező, hasznos további parancsok:
– háttérszín beállítása:
ablak.bgcolor(„white”) - a parancs paramétere lehet színnév, vagy kód
– toll szín beállítás:
fred.pencolor(„black”)
– rajzolóablak méretezése:
ablak.setup (400,400)
– ablak címke beállítása:
ablak.title(„címke”)
Az alapokat összerakva, a programjaink első pár sora hasonlóan fog kinézni az alábbi példához:
import turtle ablak = turtle.Screen() ablak.setup(400,400) ablak.bgcolor('white') ablak.title("program_1") fred = turtle.Turtle()
Teknősünk neve ’fred’ az ablaké pedig ’ablak’. Ezek az elnevezések szabadon választhatók, a többi elnevezés nem módosítható!
Első példaprogramunk egy 100 pixel oldalhosszúságú négyzetet rajzol:
import turtle ablak = turtle.Screen() ablak.setup(400,400) ablak.bgcolor('white') ablak.title("program_1") fred = turtle.Turtle() fred.fd(100) fred.left(90) fred.fd(100) fred.left(90) fred.fd(100) fred.left(90) fred.fd(100) fred.left(90) ablak.exitonclick()
Látható, hogy a rajzoló rész négyszer ismétli ugyan azokat a lépéseket. Ezt érdemes egy ciklussal megoldani!
A ciklus „fej” része bevezet egy ’i’ ciklusváltozót, és a range beállítja a négyszeri ismétlést. A további két sor az ún. ciklusmag, ami négyszer ismétlődik:
import turtle ablak = turtle.Screen() ablak.setup(400,400) ablak.bgcolor('white') ablak.title("program_1") fred = turtle.Turtle() for i in range(4): fred.fd(100) fred.left(90) ablak.exitonclick()
Természetesen nem csak négyzetet tudunk a ciklussal rajzolni, hanem például ötágú csillagot is:
import turtle ablak = turtle.Screen() ablak.setup(400,400) ablak.bgcolor('white') ablak.title("program_3") fred = turtle.Turtle() for i in range(5): fred.fd(100) fred.right(144) ablak.exitonclick()
A színek változtatásával érdekes geometriai ábrákat tudunk létrehozni! Ehhez a programhoz érdemes a háttérszínt feketére állítani (ablak.bgcolor('black')
), illetve a rajzolás színét folyamatosan módosítani. Ehhez használhatjuk a python ’list’ függvényét, aminek segítségével a pencolor utasítás a listából veheti a színek megnevezését: colors = ['red', 'purple', 'blue', 'green', 'orange', 'yellow']
Annak érdekében, hogy a színeket sorban vegye a program a listából, alkalmazzuk az „i%6” műveletet, ami az ún. modulo függvény. Ez az i aktuális értékét osztja 6-tal, és a maradékot adja eredményként. Ez rendre 0,1,2,3,4,5.
import turtle ablak = turtle.Screen() ablak.setup(400,400) ablak.bgcolor('black') ablak.title("program_4") fred = turtle.Turtle() colors = ['red', 'purple', 'blue', 'green', 'orange', 'yellow'] t = turtle.Pen() for i in range(180): t.pencolor(colors[i%6]) t.width(i/100 + 1) t.forward(i) t.left(59) ablak.exitonclick()
A lecke utolsó mintaprogramja koordináta rendszert rajzol. A program négy ciklusból áll, ezek egymás után rajzolják meg a négy síknegyed tengelyeit, és készítik el azok beosztását. Új parancs a programban a fred.write („ „) függvény, ami az adott pozícióba írja az idézőjelek közötti stringet.
import turtle ablak = turtle.Screen() ablak.setup(600,600) ablak.bgcolor('white') ablak.title("Coordinates") fred = turtle.Turtle() fred.pencolor("black") fred.speed(0) #tengelyek - beosztás for x in range (12): fred.lt(90) fred.fd(20) fred.rt(90) fred.fd(5) fred.bk(5) fred.penup() fred.goto(0,0) for x in range (12): fred.pendown() fred.fd(20) fred.lt(90) fred.fd(5) fred.bk(5) fred.rt(90) fred.penup() fred.goto(0,0) for x in range (12): fred.pendown() fred.bk(20) fred.lt(90) fred.fd(5) fred.bk(5) fred.rt(90) fred.penup() fred.goto(0,0) for x in range (12): fred.pendown() fred.rt(90) fred.fd(20) fred.lt(90) fred.fd(5) fred.bk(5) fred.penup() fred.goto(250,0) fred.write("x") fred.goto(0,250) fred.write("y") fred.goto(0,0) ablak.exitonclick()
A forráskódok letölthetőek: