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.

from turtle import Screen, Turtles = Screen()   # kreira prozor aplikacije
t = Turtle() # kreira jedan objekt (objekt t)
s.addshape('auto1.gif')  # dodaje sliku u popis oblika
t.shape('auto1.gif') # promjena izgleda pera u oblik autića

Zadatak: Nacrtajte stazu za utrku.

  1. Nacrtaj sivu cestu.
  2. Nacrtaj bijelu crtu po sredini ceste.
  3. 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

24.5.2022.

Dnevne obavijesti


Križanićeva 4, 10000 Zagreb, Hrvatska

01/46-11-834