Page 64 - MATINF Nr. 9-10
P. 64
64 R.D. Albu
pasare2 = Finch(’B’)
for i in range(10): #Sincronizare blinking while pasare1.getOrientation() == ”Level”:
pasare1.setBeak(0,100,0) if pasare2.getButton(’A’):
pasare2.setBeak(0,100,0) pasare1.setTail(”all”,0,0,100)
sleep(1) if pasare2.getButton(’B’):
pasare1.setBeak(0,100,100) pasare1.setTail(”all”,0,0,0)
pasare2.setBeak(0,100,100) pasare1.stopAll()
sleep(1) pasare2.stopAll()
pasare1.stopAll()
pasare2.stopAll()
while not pasare1.getButton(’A’): while not pasare1.getButton(’A’):
if pasare1.getOrientation() == ”Cioc jos”: acc = pasare1.getAcceleration()
pasare2.setMove(’F’,10,50) print(acc)
elif pasare1.getOrientation() == ”Cioc sus”: if abs(acc[0]) < abs(acc[1]):
pasare2.setMove(’B’,10,50) pasare2.setMotors(round(-3*acc[1]),round(-3*acc[1]))
ˆ
elif pasare1.getOrientation()==”Inclinat stˆanga”: else:
pasare2.setTurn(’L’,90,50) pasare2.setMotors(round(3*acc[0]),round(-3*acc[0]))
ˆ
elif pasare1.getOrientation()==”Inclinat pasare1.stopAll()
dreapta”: pasare2.stopAll()
pasare2.setTurn(’R’,90,50)
Poate fi explorat˘a recursivitatea cu Finch. Recursivitatea este atunci cˆand o funct , ie se
apeleaz˘ pe ea ˆıns˘s , i. Se poate folosi recursivitatea pentru a desena fractali Koch. Pentru mai
a
a
multe tipuri de fractali, se poate accesa siteul [7].
Se poate folosi algoritmul dat ˆın How to Think Like a Computer Scientist: Learning with
Python 3 by Wentworth, Elkner, Downey s , i Meyers. Pas , ii de mai jos pot fi utilizat , i pentru a
desena un fractal Koch de ordinul n:
1. Desenat , i fractalul Koch de ordinul n - 1 s , i dimensiunea L / 3.
◦
2. Virat , i la stˆanga la 60 .
3. Desenat , i fractalul Koch de ordinul n - 1 s , i dimensiunea L / 3.
◦
4. Virat , i la dreapta la 120 .
5. Desenat , i fractalul Koch de ordinul n - 1 s , i dimensiunea L / 3.
◦
6. Virat , i la stˆanga la 60 .
7. Desenat , i fractalul Koch de ordinul n - 1 s , i dimensiunea L / 3.
from BirdBrain import Finch # Import biblioteca Finch
from time import sleep # Import funct , ia sleep()
pasare = Finch()
# Funct , ia se apeleaz˘ pe sine recursiv pentru a desena un fractal Koch.
a
def desenareFractal(ordin, distant , ˘a):
if ordin == 0:
pasare.setMove(’F’,distant , a,50)
else:
desenareFractal(ordin - 1, round(distant , a/3))
bird.setTurn(’L’,60,50)
desenareFractal(ordin - 1, round(distant , a/3))
bird.setTurn(’R’,120,50)