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、高度、宽度)
我不明白为什么我的代码不起作用。pygame窗口上不会弹出任何内容。我正在尝试设置矩形的动画,使其从x位置移动到新的x位置,连续地来回移动,而不是沿y方向移动。如何修复此问题?您的代码有太多问题,很难说从哪里开始 首先,在循环中一次又一次地定义函数,这是不高效的 其次,在没有退出条件的情况下运行了一个不必要的while循环 第三,您向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
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()