98 lines
2.7 KiB
Python
98 lines
2.7 KiB
Python
import pygame, sys
|
|
from settings import *
|
|
from player import Player
|
|
from car import Car
|
|
from random import choice, randint
|
|
from sprite import SimpleSprite, LongSprite
|
|
|
|
class AllSprites(pygame.sprite.Group):
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.offset = pygame.math.Vector2()
|
|
self.bg = pygame.image.load('../graphics/main/map.png').convert()
|
|
self.fg = pygame.image.load('../graphics/main/overlay.png').convert_alpha()
|
|
|
|
def customize_draw(self):
|
|
|
|
self.offset.x = player.rect.centerx - WINDOW_WIDTH / 2
|
|
self.offset.y = player.rect.centery - WINDOW_HEIGHT / 2
|
|
|
|
display_surface.blit(self.bg,-self.offset)
|
|
|
|
for sprite in sorted(self.sprites(), key = lambda sprite: sprite.rect.centery):
|
|
offset_pos = sprite.rect.topleft - self.offset
|
|
display_surface.blit(sprite.image, offset_pos)
|
|
|
|
display_surface.blit(self.fg,-self.offset)
|
|
|
|
|
|
# basic setup
|
|
pygame.init()
|
|
display_surface = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
|
|
pygame.display.set_caption('Frogger')
|
|
clock = pygame.time.Clock()
|
|
|
|
# groups
|
|
all_sprites = AllSprites()
|
|
obstacle_sprites = pygame.sprite.Group()
|
|
|
|
# sprites
|
|
player = Player((2062,3274),all_sprites,obstacle_sprites)
|
|
|
|
# car timer
|
|
car_timer = pygame.event.custom_type()
|
|
pygame.time.set_timer(car_timer,50)
|
|
pos_list = []
|
|
|
|
# font
|
|
score_text = 'Du hast es geschaft, super!'
|
|
font = pygame.font.Font(None,50)
|
|
text_surf = font.render(score_text, True, 'White')
|
|
text_rect = text_surf.get_rect(center = (WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2))
|
|
|
|
# sprite setup
|
|
for file_name,pos_list in SIMPLE_OBJECTS.items():
|
|
surf = pygame.image.load(f'../graphics/objects/simple/{file_name}.png').convert_alpha()
|
|
for pos in pos_list:
|
|
SimpleSprite(surf, pos, [all_sprites,obstacle_sprites])
|
|
|
|
for file_name,pos_list in LONG_OBJECTS.items():
|
|
surf = pygame.image.load(f'../graphics/objects/long/{file_name}.png').convert_alpha()
|
|
for pos in pos_list:
|
|
LongSprite(surf, pos, [all_sprites,obstacle_sprites])
|
|
|
|
# game loop
|
|
while True:
|
|
|
|
# event loop
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
sys.exit()
|
|
if event.type == car_timer:
|
|
random_pos = choice(CAR_START_POSITIONS)
|
|
if random_pos not in pos_list:
|
|
pos_list.append(random_pos)
|
|
pos = (random_pos[0],random_pos[1] + randint(-8,8))
|
|
Car(pos,[all_sprites,obstacle_sprites])
|
|
if len(pos_list) >5:
|
|
del pos_list[0]
|
|
|
|
# delta time
|
|
dt = clock.tick() / 1000
|
|
|
|
|
|
if player.pos.y >= 1180:
|
|
# update
|
|
all_sprites.update(dt)
|
|
|
|
# draw
|
|
all_sprites.customize_draw()
|
|
else:
|
|
display_surface.fill('teal')
|
|
display_surface.blit(text_surf,text_rect)
|
|
|
|
# update the display surface -> drawing the frame
|
|
pygame.display.update()
|