## 2018年2月2日金曜日

### Python - Random Fun and Games: Go Ahead, Take a Chance!(REALISTIC MIRRORED SPIRALS, turtle module, heading method, setheading method, random module, randrange method, choice method)

Teach Your Kids to Code: A Parent-Friendly Guide to Python Programming (Bryson Payne(著)、No Starch Press)のChapter 6.(Random Fun and Games: Go Ahead, Take a Chance!)、PROGRAMMING CHALLENGES、#2: REALISTIC MIRRORED SPIRALSを取り組んでみる。

#2: REALISTIC MIRRORED SPIRALS

コード(Emacs)

Python 3

```#!/usr/bin/env python3
import random
import turtle

t = turtle.Pen()
t.speed(0)
turtle.bgcolor('black')
colors = ['red', 'yellow', 'blue', 'green',
'orange', 'purple', 'white', 'gray']

for n in range(50):
t.pencolor(random.choice(colors))
size = random.randrange(10, 41)
sides = random.randrange(3, 10)
thick = random.randrange(1, 4)
t.width(thick)
# x = random.randrange(0, turtle.window_width() // 2)
# y = random.randrange(0, turtle.window_height() // 2)
x = random.randrange(0, 600 // 2)
y = random.randrange(0, 600 // 2)
angles = [angle, 180 - angle, angle - 180, 360 - angle]
for i, (a, (x0, y0)) in enumerate(
zip(angles, [(x, y), (-x, y), (-x, -y), (x, -y)])):
t.penup()
t.setpos(x0, y0)
t.pendown()
if i % 2 == 0:
f = t.left
else:
f = t.right
for m in range(size):
t.forward(m * 2)
f(360 / sides + 2)

print('done')
input()
```

```\$ ./sample2.py
done
q
\$ ./sample2.py
done
close
\$ ./sample2.py
done
q
\$ ./sample2.py
done
q
\$ ./sample2.py
done
q
\$
```