Python 如何在pygame中设置矩形动画,使其永远从一侧移动到另一侧? 导入pygame pygame.init() #这个游戏叫做堆叠能量塔 dis=pygame.display.set_模式((500500)) x=50 y=50 高度=40 宽度=100 运行=真 passs=True 运行时: 定义动画(路径、x、y、高度、宽度): 而passs: 如果x=500级: x-=水平 pygame.draw.rect(x,y,(255,0,0),高度,宽度) pygame.fill() pygame.时间延迟(100) 对于pygame.event.get()中的事件: 如果event.type==pygame.QUIT: 运行=错误 keys=pygame.key.get_pressed() 如果键[pygame.K_Space]: passs=False 其他: 设置动画(路径、x、y、高度、宽度)

Python 如何在pygame中设置矩形动画,使其永远从一侧移动到另一侧? 导入pygame pygame.init() #这个游戏叫做堆叠能量塔 dis=pygame.display.set_模式((500500)) x=50 y=50 高度=40 宽度=100 运行=真 passs=True 运行时: 定义动画(路径、x、y、高度、宽度): 而passs: 如果x=500级: x-=水平 pygame.draw.rect(x,y,(255,0,0),高度,宽度) pygame.fill() pygame.时间延迟(100) 对于pygame.event.get()中的事件: 如果event.type==pygame.QUIT: 运行=错误 keys=pygame.key.get_pressed() 如果键[pygame.K_Space]: passs=False 其他: 设置动画(路径、x、y、高度、宽度),python,pygame,Python,Pygame,我不明白为什么我的代码不起作用。pygame窗口上不会弹出任何内容。我正在尝试设置矩形的动画,使其从x位置移动到新的x位置,连续地来回移动,而不是沿y方向移动。如何修复此问题?您的代码有太多问题,很难说从哪里开始 首先,在循环中一次又一次地定义函数,这是不高效的 其次,在没有退出条件的情况下运行了一个不必要的while循环 第三,您向draw.rect()函数传递了错误的参数 第四,你所有的条件都是不正确的 第五,pygame.fill()不是函数 第六,不要运行时间。延迟,使用时钟。勾选(60

我不明白为什么我的代码不起作用。pygame窗口上不会弹出任何内容。我正在尝试设置矩形的动画,使其从x位置移动到新的x位置,连续地来回移动,而不是沿y方向移动。如何修复此问题?

您的代码有太多问题,很难说从哪里开始

首先,在循环中一次又一次地定义函数,这是不高效的

其次,在没有退出条件的情况下运行了一个不必要的while循环

第三,您向
draw.rect()
函数传递了错误的参数

第四,你所有的条件都是不正确的

第五,
pygame.fill()
不是函数

第六,不要运行
时间。延迟
,使用
时钟。勾选(60)

第七,您没有更新屏幕

这是正确的代码

import pygame
pygame.init()
#this game is called stack power tower

dis = pygame.display.set_mode((500, 500))
x = 50
y = 50
height = 40
width = 100
run = True
passs = True
while run:
    def animate(passs, x, y, height, width):
        while passs:
            if x <= vel:
                x+=vel
                pygame.draw.rect(x, y, (255, 0, 0),height, width)
                pygame.fill()
            elif x >= 500-vel:
                x-=vel
                pygame.draw.rect(x, y, (255, 0, 0), height, width)
                pygame.fill()
    pygame.time.delay(100)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
    keys = pygame.key.get_pressed()
    if keys[pygame.K_Space]:
        passs=False
    else:
        animate(passs, x, y, height, width)
导入pygame
pygame.init()
dis=pygame.display.set_模式((500500))
x=50
y=50
高度=40
宽度=100
运行=真
水平=10
clock=pygame.time.clock()
方向=‘右’
定义动画(x、y、高度、宽度、方向):
如果x<0:
方向=‘右’
elif x>500:
方向=‘左’
如果方向=='右':
x+=vel
elif方向==“左”:
x-=水平
pygame.draw.rect(dis,(255,0,0),pygame.rect(x,y,宽度,高度))
返回x,方向
运行时:
对于pygame.event.get()中的事件:
如果event.type==pygame.QUIT:
运行=错误
keys=pygame.key.get_pressed()
分布填充((0,0,0))
x、 方向=设置动画(x、y、高度、宽度、方向)
pygame.display.flip()
时钟滴答(60)
pygame.quit()
在继续寻求帮助之前,请了解更多关于python和pygame的信息


这些都非常有用。

我还不熟悉pygame和stackoverflow,因此如果您有任何建议,我应该如何重新格式化或改写问题或代码,使其更加清晰,这将有助于以后的问题。谢谢,谢谢。我看了文档,你是对的,我的代码非常糟糕。在再次询问之前,我会看一看这些文件并做进一步研究。:)请验证我的答案。你的答案很好,我刚刚编辑了一条elif语句,以防止块从屏幕上消失
import pygame
pygame.init()

dis = pygame.display.set_mode((500, 500))
x = 50
y = 50
height = 40
width = 100
run = True
vel = 10
clock = pygame.time.Clock()
direction = 'Right'

def animate(x, y, height, width, direction):
    if x < 0:
        direction = 'Right'

    elif x > 500:
        direction = 'Left'

    if direction == 'Right':
        x += vel

    elif direction == 'Left':
        x -= vel

    pygame.draw.rect(dis, (255, 0, 0), pygame.Rect(x, y, width, height))

    return x, direction

while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
    keys = pygame.key.get_pressed()

    dis.fill((0, 0, 0))


    x, direction = animate(x, y, height, width, direction)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()