-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmystify.py
More file actions
54 lines (49 loc) · 1.2 KB
/
Copy pathmystify.py
File metadata and controls
54 lines (49 loc) · 1.2 KB
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
import kandinsky
from random import randint,choice
from time import sleep
def connect(x1,y1,x2,y2,co="black"):
xspan=x2-x1;yspan=y2-y1
steps=max(abs(xspan),abs(yspan))
if steps==0:
kandinsky.set_pixel(x1,y1,co)
return
dx=xspan/steps;dy=yspan/steps
x=x1;y=y1
for k in range(steps):
kandinsky.set_pixel(int(x+.5),int(y+.5),co)
x+=dx;y+=dy
def quadrilateral():
x=[];y=[]
xstep=[];ystep=[]
for k in range(4):
x.append(randint(0,320))
y.append(randint(0,220))
xstep.append(randint(1,4)*choice([-1,1]))
ystep.append(randint(1,4)*choice([-1,1]))
return x,y,xstep,ystep
def step(x,y,dx,dy):
for k in range(4):
x[k]+=dx[k];y[k]+=dy[k]
if x[k]>=320:
dx[k]=-dx[k]
if x[k]<=0:
dx[k]=-dx[k]
if y[k]>=220:
dy[k]=-dy[k]
if y[k]<=0:
dy[k]=-dy[k]
return(x,y,dx,dy)
def drawquad(x,y,co):
for k in range(3):
connect(x[k],y[k],x[k+1],y[k+1],co)
connect(x[3],y[3],x[0],y[0],co)
x,y,dx,dy=quadrilateral()
x2,y2,dx2,dy2=quadrilateral()
while True:
#print(x,y,dx,dy)
x,y,dx,dy=step(x,y,dx,dy)
x2,y2,dx2,dy2=step(x2,y2,dx2,dy2)
kandinsky.fill_rect(0,0,320,230,"black")
drawquad(x,y,"green")
drawquad(x2,y2,"blue")
sleep(0.1)