import pygame
import math
pygame.init()

screen_surface = pygame.display.set_mode((800, 600))

def load_image(path, position):
    image = pygame.image.load(path)
    surface = image.convert()
    rect = surface.get_rect(center=position)
    return [image, surface,rect]

def draw_image(image_list):
    _, surface, rect = image_list
    screen_surface.blit(surface, rect)

def set_position_image(image_list, position):
    image, surface, rect = image_list
    rect = surface.get_rect(center=position)
    return [image, surface, rect]

def manage_player_movement(player_pos):
    STEP = 10
    x = 0
    y = 0

    state_of_keys = pygame.key.get_pressed()
    if state_of_keys[pygame.K_w]:
        y -= STEP
    if state_of_keys[pygame.K_d]:
        x += STEP
    if state_of_keys[pygame.K_s]:
        y += STEP
    if state_of_keys[pygame.K_a]:
        x -= STEP
    if x and y:
        x //= math.sqrt(2)
        y //= math.sqrt(2)
    if 800 > (player_pos[0] + x) > 0:
        player_pos[0] += x
    if 600 > (player_pos[1] + y) > 0:
        player_pos[1] += y
    return player_pos

clock = pygame.time.Clock()
player_pos = [400, 300]
player = load_image("player.png", player_pos)

BACKGROUND_COLOR = [0, 0, 0]

game_status = True
while game_status:
    events = pygame.event.get()
    for event in events:
        if event.type == pygame.QUIT:
            game_status = False
    manage_player_movement(player_pos)
    player = set_position_image(player, player_pos)
    screen_surface.fill(BACKGROUND_COLOR)
    draw_image(player)
    pygame.display.update()
    clock.tick(60)
pygame.quit()
