当前位置: 首页 > 面试题库 >

为什么PyGame动画在闪烁

蒋胡非
2023-03-14
问题内容

所以我运行代码,它就开始不正常了。我不熟悉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()

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


问题答案:

问题是由多次调用
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)显示时,播放器位于背景上方。



 类似资料:
  • 你好,我目前正在开发一款生存射击游戏,我目前对一些事情感到沮丧。一个是我的游戏动画不起作用。我这里有播放器类的代码: 如果您想了解我的任何其他问题/挫折,请说出来。任何帮助将不胜感激。谢谢。

  • 我试图用pyplay制作一个游戏,我几乎完成了,但我想让被画在墙上的盒子不闪烁,这些红色的盒子在整个游戏中闪烁,我不想让它们闪烁,最后,我在一个if条件下调用player碰撞函数,在这里每当我制作新的碰撞器时,我每次都要在if条件下添加函数,我想要的是碰撞器对象自动调用这个函数,而不需要我在if语句中为碰撞器的每个实例调用它对象。请指导我如何这样做。

  • demo 为什么这个动画一直在抖动?

  • Python 是当下最为火热,且功能最为全面的一门编程语言。Python 之所以深受大家喜爱, 除了可以被应用到“人工智能”领域之外,还可以延伸到数据分析、Web 开发、自动化测试、自然语言处理、游戏开发等各个领域。这一切的实现得益于 Python 有一个强大的第三方库(网址: https://pypi.org/),这个第三方库相当于一个手机软件市场,允许我们随意下载各式各样的软件包,并且开箱即用

  • 调用我原以为球会移动,但它没有移动。 我在想,也许将定义为rect对象并将其传递给椭圆以将球绘制到屏幕上有问题。 我将bpos设置为rect对象,然后将其传递为绘制椭圆的原因: 这是因为最终,如果可能的话,当需要将球保持在边界内时,我希望在更新方法中使用pygame Rect属性(上、下、左、右)。 在游戏逻辑中,你可以看到我在打电话: ball.draw(屏幕)ball.update() 如果您

  • 我正在努力学习pyGame。我遇到了一个问题。我有一个矩形,可以用箭头按钮移动。然后我创建了另一个线程,它生成可以拾取的较小矩形。但是当我运行我的游戏时,生成的小矩形闪烁太多。我怎样才能让他们稳定?我想我不太明白这里的时间概念。有人能给我解释一下吗 我的代码: