首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Pygame -在pygame窗口周围移动一个方块,但在改变方向时无法停止当前的移动,导致方块沿对角线移动。

Pygame是一个用于开发2D游戏和多媒体应用程序的Python库。它提供了丰富的功能和工具,使开发者能够轻松创建交互式的游戏体验。

针对你提到的问题,方块沿对角线移动的原因是在改变方向时无法停止当前的移动。这是因为在每次循环中,方块都会根据当前的速度进行移动,而无论是否改变了方向。为了解决这个问题,我们可以使用一个变量来跟踪方块的当前速度,并在改变方向时将其设置为零。

下面是一个示例代码,展示了如何在pygame窗口周围移动一个方块,并在改变方向时停止当前的移动:

代码语言:txt
复制
import pygame
import sys

# 初始化pygame
pygame.init()

# 设置窗口尺寸
size = width, height = 800, 600
screen = pygame.display.set_mode(size)

# 设置方块的初始位置和速度
block_pos = [width // 2, height // 2]
block_speed = [0, 0]

# 游戏主循环
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

        # 检测按键事件
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                block_speed[0] = -1  # 向左移动
                block_speed[1] = 0   # 停止垂直移动
            elif event.key == pygame.K_RIGHT:
                block_speed[0] = 1   # 向右移动
                block_speed[1] = 0   # 停止垂直移动
            elif event.key == pygame.K_UP:
                block_speed[0] = 0   # 停止水平移动
                block_speed[1] = -1  # 向上移动
            elif event.key == pygame.K_DOWN:
                block_speed[0] = 0   # 停止水平移动
                block_speed[1] = 1   # 向下移动

    # 更新方块的位置
    block_pos[0] += block_speed[0]
    block_pos[1] += block_speed[1]

    # 绘制方块
    screen.fill((0, 0, 0))
    pygame.draw.rect(screen, (255, 255, 255), pygame.Rect(block_pos[0], block_pos[1], 50, 50))

    # 更新屏幕
    pygame.display.flip()

在这个示例中,我们使用了一个名为block_speed的列表来存储方块的速度。在按下方向键时,我们将相应的速度分量设置为非零值,以控制方块的移动方向。当方向键释放时,我们将速度分量设置为零,从而停止方块的移动。

这只是一个简单的示例,你可以根据自己的需求进行修改和扩展。希望这能帮助到你!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券