93 lines
2.4 KiB
Python
93 lines
2.4 KiB
Python
import sys
|
|
|
|
import pygame
|
|
|
|
from map import generate_map
|
|
|
|
pygame.init()
|
|
|
|
screen_width = 800
|
|
screen_height = 600
|
|
screen = pygame.display.set_mode((screen_width, screen_height))
|
|
clock = pygame.time.Clock()
|
|
|
|
player_skin = pygame.image.load("player.png")
|
|
# load the player image
|
|
player_image = pygame.image.load("player.png").convert_alpha()
|
|
|
|
# set the size of the hitbox
|
|
hitbox_width = 16
|
|
hitbox_height = 32
|
|
|
|
# create a surface to draw the hitbox on
|
|
hitbox_surface = pygame.Surface((hitbox_width, hitbox_height), pygame.SRCALPHA)
|
|
|
|
# draw the hitbox outline
|
|
outline_color = (255, 0, 0) # red outline color
|
|
outline_width = 5 # outline width in pixels
|
|
pygame.draw.rect(
|
|
hitbox_surface, outline_color, hitbox_surface.get_rect(), outline_width
|
|
)
|
|
|
|
# scale the player image to the size of the hitbox
|
|
player_skin = pygame.transform.scale(player_image, (hitbox_width, hitbox_height))
|
|
player_x = 0
|
|
player_y = 0
|
|
player_speed = 5
|
|
player_direction = "right"
|
|
|
|
map_data = generate_map(screen_width * 5, screen_height)
|
|
|
|
while True:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
pygame.quit()
|
|
sys.exit()
|
|
|
|
keys = pygame.key.get_pressed()
|
|
|
|
if keys[pygame.K_LEFT]:
|
|
player_x -= player_speed
|
|
|
|
if keys[pygame.K_RIGHT]:
|
|
player_x += player_speed
|
|
|
|
if keys[pygame.K_DOWN]:
|
|
# Handle crouching
|
|
...
|
|
|
|
if keys[pygame.K_SPACE]:
|
|
# Handle jumping
|
|
...
|
|
|
|
if keys[pygame.K_LSHIFT]:
|
|
# Handle running
|
|
...
|
|
|
|
# Handle aiming and firing the grapple hook using Pygame's mouse functions
|
|
|
|
screen.fill((255, 255, 255))
|
|
|
|
# Draw the map using the map_data generated with perlin noise
|
|
tile_size = 16
|
|
for y, row in enumerate(map_data):
|
|
for x, noise_value in enumerate(row):
|
|
if noise_value > 0.3:
|
|
pygame.draw.rect(
|
|
screen,
|
|
(0, 0, 0),
|
|
(x * tile_size, y * tile_size, tile_size, tile_size),
|
|
)
|
|
|
|
# Draw the player's skin and hitbox on the screen
|
|
screen.blit(player_skin, (player_x, player_y))
|
|
# pygame.draw.rect(
|
|
# screen, (255, 0, 0, 128), (player_x, player_y, hitbox_width, hitbox_height)
|
|
# )
|
|
|
|
# blit the hitbox surface onto the player surface
|
|
player_surface = pygame.Surface((hitbox_width, hitbox_height), pygame.SRCALPHA)
|
|
player_surface.blit(hitbox_surface, (0, 0))
|
|
|
|
pygame.display.update()
|
|
clock.tick(60)
|