当我试图运行这个程序时,其中一个图像没有闪烁(没有条件),但另一个图像(我使其只在单击鼠标左键时显示)闪烁,我真的不知道如何修复它,所以我的程序如下:

import pygame, sys
from pygame.locals import *

pygame.init()

screen_size = (900, 600)#game size

screen = pygame.display.set_mode(screen_size,0, 32)

clock = pygame.time.Clock()

bullet = pygame.image.load('bullet_right.png')

display = pygame.Surface((300,200))

displaybullet = False

while True:
    display.fill((255,255,255))

    display.blit(bullet, (0,100))#no flicker :)
    
    mouse_x, mouse_y = pygame.mouse.get_pos()

    mouse_info = pygame.mouse.get_pressed()#0.lmb, 1.scroll thing 2.rmb

    print(mouse_info[0])
    
    for event in pygame.event.get():
        if event.type == QUIT:#stops the program when press exit
            pygame.quit()
            sys.exit()

        if mouse_info[0] == True:
            displaybullet = True
            #display.blit(bullet, (100,100))
        if displaybullet:
            display.blit(bullet, (100,100))#flicker:(
            
    surf = pygame.transform.scale(display, screen_size)
    screen.blit(surf, (0,0))
    
    pygame.display.update()

    clock.tick(60)

我先是试着取下Clock.tick(60),但似乎不起作用.

推荐答案

这是一个缩进的问题.您需要在应用程序循环中绘制图像,而不是在事件循环中.应用程序循环每帧执行一次,但事件循环仅在事件发生时执行.如果在事件循环中绘制图像,则只在事件发生时绘制图像,而不是每帧绘制一次.这会导致闪烁.

displaybullet = False

while True:
    display.fill((255,255,255))
    display.blit(bullet, (0,100))#no flicker :)
    
    mouse_x, mouse_y = pygame.mouse.get_pos()
    mouse_info = pygame.mouse.get_pressed()#0.lmb, 1.scroll thing 2.rmb

    print(mouse_info[0])
    
    for event in pygame.event.get():
        if event.type == QUIT:#stops the program when press exit
            pygame.quit()
            sys.exit()

        if mouse_info[0] == True:
            displaybullet = True
            #display.blit(bullet, (100,100))

    # INDENTAITON
    #<--|
    if displaybullet:
        display.blit(bullet, (100,100))#flicker:(
            
    surf = pygame.transform.scale(display, screen_size)
    screen.blit(surf, (0,0))
    pygame.display.update()
    clock.tick(60)

Python相关问答推荐

如何将我的位置与光强度数据匹配到折射图案曲线中?

使用from_pandas将GeDataFrame转换为polars失败,ArrowType错误:未传递numpy. dype对象

如何计算列表列行之间的公共元素

将HLS纳入媒体包

三个给定的坐标可以是矩形的点吗

2维数组9x9,不使用numpy.数组(MutableSequence的子类)

try 与gemini-pro进行多轮聊天时出错

删除最后一个pip安装的包

在Pandas DataFrame操作中用链接替换'方法的更有效方法

numpy卷积与有效

梯度下降:简化要素集的运行时间比原始要素集长

为一个组的每个子组绘制,

CommandeError:模块numba没有属性generated_jit''''

启动带有参数的Python NTFS会导致文件路径混乱

基于Scipy插值法的三次样条系数

pysnmp—lextudio使用next()和getCmd()生成器导致TypeError:tuple对象不是迭代器''

Odoo16:模板中使用的docs变量在哪里定义?

Cython无法识别Numpy类型

来自Airflow Connection的额外参数

将字节序列解码为Unicode字符串