From ac1b10fd01b9f59dbe939cd02fc56fe6aa26f295 Mon Sep 17 00:00:00 2001 From: EKNr1 Date: Fri, 29 Dec 2023 21:10:43 +0100 Subject: [PATCH] It is now possible to yeet the cow's head by pressing space. --- cowyeet.py | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/cowyeet.py b/cowyeet.py index 44bb354..0fa938c 100644 --- a/cowyeet.py +++ b/cowyeet.py @@ -5,6 +5,7 @@ import pygame import numpy from tools import pg # if you import pg from tools, you dont need to init pygame. from tools.file_dict import FileDict +from physics.parabelfunc import berechneflugbahn # integrated settings (I dont trust my own settings class.) @@ -85,12 +86,15 @@ def set_rot_point(img, pos): # game logic def start_level(lvl: int): global level + global cow_throwable page_switch("ingame") level = lvl load_level(lvl) + cow_throwable = True + def load_level(lvl): global level_data @@ -135,6 +139,27 @@ def blit_block(block, position: tuple): else: level_surface.blit(texture_not_found, position) + + +def yeet_cow(): + global cow_throwable + global cow_flying + global cow_flight_path + global cow_flight_step + + if cow_throwable: + cow_throwable = False + + lvl_x, lvl_y = level_data.level_size + lvl_x *= 40 + lvl_x *= settings["level_size_multiplier"] + lvl_y *= 40 + lvl_y *= settings["level_size_multiplier"] + + cow_flight_path = berechneflugbahn(lvl_x, lvl_y, lvl_x + 100, 34, 128, xstep=10) + + cow_flying = True + cow_flight_step = 0 # /game logic @@ -151,6 +176,11 @@ def level_selector_page(): def ingame_page(): + global cow_flight_step + global cow_position + global cow_flying + global cow_throwable + screen.fill(summer_sky) screen.blit(level_surface, (0, screen.get_height() - level_surface.get_height())) @@ -163,6 +193,19 @@ def ingame_page(): screen.blit(catapult_frame_texture, (cx, cy)) screen.blit(catapult_arm_texture, (cx + 27 * 5 * lvl_size, cy - 35 * 5 * lvl_size)) + if cow_flying: + cow_flight_step += 1 + + x = cow_flight_path[cow_flight_step * 2] + y = cow_flight_path[cow_flight_step * 2 + 1] + cow_position = (x, screen.get_height() - y - 64 * 5 * settings["level_size_multiplier"]) + + if cow_flight_step * 2 == len(cow_flight_path) - 2: + cow_flying = False + cow_throwable = True + + screen.blit(cow, cow_position) + def page_selector(): if page == "main_menu": @@ -229,10 +272,17 @@ def get_events(): last_frame_mouse_pressed = True - if event.type == pygame.VIDEORESIZE: + elif event.type == pygame.VIDEORESIZE: window_size_reload(event.size) + elif event.type == pygame.KEYDOWN: + key = event.key + + if key == pygame.K_SPACE: + if page == "ingame": + yeet_cow() + def loop(): global last_frame_mouse_pressed @@ -270,6 +320,11 @@ level = None level_data = None lvl_width = None level_surface = None +cow_throwable = False +cow_flying = False +cow_position = (0, 0) +cow_flight_path = [] +cow_flight_step = 0 # pygame objects @@ -290,6 +345,8 @@ catapult_frame_texture = load_texture("textures/catapult/frame.png") catapult_frame_texture = pygame.transform.scale(catapult_frame_texture, (66 * 5 * settings["level_size_multiplier"], 31 * 5 * settings["level_size_multiplier"])) catapult_arm_texture = load_texture("textures/catapult/arm.png") catapult_arm_texture = pygame.transform.scale(catapult_arm_texture, (25 * 5 * settings["level_size_multiplier"], 53 * 5 * settings["level_size_multiplier"])) +cow = load_texture("textures/cow/head.png") +cow = pygame.transform.scale(cow, (64 * 5 * settings["level_size_multiplier"], 64 * 5 * settings["level_size_multiplier"])) stone_block_texture = load_block_texture("textures/terrain/stone_01.png") dirt_block_texture = load_block_texture("textures/terrain/dirt_01.png") grass_block_texture = load_block_texture("textures/terrain/grass_01.png")