Hackathon/code/simulation.py

80 lines
2 KiB
Python

import pygame
import sprites
pygame.init()
SCREEN_WIDTH = 1280
SCREEN_HEIGHT = 720
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
clock = pygame.time.Clock()
player = pygame.sprite.GroupSingle()
player.add(sprites.Player())
streets = pygame.sprite.Group()
street_1 = sprites.Streets(0, 100, SCREEN_WIDTH, 4)
street_2 = sprites.Streets(0, 200, SCREEN_WIDTH, 4)
streets.add(street_1)
streets.add(street_2)
lanterns = pygame.sprite.Group()
lantern_list = []
detectors = pygame.sprite.Group()
detectors_list = []
id = 1
for y_pos in range(50, 251, 200):
x_pos = 100
while x_pos < SCREEN_WIDTH:
lantern = sprites.Lanterns(x_pos, y_pos, 25, 25, id)
lantern_list.append(lantern)
detector = sprites.Detectors(x_pos, y_pos, 133, 300, id)
detectors_list.append(detector)
x_pos += 150
id += 1
for item in lantern_list:
lanterns.add(item)
for item in detectors_list:
detectors.add(item)
if __name__ == "__main__":
run = True
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
screen.fill("Grey")
detectors.draw(screen)
streets.draw(screen)
lanterns.draw(screen)
player.draw(screen)
player.update()
for lantern in lanterns:
lantern.reset_light()
# Check for collision and light up corresponding lantern
collisions = pygame.sprite.spritecollide(player.sprite, detectors, False)
for detector in collisions:
for lantern in lanterns:
if lantern.id == detector.id - 1 and lantern.id is not 8 or lantern.id == detector.id + 1 and lantern.id is not 8:
lantern.light_up(176, 179, 0)
if lantern.id == detector.id:
lantern.light_up(255, 255, 0)
if pygame.sprite.spritecollide(player.sprite, streets, False):
player.sprite.set_back()
pygame.display.update()
clock.tick(60)
pygame.quit()