Utrka auta
24.5.2022.
Modul turtle se može primijeniti i u proceduralnom i objektno usmjerenom načinu programiranja.
Prilikom pozivanja prve funkcije modula turtle otvara se novi grafički prozor, s ishodištem u središtu tog prozora. Taj prozor je objekt klase Screen.
Objekti klase Turtle imaju unaprijed definiran izgled: strelica je okrenuta u desno, crne boje, ostavlja trag kod pomicanja i smještena je u središte koordinatnog sustava.
Umjesto strelice možemo odabrati neki od standardnih oblici pokazivača: 'arrow', 'turtle', 'circle', 'square', 'triangle', 'classic'.
Za promjenu oblika pera koristit ćemo naredbu iz modula turtle:
shape(name=None)
Promjenu izgleda pera možemo provjeriti u interaktivnom sučelju tako da napišemo naredbe:
>>> import turtle>>> s = turtle.Screen()
>>> t = turtle.Turtle()
>>> t.shape('circle')
>>> t.shape('arrow')
>>> t.shape('turtle')
pri čemu je t objekt klase Turtle.
Ako umjesto unaprijed definiranih oblika, želimo koristiti sliku prvo moramo upotrijebiti metodu prozora addshape().
Metoda addshape() dodaje odabranu sliku u popis oblika koji se mogu koristiti za objekte.
Slike trebaju biti u .gif formatu.
addshape(name, shape=None)
ili
register_shape (name, shape=None)
Ukoliko odabrana slika nije pohranjena u istoj mapi gdje se nalazi program potrebno je u naredbi s.addshape() navesti i putanju do željene slike.
Zadatak: Nacrtajte stazu za utrku.
- Nacrtaj sivu cestu.
- Nacrtaj bijelu crtu po sredini ceste.
- Nacrtaj ciljnu crtu s 5 crvenih (ili druge boje) crtica.
Potrebne naredbe:
from turtle import Screen, Turtle
s = Screen() #prozor s je klase Screen
s.setup(1000, 600, None, None) #veličina prozora, sredina ekrana
prozor.bgcolor('green') #odabiremo boju podloge
prozor.tracer(False) #isključuje animaciju crtanja
pero = Turtle() #definiranje kornjače za crtanje
Program za stazu utrke:
# crtanje staze
from turtle import Screen, Turtle
prozor = Screen()
prozor.setup(1000, 600, None, None) # veličina i pozicija prozora
prozor.bgcolor('green') # boja podloge
prozor.tracer(False) # isključuje animaciju crtanja
pero = Turtle() # definiranje kornjače za crtanje
pero.ht()
# crtanje sive ceste
pero.color('grey')
pero.width(150) #širina sive ceste
pero.pu()
pero.setx(-500)
pero.pd()
pero.fd(1000)
# crtanje srednje bijele crte
pero.width(20)
pero.color('white')
pero.bk(1000)
# ctanje ciljne crte
pero.pu()
pero.width(10)
pero.goto(400,100)
pero.rt(90)
pero.color('red')
for i in range(5): # 5 crvenih crrtica
pero.pd()
pero.fd(20)
pero.pu()
pero.fd(20)
prozor.tracer(True) # uključuje animaciju
Utrka auta
Slike: auto1.gif i auto2.gif
Potrebna nam je:
screen.addshape ("ime_slike.gif")
t.shape(oblik) #zadaje oblik iz popisa oblika (crteža)
t.xcor() #vraća x-koordinatu pera
t.ycor() #vraća y-koordinatu pera
Ostale metode potražite na https://docs.python.org/3/library/turtle.html#
Zadatak: Pronađite 2 slike auta (gif) i napišite ostatak programa za utrku.
Kad neki od auta prođe ciljnu crtu prekinuti izvođenje programa (break).
from staza1 import *
from random import randint
prozor.tracer(False) # isključuje animaciju crtanja
prozor.addshape('auto1.gif')
prozor.addshape('auto2.gif')
auto1 = Turtle()
auto1.shape('auto1.gif')
auto1.pu()
auto1.goto(-450,50)
auto2 = Turtle()
auto2.shape('auto2.gif')
auto2.pu()
auto2.goto(-450,-50)
prozor.tracer(True) # uključuje animaciju crtanja
# utrka
for i in range(100):
auto1.fd(randint(1,30))
auto2.fd(randint(1,30))
# kad neka od kornjača prođe ciljnu crtu prekinuti program
if auto1.xcor()>=425 or auto2.xcor()>=425:
break