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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# lines: make lots of lines on the screen
import sys,pygame
from pygame.locals import *
from random import *
# XO screen is 1200x900
size = width, height = 1200, 900
# always need to init first thing
pygame.init()
# turn off the cursor
pygame.mouse.set_visible(False)
# create the window and keep track of the surface
# for drawing into
screen = pygame.display.set_mode(size)
# start the screen all black
screen.fill((0,0,0))
# we need starting endpoints for the line and seed motion vectors
start=[randint(0,size[0]), randint(0,size[1])]
end =[randint(0,size[0]), randint(0,size[1])]
# randomize the motion, 1..3 in each direction, positive or negative, but
# never 0
mvect_start = [choice((-1,1)) * randint(1,3), choice((-1,1)) * randint(1,3)]
mvect_end = [choice((-1,1)) * randint(1,3), choice((-1,1)) * randint(1,3)]
# start with a random color and color direction
color = [randint(0,255), randint(0,255), randint(0,255)]
direction = [choice((-1,1)), choice((-1,1)), choice((-1,1))]
while 1:
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
elif event.type == KEYDOWN:
sys.exit()
# draw the line using the current values and width=3
pygame.draw.line(screen, color, start, end, 3)
# update the display
pygame.display.flip()
# update the end points and the color
for i in range(2):
start[i] = start[i] + mvect_start[i]
end[i] = end[i] + mvect_end[i]
for i in range(3):
color[i] = color[i] + direction[i]
# check if anything has gone out of range and
# if so, bring back to edge and reverse the
# corresponding motion vector
if start[0] < 0 :
start[0] = 0
mvect_start[0] = -1 * mvect_start[0]
elif start[0] >= size[0] :
start[0] = size[0] - 1
mvect_start[0] = -1 * mvect_start[0]
if start[1] < 0 :
start[1] = 0
mvect_start[1] = -1 * mvect_start[1]
elif start[1] >= size[1] :
start[1] = size[1] - 1
mvect_start[1] = -1 * mvect_start[1]
if end[0] < 0 :
end[0] = 0
mvect_end[0] = -1 * mvect_end[0]
elif end[0] >= size[0] :
end[0] = size[0] - 1
mvect_end[0] = -1 * mvect_end[0]
if end[1] < 0 :
end[1] = 0
mvect_end[1] = -1 * mvect_end[1]
elif end[1] >= size[1] :
end[1] = size[1] - 1
mvect_end[1] = -1 * mvect_end[1]
for i in range(3) :
if color[i] < 0:
color[i] = 0
direction[i] = direction[i] * -1
elif color[i] >= 255 :
color[i] = 255
direction[i] = direction[i] * -1
# randomly change the color directon on occasion
if randint(0,511) == 128:
for i in range(3):
direction[i] = choice((-1,1))
|