CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
jackfrued

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: jackfrued/Python-100-Days
Path: blob/master/Day01-15/code/Day13/test3.py
Views: 729
1
from random import randint
2
from threading import Thread
3
from time import sleep
4
5
import pygame
6
7
8
class Color(object):
9
BLACK = (0, 0, 0)
10
WHITE = (255, 255, 255)
11
GRAY = (242, 242, 242)
12
13
@staticmethod
14
def random_color():
15
r = randint(0, 255)
16
g = randint(0, 255)
17
b = randint(0, 255)
18
return r, g, b
19
20
21
class Car(object):
22
23
def __init__(self, x, y, color):
24
self._x = x
25
self._y = y
26
self._color = color
27
28
def move(self):
29
if self._x + 80 < 950:
30
self._x += randint(1, 10)
31
32
def draw(self, screen):
33
pygame.draw.rect(screen, self._color,
34
(self._x, self._y, 80, 40), 0)
35
36
37
def main():
38
39
class BackgroundTask(Thread):
40
41
def run(self):
42
while True:
43
screen.fill(Color.GRAY)
44
pygame.draw.line(screen, Color.BLACK, (130, 0), (130, 600), 4)
45
pygame.draw.line(screen, Color.BLACK, (950, 0), (950, 600), 4)
46
for car in cars:
47
car.draw(screen)
48
pygame.display.flip()
49
sleep(0.05)
50
for car in cars:
51
car.move()
52
53
cars = []
54
for index in range(5):
55
temp = Car(50, 50 + 120 * index, Color.random_color())
56
cars.append(temp)
57
pygame.init()
58
screen = pygame.display.set_mode((1000, 600))
59
BackgroundTask(daemon=True).start()
60
running = True
61
while running:
62
for event in pygame.event.get():
63
if event.type == pygame.QUIT:
64
running = False
65
pygame.quit()
66
67
68
if __name__ == '__main__':
69
main()
70
71