Compare commits
14 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
d94f1bab5e | 7 months ago |
|
|
14414ab17a | 7 months ago |
|
|
01999adbfb | 7 months ago |
|
|
285d57f2eb | 7 months ago |
|
|
6186cc0751 | 7 months ago |
|
|
3e744f8147 | 7 months ago |
|
|
9b5420850a | 7 months ago |
|
|
284e58e28e | 7 months ago |
|
|
fd37856e9f | 7 months ago |
|
|
97a62d7c50 | 7 months ago |
|
|
97217159a1 | 7 months ago |
|
|
fa9ac83846 | 7 months ago |
|
|
1bd980ef5a | 7 months ago |
|
|
38fa428ae1 | 7 months ago |
|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
After Width: | Height: | Size: 162 KiB |
|
After Width: | Height: | Size: 125 KiB |
|
After Width: | Height: | Size: 117 KiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 962 KiB |
|
After Width: | Height: | Size: 603 KiB |
|
After Width: | Height: | Size: 807 KiB |
@ -0,0 +1,68 @@
|
|||||||
|
import pygame
|
||||||
|
import settings
|
||||||
|
from settings import MyColors
|
||||||
|
|
||||||
|
class GameOver:
|
||||||
|
def __init__(self, screen):
|
||||||
|
self.screen = screen
|
||||||
|
self.background = pygame.image.load(settings.BACKGROUND_IMG_COMP).convert_alpha()
|
||||||
|
icon_controller_retry = pygame.image.load(settings.icons.controller.viereck).convert_alpha()
|
||||||
|
self.icon_controller_retry = pygame.transform.scale(icon_controller_retry, (50, 48))
|
||||||
|
icon_controller_menu = pygame.image.load(settings.icons.controller.dreieck).convert_alpha()
|
||||||
|
self.icon_controller_menu = pygame.transform.scale(icon_controller_menu, (50, 48))
|
||||||
|
|
||||||
|
self.font = pygame.font.Font(settings.fonts.PressStart2P, 60)
|
||||||
|
self.small_font = pygame.font.Font(settings.fonts.PressStart2P, 24)
|
||||||
|
|
||||||
|
self.retry_button = pygame.Rect(390, 400, 200, 50)
|
||||||
|
self.menu_button = pygame.Rect(690, 400, 200, 50)
|
||||||
|
|
||||||
|
|
||||||
|
def draw(self):
|
||||||
|
# self.screen.blit(self.background, (0, 0))
|
||||||
|
overlay = pygame.Surface((settings.SCREEN_WIDTH, settings.SCREEN_HEIGHT)) # Neues Surface in Bildschirmgröße
|
||||||
|
overlay.set_alpha(50) # 0 = komplett durchsichtig, 255 = komplett undurchsichtig
|
||||||
|
overlay.fill((0, 0, 0)) # Schwarz färben
|
||||||
|
self.screen.blit(overlay, (0, 0)) # Overlay auf
|
||||||
|
|
||||||
|
# Score-Text
|
||||||
|
score_text = self.font.render(f"GAME OVER", True, (255, 255, 255)) # z.B. Gold
|
||||||
|
self.screen.blit(score_text, (settings.SCREEN_WIDTH // 2 - score_text.get_width() // 2, 200))
|
||||||
|
|
||||||
|
time_text = self.small_font.render(f"Das wird schon wieder", True, (255, 255, 255))
|
||||||
|
self.screen.blit(time_text, (settings.SCREEN_WIDTH // 2 - time_text.get_width() // 2, 300))
|
||||||
|
|
||||||
|
|
||||||
|
pygame.draw.rect(self.screen, MyColors.yellow, self.retry_button)
|
||||||
|
pygame.draw.rect(self.screen, MyColors.yellow, self.menu_button)
|
||||||
|
|
||||||
|
nochmal_text = self.small_font.render("Nochmal", True, MyColors.brown)
|
||||||
|
menu_text = self.small_font.render("Menü", True, MyColors.brown)
|
||||||
|
|
||||||
|
self.screen.blit(nochmal_text, (self.retry_button.x + 15, self.retry_button.y + 10))
|
||||||
|
self.screen.blit(menu_text, (self.menu_button.x + 50, self.menu_button.y + 10))
|
||||||
|
|
||||||
|
self.screen.blit(self.icon_controller_retry, (self.retry_button.x + 70, self.retry_button.y + 40))
|
||||||
|
self.screen.blit(self.icon_controller_menu, ((self.menu_button.x + 70), self.menu_button.y + 40))
|
||||||
|
|
||||||
|
return self.retry_button, self.menu_button
|
||||||
|
|
||||||
|
|
||||||
|
def handle_event(self, event):
|
||||||
|
if event.type == pygame.MOUSEBUTTONDOWN:
|
||||||
|
print("MOUSEBUTTONDOWN") if settings.DEBUG else None
|
||||||
|
if self.retry_button.collidepoint(event.pos):
|
||||||
|
return "retry"
|
||||||
|
elif self.menu_button.collidepoint(event.pos):
|
||||||
|
return "menu"
|
||||||
|
if event.type == pygame.MOUSEBUTTONUP:
|
||||||
|
if self.retry_button.collidepoint(event.pos):
|
||||||
|
return "retry"
|
||||||
|
elif self.menu_button.collidepoint(event.pos):
|
||||||
|
return "menu"
|
||||||
|
if event.type == pygame.JOYBUTTONDOWN:
|
||||||
|
if event.button == 3:
|
||||||
|
return "menu"
|
||||||
|
elif event.button == 2:
|
||||||
|
return "retry"
|
||||||
|
return None
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
import pygame
|
||||||
|
import random
|
||||||
|
import settings
|
||||||
|
|
||||||
|
class Item(pygame.sprite.Sprite):
|
||||||
|
def __init__(self, x, y):
|
||||||
|
super().__init__()
|
||||||
|
self.image = pygame.image.load(settings.world.items.beer.img).convert_alpha()
|
||||||
|
self.image = pygame.transform.scale(self.image, settings.world.items.beer.size)
|
||||||
|
self.rect = self.image.get_rect(topleft=(x, y))
|
||||||
|
print(f'create item {self.rect}') if settings.DEBUG else None
|
||||||
|
|
||||||
|
def draw(self, screen, camera_offset):
|
||||||
|
screen.blit(self.image, (self.rect.x - camera_offset, self.rect.y))
|
||||||
|
|
||||||
|
def get_rect(self):
|
||||||
|
return self.rect
|
||||||
@ -0,0 +1,92 @@
|
|||||||
|
import pygame
|
||||||
|
import settings
|
||||||
|
from settings import MyColors
|
||||||
|
import sqlite3
|
||||||
|
|
||||||
|
class Endscreen:
|
||||||
|
def __init__(self, screen, score=0, time_passed=0, player_name="Spieler1"):
|
||||||
|
self.screen = screen
|
||||||
|
self.score = score
|
||||||
|
self.player_name = player_name
|
||||||
|
|
||||||
|
self.background = pygame.image.load(settings.BACKGROUND_IMG_COMP).convert_alpha()
|
||||||
|
icon_controller_retry = pygame.image.load(settings.icons.controller.viereck).convert_alpha()
|
||||||
|
self.icon_controller_retry = pygame.transform.scale(icon_controller_retry, (50, 48))
|
||||||
|
icon_controller_menu = pygame.image.load(settings.icons.controller.dreieck).convert_alpha()
|
||||||
|
self.icon_controller_menu = pygame.transform.scale(icon_controller_menu, (50, 48))
|
||||||
|
|
||||||
|
self.font = pygame.font.Font(settings.fonts.PressStart2P, 60)
|
||||||
|
self.small_font = pygame.font.Font(settings.fonts.PressStart2P, 24)
|
||||||
|
|
||||||
|
self.retry_button = pygame.Rect(390, 400, 200, 50)
|
||||||
|
self.menu_button = pygame.Rect(690, 400, 200, 50)
|
||||||
|
|
||||||
|
self.time_passed = time_passed
|
||||||
|
|
||||||
|
self.save_score_to_db()
|
||||||
|
|
||||||
|
def save_score_to_db(self):
|
||||||
|
connection = sqlite3.connect('highscores.db')
|
||||||
|
cursor = connection.cursor()
|
||||||
|
|
||||||
|
cursor.execute('''
|
||||||
|
CREATE TABLE IF NOT EXISTS highscores (
|
||||||
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
|
name TEXT NOT NULL,
|
||||||
|
score INTEGER NOT NULL,
|
||||||
|
time REAL NOT NULL
|
||||||
|
)
|
||||||
|
''')
|
||||||
|
|
||||||
|
cursor.execute('''
|
||||||
|
INSERT INTO highscores (name, score, time)
|
||||||
|
VALUES (?, ?, ?)
|
||||||
|
''', (self.player_name, self.score, self.time_passed))
|
||||||
|
|
||||||
|
connection.commit()
|
||||||
|
connection.close()
|
||||||
|
|
||||||
|
def draw(self):
|
||||||
|
self.screen.blit(self.background, (0, 0))
|
||||||
|
|
||||||
|
# Score-Text
|
||||||
|
score_text = self.font.render(f"Dein Score: {self.score}", True, (255, 255, 255)) # z.B. Gold
|
||||||
|
self.screen.blit(score_text, (settings.SCREEN_WIDTH // 2 - score_text.get_width() // 2, 200))
|
||||||
|
|
||||||
|
time_text = self.small_font.render(f"Deine Zeit: {self.time_passed:.2f} Sekunden", True, (255, 255, 255))
|
||||||
|
self.screen.blit(time_text, (settings.SCREEN_WIDTH // 2 - time_text.get_width() // 2, 300))
|
||||||
|
|
||||||
|
|
||||||
|
pygame.draw.rect(self.screen, MyColors.yellow, self.retry_button)
|
||||||
|
pygame.draw.rect(self.screen, MyColors.yellow, self.menu_button)
|
||||||
|
|
||||||
|
nochmal_text = self.small_font.render("Nochmal", True, MyColors.brown)
|
||||||
|
menu_text = self.small_font.render("Menü", True, MyColors.brown)
|
||||||
|
|
||||||
|
self.screen.blit(nochmal_text, (self.retry_button.x + 15, self.retry_button.y + 10))
|
||||||
|
self.screen.blit(menu_text, (self.menu_button.x + 50, self.menu_button.y + 10))
|
||||||
|
|
||||||
|
self.screen.blit(self.icon_controller_retry, (self.retry_button.x + 70, self.retry_button.y + 40))
|
||||||
|
self.screen.blit(self.icon_controller_menu, ((self.menu_button.x + 70), self.menu_button.y + 40))
|
||||||
|
|
||||||
|
return self.retry_button, self.menu_button
|
||||||
|
|
||||||
|
|
||||||
|
def handle_event(self, event):
|
||||||
|
if event.type == pygame.MOUSEBUTTONDOWN:
|
||||||
|
print("MOUSEBUTTONDOWN") if settings.DEBUG else None
|
||||||
|
if self.retry_button.collidepoint(event.pos):
|
||||||
|
return "retry"
|
||||||
|
elif self.menu_button.collidepoint(event.pos):
|
||||||
|
return "menu"
|
||||||
|
if event.type == pygame.MOUSEBUTTONUP:
|
||||||
|
if self.retry_button.collidepoint(event.pos):
|
||||||
|
return "retry"
|
||||||
|
elif self.menu_button.collidepoint(event.pos):
|
||||||
|
return "menu"
|
||||||
|
if event.type == pygame.JOYBUTTONDOWN:
|
||||||
|
if event.button == 3:
|
||||||
|
return "menu"
|
||||||
|
elif event.button == 2:
|
||||||
|
return "retry"
|
||||||
|
return None
|
||||||