Задать вопрос
@nosochek
самоучка, шакал(иногда картошечка)

Почему функция pygame.display.update() не обновляет мой экран?

я пишу примитивную игру и в конце главного цикла, как и полагается, обновляю экран функцией 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))
  • Вопрос задан
  • 2836 просмотров
Подписаться 1 Простой 10 комментариев
Решения вопроса 1
IDzone-x
@IDzone-x
Костыли сила паттерны могила
Почему здесь нет цикла.
он не работает по этой причине
Посмотри етот курс.
https://younglinux.info/pygame
Нужно занести в цыкл управление , обновление и отрисовку.
И если ти любитель видеокурсов))
Могу порекомендовать курс Гоши дударя по pygame.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Araben
может должно быть так? не знаю, что должен выдавать pygame.key.get_pressed()
if keys  in [pygame.K_UP,pygame.K_w]:
    motion = 'up'
if keys in [pygame.K_DOWN,pygame.K_s]:
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы