一尘不染

为什么PyGame动画在闪烁

python

所以我运行代码,它就开始不正常了。我不熟悉pygame。
代码如下:

import pygame

pygame.init()
# Screen (Pixels by Pixels (X and Y (X = right and left Y = up and down)))
screen = pygame.display.set_mode((1000, 1000))
running = True
# Title and Icon
pygame.display.set_caption("Space Invaders")
icon = pygame.image.load('Icon.png')
pygame.display.set_icon(icon)
# Player Icon/Image
playerimg = pygame.image.load('Player.png')
playerX = 370
playerY = 480

def player(x, y):
    # Blit means Draw
    screen.blit(playerimg, (x, y))


# Game loop (Put all code for pygame in this loop)
while running:
    screen.fill((225, 0, 0))
    pygame.display.update()

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    # if keystroke is pressed check whether is right or left
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                print("Left arrow is pressed")

            if event.key == pygame.K_RIGHT:
                print("Right key has been pressed")


            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                print("kEYSTROKE RELEASED")

    # RGB (screen.fill) = red green blue

    player(playerX, playerY)
    pygame.display.update()

这张图片并不是我不能发布视频的那个,但它确实是我的代码的作用


阅读 176

收藏
2020-12-20

共1个答案

一尘不染

问题是由多次调用
pygame.display.update更新().
在应用程序循环结束时更新显示就足够了。
多次调用pygame.display.update更新()orpygame.display.flip游戏机()原因
忽隐忽现。
删除对的所有呼叫pygame.display.update()从你的代码,但调用一次
在应用程序循环结束时:

while running:
    screen.fill((225, 0, 0))
    # pygame.display.update() <---- DELETE

    # [...]

    player(playerX, playerY)
    pygame.display.update()

如果在之后更新显示屏幕填充(),将显示在短时间内填充了背景色。然后玩家被抽中
blit)显示时,播放器位于背景上方。

2020-12-20