andere Straßen bearbeitet und id System überarbeitet

This commit is contained in:
moritz 2024-07-07 16:35:41 +02:00
parent 8369f3d4de
commit 742c168916
7 changed files with 133 additions and 41 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

Binary file not shown.

87
code/setup.py Normal file
View file

@ -0,0 +1,87 @@
import pygame
import sprites
def setup_streets():
street_1 = sprites.Streets(0, 100, 850, 4) # Street 1 Top Line
street_2 = sprites.Streets(0, 200, 850, 4) # Street 1 Bottomm Line
street_3 = sprites.Streets(950, 100, 850, 4) # Street 2 Top Line
street_4 = sprites.Streets(950, 200, 850, 4) # Street 2 Bottom Line
street_5 = sprites.Streets(0, 750, 850, 4) # Street 5 Top Line
street_6 = sprites.Streets(950, 750, 850, 4) # Street 6 Top Line
street_7 = sprites.Streets(0, 850, 1800, 4) # Street 5/6 Bottom Line
street_8 = sprites.Streets(850, 200, 4, 554) # Street 4 Left Line
street_9 = sprites.Streets(950, 200, 4, 554) # Street 4 Right Line
street_10 = sprites.Streets(850, 0, 4, 104) # Street 3 Left Line
street_11 = sprites.Streets(950, 0, 4, 104) # Street 3 Right Line
streets_list = [street_1, street_2, street_3, street_4, street_5, street_6, street_7, street_8, street_9, street_10, street_11]
return streets_list
def setup_lanterns_detectors_new(SCREEN_WIDTH):
lantern_list = []
detectors_list = []
# Street 1
for y_pos in range(75, 226, 150):
x_pos = 25
id = 1
while x_pos <= 825:
lantern = sprites.Lanterns(x_pos, y_pos, 25, 25, id, street="street_1")
lantern_list.append(lantern)
detector = sprites.Detectors(x_pos, y_pos, 75, 90, id, street="street_1")
detectors_list.append(detector)
x_pos += 100
id += 1
# Street 2
for y_pos in range(75, 226, 150):
x_pos = 975
id = 1
while x_pos <= 1775:
lantern = sprites.Lanterns(x_pos, y_pos, 25, 25, id, street="street_2")
lantern_list.append(lantern)
detector = sprites.Detectors(x_pos, y_pos, 75, 90, id, street="street_2")
detectors_list.append(detector)
x_pos += 100
id += 1
# Street 4
for x_pos in range(825, 976, 150):
y_pos = 325
id = 1
while y_pos <= 625:
lantern = sprites.Lanterns(x_pos, y_pos, 25, 25, id, street="street_4")
lantern_list.append(lantern)
detector = sprites.Detectors(x_pos, y_pos, 200, 75, id, street="street_4")
detectors_list.append(detector)
print(y_pos)
y_pos += 100
id += 1
# Street 5
for y_pos in range(725, 976, 150):
x_pos = 25
id = 1
while x_pos <= 825:
lantern = sprites.Lanterns(x_pos, y_pos, 25, 25, id, street="street_5")
lantern_list.append(lantern)
detector = sprites.Detectors(x_pos, y_pos, 75, 90, id, street="street_5")
detectors_list.append(detector)
x_pos += 100
id += 1
# Street 6
for y_pos in range(725, 976, 150):
x_pos = 975
id = 1
while x_pos <= 1775:
lantern = sprites.Lanterns(x_pos, y_pos, 25, 25, id, street="street_6")
lantern_list.append(lantern)
detector = sprites.Detectors(x_pos, y_pos, 75, 90, id, street="street_6")
detectors_list.append(detector)
x_pos += 100
id += 1
return lantern_list, detectors_list

View file

@ -1,46 +1,31 @@
import pygame import pygame
import sprites import sprites
import setup
pygame.init() pygame.init()
SCREEN_WIDTH = 1280 SCREEN_WIDTH = 1800
SCREEN_HEIGHT = 720 SCREEN_HEIGHT = 1000
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
clock = pygame.time.Clock() clock = pygame.time.Clock()
player = pygame.sprite.GroupSingle() player = pygame.sprite.GroupSingle()
player.add(sprites.Player()) player.add(sprites.Player())
streets = pygame.sprite.Group() streets = pygame.sprite.Group()
street_1 = sprites.Streets(0, 100, SCREEN_WIDTH, 4) streets_list = setup.setup_streets()
street_2 = sprites.Streets(0, 200, SCREEN_WIDTH, 4)
streets.add(street_1)
streets.add(street_2)
lanterns = pygame.sprite.Group() lanterns = pygame.sprite.Group()
lantern_list = []
detectors = pygame.sprite.Group() detectors = pygame.sprite.Group()
detectors_list = [] lantern_list, detectors_list = setup.setup_lanterns_detectors_new(SCREEN_WIDTH)
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: for item in lantern_list:
lanterns.add(item) lanterns.add(item)
for item in detectors_list: for item in detectors_list:
detectors.add(item) detectors.add(item)
for item in streets_list:
streets.add(item)
if __name__ == "__main__": if __name__ == "__main__":
run = True run = True
@ -48,7 +33,6 @@ if __name__ == "__main__":
for event in pygame.event.get(): for event in pygame.event.get():
if event.type == pygame.QUIT: if event.type == pygame.QUIT:
run = False run = False
screen.fill("Grey") screen.fill("Grey")
detectors.draw(screen) detectors.draw(screen)
@ -64,10 +48,13 @@ if __name__ == "__main__":
collisions = pygame.sprite.spritecollide(player.sprite, detectors, False) collisions = pygame.sprite.spritecollide(player.sprite, detectors, False)
for detector in collisions: for detector in collisions:
for lantern in lanterns: 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: if lantern.street == detector.street:
lantern.light_up(176, 179, 0) if lantern.id == detector.id - 1 or lantern.id == detector.id + 1:
if lantern.id == detector.id: lantern.light_up(176, 179, 0, 255)
lantern.light_up(255, 255, 0) if lantern.id == detector.id - 2 or lantern.id == detector.id + 2:
lantern.light_up(176, 179, 0, 128)
if lantern.id == detector.id:
lantern.light_up(255, 255, 0, 255)
if pygame.sprite.spritecollide(player.sprite, streets, False): if pygame.sprite.spritecollide(player.sprite, streets, False):

