import pygame from button import Button from settings import (COLOR_BUTTON, COLOR_BUTTON_HOVER, COLOR_STARTSCREEN_BACKGROUND, COLOR_STARTSCREEN_FONT_TITLE, COLOR_STARTSCREEN_FONT_LABEL) from text_input import TextInput class Startscreen: def __init__(self, screen): self.screen = screen self.font_title = pygame.font.SysFont("Arial", 36) self.font_label = pygame.font.SysFont("Arial", 20) self.button_color = COLOR_BUTTON self.button_hover_color = COLOR_BUTTON_HOVER self.player_name = "" self.button_start = Button("[ENTER] Immatrikulieren", 500, 70, 20, 60, self.button_color, self.button_hover_color) self.button_quit = Button("[ESC] Exmatrikulieren", 500, 70, 20, 150, self.button_color, self.button_hover_color) self.text_input_name = TextInput(400, 40, 20, 240) def run(self): # get all events events = pygame.event.get() # check events for event in events: if event.type == pygame.QUIT: return "quit" # forward event to text input box self.text_input_name.handle_event(event) if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: return "quit" if event.key == pygame.K_RETURN: self.player_name = self.text_input_name.get_text() if self.player_name.strip() != "": print("Spielername:", self.player_name) return "game" # set background color self.screen.fill(COLOR_STARTSCREEN_BACKGROUND) # set title and intro/welcome message title = self.font_title.render("SILENT FH", True, COLOR_STARTSCREEN_FONT_TITLE) self.screen.blit(title, (10, 10)) message = self.font_label.render("Welcome to FH - Study with purpose", True, COLOR_STARTSCREEN_FONT_LABEL) # draw buttons and get click state button_start_pressed = self.button_start.draw(self.screen) button_quit_pressed = self.button_quit.draw(self.screen) # draw text input box self.text_input_name.draw(self.screen) # react on button clicks if button_start_pressed: return "game" if button_quit_pressed: return "quit" # check key down events - exit/quit for event in pygame.event.get(): if event.type == pygame.QUIT: return "quit" if event.type == pygame.KEYDOWN: if event.key == pygame.K_RETURN: return "game" if event.key == pygame.K_ESCAPE: return "quit" return "startscreen" # test function fro temporary testing if __name__ == "__main__": pygame.init() screen = pygame.display.set_mode((960, 640)) pygame.display.set_caption("Silent FH - Startscreen Test") clock = pygame.time.Clock() startscreen = Startscreen(screen) state = "startscreen" running = True while running: clock.tick(60) if state == "startscreen": state = startscreen.run() elif state == "game": screen.fill((30, 30, 30)) font = pygame.font.SysFont("Arial", 36) text = font.render("GAME STARTED", True, (255, 255, 255)) screen.blit(text, (300, 280)) info = font.render("Press ESC to quit", True, (150, 150, 150)) screen.blit(info, (300, 330)) for event in pygame.event.get(): if event.type == pygame.QUIT: state = "quit" if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: state = "quit" elif state == "quit": running = False pygame.display.flip() pygame.quit()