я пишу примитивную игру и в конце главного цикла, как и полагается, обновляю экран функцией
pygame.display.update()
, однако экран не обновляется, пока я не начну крутить курсор мыши по окну или не вынесу часть окна за область монитора. В чем проблема?
сам код:
from entity import *
from cfg import *
pygame.display.set_caption('runner')
player = player()
clock = pygame.time.Clock()
FPS = 60
clock.tick(FPS)
pygame.init()
pygame.display.set_caption('runner')
def main():
run = True
while run:
for e in pygame.event.get():
if e.type == pygame.QUIT:
run = False
display.fill((100, 100, 100))
player.render()
player.move()
pygame.display.update()
if __name__ == '__main__':
main()
код файла entity.py:
from cfg import *
class player:
def __init__(self, posX=50, posY=50, size=20, moveSpeed=5, motion='none'):
self.posX = posX
self.posY = posY
self.size = size
self.moveSpeed = moveSpeed
self.motion = motion
def move(self):
motion = 'none'
for e in pygame.event.get():
keys = pygame.key.get_pressed()
if keys[pygame.K_UP or pygame.K_w]:
motion = 'up'
if keys[pygame.K_DOWN or pygame.K_s]:
motion = 'down'
if e.type == pygame.KEYUP:
motion = 'none'
if motion == 'up':
if self.posY >= self.size * 2:
self.posY -= self.moveSpeed
elif motion == 'down':
if self.posY <= screenHeight - self.size * 2:
self.posY += self.moveSpeed
def render(self):
pygame.draw.circle(display, (255, 255, 255), (self.posX, self.posY), self.size)
код файла cfg.py
import pygame
screenWidth = 600
screenHeight = 300
display = pygame.display.set_mode((screenWidth, screenHeight))