Skip to content

Commit 3ab680d

Browse files
committed
Add what we did in class today
1 parent fc65083 commit 3ab680d

File tree

1 file changed

+65
-4
lines changed

1 file changed

+65
-4
lines changed

in-class-main.py

+65-4
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
class Rectangles():
1313
def __init__(self, topleft, wh, speed, screensize):
1414
self.rect = pygame.Rect(topleft, wh)
15+
self.backuprect = pygame.Rect(topleft, wh)
1516
self.speed = speed
1617
self.screen = pygame.Rect((0, 0), screensize)
1718

@@ -35,20 +36,80 @@ def update(self):
3536
if self.rect.right > self.screen.right:
3637
self.rect.x = self.screen.right-self.rect.width
3738

39+
def draw(self, screen):
40+
pygame.draw.rect(screen, (0, 255, 0), self.rect)
41+
42+
def goto(self, pos, walls):
43+
rectcenterbackup = self.rect.center
44+
self.rect.center = pos
45+
for wall in walls:
46+
if self.rect.colliderect(wall.rect):
47+
self.rect.center = rectcenterbackup
48+
49+
def reset(self):
50+
self.rect = self.backuprect.move(0, 0)
51+
52+
class Wall(pygame.sprite.Sprite):
53+
def __init__(self, x, y, w, h):
54+
super().__init__()
55+
self.rect = pygame.Rect((x, y), (w, h))
56+
3857
def draw(self, screen):
3958
pygame.draw.rect(screen, (255, 0, 0), self.rect)
4059

41-
rect = Rectangles((200, 150), (200, 300), 10, (WIDTH, HEIGHT))
60+
class LoseScreen():
61+
def __init__(self, screensize):
62+
self.screensize = screensize
63+
self.screenrect = pygame.Rect((0, 0), screensize)
64+
self.font = pygame.font.Font(None, 100)
65+
self.text = self.font.render("You lost!", True, (255, 255, 255))
66+
self.textrect = self.text.get_rect(center = (screensize[0]/2, screensize[1]/2))
67+
self.count = 0
68+
69+
def draw(self, screen):
70+
if self.count > 0:
71+
pygame.draw.rect(screen, (255, 0, 0), self.screenrect)
72+
screen.blit(self.text, self.textrect)
73+
74+
def update(self, reset=False):
75+
if reset:
76+
self.count = 40
77+
return 0
78+
self.count -= 1
79+
return 0 if self.count > 0 else 1
80+
81+
rect = Rectangles((200, 150), (100, 100), 10, (WIDTH, HEIGHT))
82+
losescreen = LoseScreen((WIDTH, HEIGHT))
83+
level = 1
4284

4385
clock = pygame.time.Clock()
4486

87+
walls = pygame.sprite.Group()
88+
walls.add(Wall(0, 0, 100, 100))
89+
walls.add(Wall(400, 0, 100, 100))
90+
4591
while True:
4692
clock.tick(FRAMERATE)
4793
for event in pygame.event.get():
4894
if event.type == QUIT:
4995
raise SystemExit
96+
elif event.type == MOUSEBUTTONDOWN:
97+
if event.button == 1:
98+
rect.goto(event.pos, walls)
99+
elif event.type == USEREVENT and event.code == "LOSE":
100+
level = losescreen.update(reset=True)
101+
rect.reset()
50102
screen.fill((255,255,255))
51-
rect.update()
52-
rect.draw(screen)
103+
if level == 0:
104+
level = losescreen.update()
105+
losescreen.draw(screen)
106+
else:
107+
rect.update()
108+
rect.draw(screen)
109+
for wall in walls:
110+
wall.draw(screen)
111+
if rect.rect.colliderect(wall.rect):
112+
pygame.event.post(pygame.event.Event(USEREVENT, code="LOSE"))
113+
53114

54-
pygame.display.update()
115+
pygame.display.update()

0 commit comments

Comments
 (0)