2021. május 4., kedd

A Turtle használata Pythonban

A „Turtle” aPython elő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 A teknő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.

Ha emlékeztek rá tavaly játszottunk különböző rajzoló programocskákkal, azokhoz  hasonló lesz ez is.

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:

Minden esetben importálni kell a turtle-t ha rajzolni szeretnénk!

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()

Nincsenek megjegyzések:

Megjegyzés küldése