diff --git a/kezdo.py b/kezdo.py new file mode 100644 index 0000000..5091712 --- /dev/null +++ b/kezdo.py @@ -0,0 +1,137 @@ +import pygame +from sys import exit + +pygame.init() + +GAME_WIDTH = 888 +GAME_HEIGHT = 540 + +screen = pygame.display.set_mode((GAME_WIDTH, GAME_HEIGHT)) +pygame.display.set_caption("Mukodik") +clock = pygame.time.Clock() + +state = "menu" + +menu_background = pygame.image.load("TITLESCREEN.png").convert() + +new_game = pygame.image.load("NEW GAME.png").convert_alpha() +con = pygame.image.load("CONTINUE.png").convert_alpha() +reset = pygame.image.load("RESET.png").convert_alpha() +save = pygame.image.load("SAVE.png").convert_alpha() +settings = pygame.image.load("SETTINGS.png").convert_alpha() +quit_btn = pygame.image.load("QUIT.png").convert_alpha() + +# LEVELS +level_one = pygame.image.load("levelONE_FORMATTED.png").convert() +level_two = pygame.image.load("levelTWO_FORMATTED.png").convert() + +current_level = level_one + +karakter_bal = pygame.image.load("charpixel_left.png").convert_alpha() +karakter_jobb = pygame.image.load("charpixel_rightside.png").convert_alpha() + +new_game = pygame.transform.smoothscale(new_game, (160, 50)) +con = pygame.transform.smoothscale(con, (160, 50)) +reset = pygame.transform.smoothscale(reset, (160, 50)) +save = pygame.transform.smoothscale(save, (160, 50)) +settings = pygame.transform.smoothscale(settings, (160, 50)) +quit_btn = pygame.transform.smoothscale(quit_btn, (160, 50)) +karakter_jobb = pygame.transform.smoothscale(karakter_jobb, (160, 160)) +karakter_bal = pygame.transform.smoothscale(karakter_bal, (160, 160)) + +new_game_rect = new_game.get_rect(center=(460, 180)) +continue_rect = con.get_rect(center=(455, 230)) +reset_rect = reset.get_rect(center=(455, 280)) +save_rect = save.get_rect(center=(455, 330)) +settings_rect = settings.get_rect(center=(455, 380)) +quit_rect = quit_btn.get_rect(center=(455, 430)) + +# SCALE LEVEL +def load_level(level_surface): + rect = level_surface.get_rect() + level_scaled = pygame.transform.scale(level_surface, (rect.width, GAME_HEIGHT)) + return level_scaled, level_scaled.get_rect() + +level, level_rect = load_level(current_level) + +KARAKTER_SPEED = 5 + +kamera_x = 0 +kamera_y = 0 + +current_sprite = karakter_jobb +karakter_rect = karakter_jobb.get_rect() + +karakter_x = 200 +karakter_y = level_rect.height - karakter_rect.height + +while True: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + exit() + + if state == "menu": + if event.type == pygame.MOUSEBUTTONDOWN: + if new_game_rect.collidepoint(event.pos): + state = "game" + current_level = level_one + level, level_rect = load_level(current_level) + + karakter_x = 200 + karakter_y = level_rect.height - karakter_rect.height + kamera_x = 0 + kamera_y = 0 + + keys = pygame.key.get_pressed() + + if state == "game": + if keys[pygame.K_d]: + karakter_x += KARAKTER_SPEED + current_sprite = karakter_jobb + + if keys[pygame.K_a]: + karakter_x -= KARAKTER_SPEED + current_sprite = karakter_bal + + karakter_x = max(0, min(karakter_x, level_rect.width - karakter_rect.width)) + karakter_y = max(0, min(karakter_y, level_rect.height - karakter_rect.height)) + + + if karakter_x <= 0: + current_level = level_two + level, level_rect = load_level(current_level) + karakter_x = level_rect.width - karakter_rect.width - 5 + + elif karakter_x >= level_rect.width - karakter_rect.width: + current_level = level_two + level, level_rect = load_level(current_level) + karakter_x = 5 + + + kamera_x = karakter_x + karakter_rect.width // 2 - GAME_WIDTH // 2 + kamera_y = karakter_y + karakter_rect.height // 2 - GAME_HEIGHT // 2 + + kamera_x = max(0, min(kamera_x, level_rect.width - GAME_WIDTH)) + kamera_y = max(0, min(kamera_y, level_rect.height - GAME_HEIGHT)) + + if state == "menu": + screen.blit(menu_background, (0, 0)) + screen.blit(new_game, new_game_rect) + screen.blit(reset, reset_rect) + screen.blit(save, save_rect) + screen.blit(settings, settings_rect) + screen.blit(quit_btn, quit_rect) + screen.blit(con, continue_rect) + + elif state == "game": + screen.fill((0, 0, 0)) + screen.blit(level, (-kamera_x, -kamera_y)) + + karakter_screen_x = karakter_x - kamera_x + karakter_screen_y = karakter_y - kamera_y + + screen.blit(current_sprite, (karakter_screen_x, karakter_screen_y)) + + pygame.display.flip() + clock.tick(60)