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窗口上没有弹出任何内容。我试图动画矩形从x-pos移动到新的x-pos,连续来回,而不是在y方向。我该如何解决这个问题?
答案 0 :(得分:1)
你的代码有很多问题,很难说从哪里开始。
首先,您在循环中一次又一次地定义了一个函数,这是无效的
其次,你运行了一个没有退出条件的不需要的while循环
第三,您将错误的参数传递给draw.rect()
函数
第四,所有条件都不正确
第五,pygame.fill()
不是函数。
第六,不要运行time.Delay
,请使用clock.tick(60)
。
第七,你没有更新屏幕。
这是正确的代码。
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()
在您继续寻求帮助之前,请先了解有关python和pygame的更多信息。
pygame docs非常有用。