View file

@ -10,22 +10,22 @@ class Player(pygame.sprite.Sprite):
self.player_direction = [player_right, player_left] self.player_direction = [player_right, player_left]
self.image = self.player_direction[0] self.image = self.player_direction[0]
self.rect = self.image.get_rect(center = (0, 150)) self.rect = self.image.get_rect(center = (0, 150))
self.walking_speed = 5
def player_inputs(self): def player_inputs(self):
key = pygame.key.get_pressed() key = pygame.key.get_pressed()
if key[pygame.K_a]: if key[pygame.K_a]:
self.rect.x -= 3 self.rect.x -= self.walking_speed
self.image = self.player_direction[1] self.image = self.player_direction[1]
if key[pygame.K_d]: if key[pygame.K_d]:
self.rect.x += 3 self.rect.x += self.walking_speed
self.image = self.player_direction[0] self.image = self.player_direction[0]
if key[pygame.K_s]: if key[pygame.K_s]:
self.rect.y += 3 self.rect.y += self.walking_speed
if key[pygame.K_w]: if key[pygame.K_w]:
self.rect.y -= 3 self.rect.y -= self.walking_speed
def get_last_position(self): def get_last_position(self):
self.last_position = self.rect.topleft self.last_position = self.rect.topleft
@ -33,9 +33,17 @@ class Player(pygame.sprite.Sprite):
def set_back(self): def set_back(self):
self.rect.topleft = self.last_position self.rect.topleft = self.last_position
def left_screen(self):
if self.rect.x > 1860:
self.rect.x = -60
if self.rect.x < -60:
self.rect.x = 1860
def update(self): def update(self):
self.get_last_position() self.get_last_position()
self.player_inputs() self.player_inputs()
self.left_screen()
class Streets(pygame.sprite.Sprite): class Streets(pygame.sprite.Sprite):
@ -46,23 +54,27 @@ class Streets(pygame.sprite.Sprite):
self.rect = self.image.get_rect(topleft=(left, top)) self.rect = self.image.get_rect(topleft=(left, top))
class Lanterns(pygame.sprite.Sprite): class Lanterns(pygame.sprite.Sprite):
def __init__(self, left, top, width, height, id): def __init__(self, left, top, width, height, id, street):
super().__init__() super().__init__()
self.image = pygame.Surface([width, height]) self.image = pygame.Surface([width, height], pygame.SRCALPHA)
self.image.fill((0, 0, 0)) self.image.fill((0, 0, 0, 255))
self.rect = self.image.get_rect(center=(left, top)) self.rect = self.image.get_rect(center=(left, top))
self.id = id self.id = id
self.street = street
def light_up(self, r, g, b): def light_up(self, r, g, b, oppacity):
self.image.fill((r, g, b)) self.image.fill((r, g, b, oppacity))
def reset_light(self): def reset_light(self):
self.image.fill((0, 0, 0)) self.image.fill((0, 0, 0))
class Detectors(pygame.sprite.Sprite): class Detectors(pygame.sprite.Sprite):
def __init__(self, left, top, width, height, id): def __init__(self, left, top, width, height, id, street):
super().__init__() super().__init__()
self.image = pygame.Surface([width, height]) self.image = pygame.Surface([width, height], pygame.SRCALPHA)
self.image.fill("Grey")
self.image.fill((0, 0, 0, 0))
#pygame.draw.rect(self.image, "White", self.image.get_rect(), 1) # Zum Debuggen eine Umrandung
self.rect = self.image.get_rect(center=(left, top)) self.rect = self.image.get_rect(center=(left, top))
self.id = id self.id = id
self.street = street

View file

@ -0,0 +1,6 @@
if lantern.id == detector.id - 1 or lantern.id == detector.id + 1:
lantern.light_up(176, 179, 0, 255)
if lantern.id == detector.id - 2 or lantern.id == detector.id + 2:
lantern.light_up(176, 179, 0, 128)
if lantern.id == detector.id:
lantern.light_up(255, 255, 0, 255)