-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathturtle_random_walk.py
69 lines (55 loc) · 1.51 KB
/
turtle_random_walk.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import turtle as tl
import random
import time
STEP_LENGTH = 30
tl.speed(1)
tl.left(90)
def walk1():
for i in range(1000):
angle = random.randrange(0, 360, 45)
# print(turn)
# if turn == 0:
# tl.forward(STEP)
# elif turn == 1:
# tl.left(90)
# tl.forward(STEP)
# elif turn == 2:
# tl.backward(STEP)
# else:
# tl.right(90)
# tl.forward(STEP)
step = 'forward' if angle<=90 or angle>=270 else 'backward'
turn = 'left' if angle<=90 or (angle>=180 and angle<270) else 'right'
if turn == 'left':
angle = angle if angle<180 else (angle-180)
else:
angle = (360-angle) if angle>=270 else (angle-90)
if turn == 'left':
tl.left(angle)
else: tl.right(angle)
# print(turn, step, angle)
# time.sleep(0.5)
if step == 'forward':
tl.forward(STEP_LENGTH)
else: tl.backward(STEP_LENGTH)
def walk2(n=1000):
x,y = 0,0
for i in range(n):
# dx, dy = random.choice([(1, 0), (-1, 0), (0, 1), (0, -1)])
dx, dy = random.choice(
[
(0, 1),
(0, -1),
(1, 0),
(1, 1),
(1, -1),
(-1, 0),
(-1, 1),
(-1, -1)
]
)
x += dx
y += dy
tl.goto(x*STEP_LENGTH, y*STEP_LENGTH)
if __name__ == "__main__":
walk1()