It is now possible to yeet the cow's head by pressing space.

This commit is contained in:
The Wobbler 2023-12-29 21:10:43 +01:00
parent 82bffd6caf
commit ac1b10fd01

View file

@ -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")