Игра на pygame работает под Linux, но не под Windows

Который раз сталкиваюсь с проблемами не работы кода из-под Windows, но прекрасного функционирования в Linux. Имеется главный main.py с некоторыми функциями и player.py. По интерфейсу (счетчик FPS) видно, что игра не зависла и функционирует, но при этом передвижение невозможно, а если тыкнуть по окну pygame, Windows начнет ругатся на то, что игра зависла.

Вот код main.py:

import pygame, math, map, music, loading, keyinput, threading, time
from settings import *
from player import Player
from raycasting import rayCasting
from drawing import Drawing

pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("PL: Forbidden Knowlage PRE-ALPHA v0.0.6a-04")
icon = pygame.image.load("appdata/icon.png")
pygame.display.set_icon(icon)

clock = pygame.time.Clock()

drawing = Drawing(screen)
player = Player()

def menu():
    global player
    
    try:
        menu = pygame.mixer.Sound("appdata/music/mainMenu.ogg")
        menu.set_volume(0.4)
        menu.play(loops= 1000000)
    except:
        print("-----No main menu music found or importing can`t be completed-----")

    loadGame = drawing.mainMenu(clock)

    try:
        menu.stop()
    except:
        pass

    if loadGame:
        player = loading.loadGame()

        playerMap = player.getMap()

        map.loadMap(playerMap, player)
    else:
        map.loadMap(1, player, True)

def gameMusic():
    try:
        musicDict = music.genMusicDict('appdata/music/inGameMusic/')

        if musicDict == None:
            raise SystemExit()

        while True:
            for i in range(musicDict.__len__()):
                musicDict[i].play()
                musicDict[i].set_volume(0.2)
    
                length = musicDict[i].get_length()
    
                time.sleep(length)
    except:
        pass

def main():
    while True:
        clock.tick(fps)
        
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                loading.saveGame(player)
                pygame.mixer_music.stop()
                quit()
        player.movement()

        map.cahngeMap(player)

        keyinput.listenKeys(player)

        drawing.background()
        drawing.raycast(player.pos, player.angle)
        drawing.fps(clock)
        drawing.playerPosition(player)
        drawing.playerHP(player)

        pygame.display.flip()
        pygame.display.update()

if __name__ == '__main__':
    menu()
    
    gameThread = threading.Thread(target=main)
    musicThread = threading.Thread(target=gameMusic, daemon= True)

    musicThread.start()
    gameThread.start()

Чтобы максимально не осталось вопросов по, к примеру, музыкальному скрипту скажу, что он-то отрабатывает на все бабки. Как и интерфейс.

Вот player.py

from settings import *
import pygame
import math

class Player:
    def __init__(self):
        print("1")
        self.map = 1
        self.x, self.y = (0, 0)
        self.angle = playerAngle
        self.hp = 100
        self.maximumHealth = 100
        self.hpBarLength = 200
        self.hpBarRatio = self.maximumHealth / self.hpBarLength

    def pos(self):
        return self.x, self.y

    def getPos(self):
        return [int(self.x), int(self.y)]

    def getPosX(self):
        return self.x

    def getPosY(self):
        return self.y

    def setPos(self, pos):
        self.x, self.y = pos

    def getMap(self):
        return self.map

    def setMap(self, map):
        self.map = map
    
    def getHP(self):
        return self.hp

    def removeHP(self, hp):
        if self.hp > 0:
            self.hp -= hp
        elif self.hp <= 0:
            self.hp = 0

    def addHP(self, hp):
        if self.hp < self.maximumHealth:
            self.hp += hp
        elif self.hp >= self.maximumHealth:
            self.hp = self.maximumHealth

    def movement(self):
        speedUp = 0
        sin_a = math.sin(self.angle)
        cos_a = math.cos(self.angle)

        keys = pygame.key.get_pressed()

        if keys[pygame.K_LSHIFT]:
            speedUp = 2
        if keys[pygame.K_w]:
            print("1")
            self.x += (playerSpeed + speedUp) * cos_a 
            self.y += (playerSpeed + speedUp) * sin_a
        if keys[pygame.K_s]:
            self.x -= (playerSpeed + speedUp) * cos_a
            self.y -= (playerSpeed + speedUp) * sin_a

        if keys[pygame.K_a]:
            self.angle -= angleCoeff
        if keys[pygame.K_d]:
            self.angle += angleCoeff

Ответы (0 шт):