我一直在我的Mac电脑上试用Pygame游戏库,当我try 在游戏窗口周围移动一个图像时,由于某种原因,它不会被删除.

我试图运行的代码:

import pygame

pygame.init()

# Creates the screen.
screen = pygame.display.set_mode([800, 600])
pygame.display.set_caption("Space Invaders")
icon = pygame.image.load("ufo.png")
pygame.display.set_icon(icon)

# Player sprite.
playerImg = pygame.image.load("player.png")
playerX = 350
playerY = 500
playerX_change = 0

# Function to draw the player
def player(x, y):
  screen.blit(playerImg, (playerX, playerY))

# Game loop
running = True
while running:
  for event in pygame.event.get():
    if event.type == pygame.QUIT:
        running = False
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_LEFT:
            playerX_change = -0.1
            print("Left key is pressed!")
        if event.key == pygame.K_RIGHT:
            playerX_change = 0.1
            print("Right key is pressed!")

    if event.type == pygame.KEYUP:
        if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
            playerX_change = 0

playerX += playerX_change

我曾try 在我的电脑上运行类似的代码,它的工作原理与预期一致.我不知道该怎么办.

推荐答案

您必须在每一帧中清除屏幕:

clock = pygame.time.Clock()

running = True
while running:
    clock.tick(100)

    # event loop
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    # update objects
    speed = 1
    keys = pygame.key.get_pressed()
    playerX += (keys[pygame.K_RIGHT] - keys[pygame.K_LEFT]) * speed

    # clear screen
    screen.fill(0)

    # draw scene
    player(playerX, playerY)

    # update display
    pygame.dispaly.flip()

典型的PyGame应用程序循环必须:

Python相关问答推荐

Pystata:从Python并行运行stata实例

运行总计基于多列pandas的分组和总和

如何访问所有文件,例如环境变量

使可滚动框架在tkinter环境中看起来自然

什么相当于pytorch中的numpy累积ufunc

用Python解密Java加密文件

Pandas Loc Select 到NaN和值列表

如何使用Pandas DataFrame按日期和项目汇总计数作为列标题

matplotlib + python foor loop

干燥化与列姆化的比较

使用字典或列表的值组合

当单元测试失败时,是否有一个惯例会抛出许多类似的错误消息?

如何使用正则表达式修改toml文件中指定字段中的参数值

用两个字符串构建回文

Polars表达式无法访问中间列创建表达式

Django.core.exceptions.SynchronousOnlyOperation您不能从异步上下文中调用它-请使用线程或SYNC_TO_ASYNC

BeatuifulSoup从欧洲志愿者服务中获取数据和解析:一个从EU-Site收集机会的小铲子

用0填充没有覆盖范围的垃圾箱

一维不匹配两个数组上的广义ufunc

查找数据帧的给定列中是否存在特定值