我正在开发一款平台游戏,试图让我的敌人来回移动一定距离。基本上我需要找到一种方法来将dis增加到一定数量,将其减少到零,然后再将其再次增加到相同的数字。它需要无限期地继续这样做。现在它增加到10但然后停留在那里。任何帮助将非常感激。 (注意:此代码只是一个测试版本,所有"自我"已被删除。)
speed = 1
dis = 0
while True:
if speed > 0:
dis += 1
if dis > 10:
speed = -1
dis -= 1
if dis < 0:
speed = 1
print(dis)
答案 0 :(得分:2)
你为什么不尝试分手?根据当前距离,设定你的速度。然后根据当前的速度,增加或减少你的距离。
speed = 1
dis = 0
while True:
if dis >= 10:
# Set speed
if dis <= 0:
# Set speed
# Based on speed, increment or decrement distance
答案 1 :(得分:2)
您可以使用
.py
speed = 1
dis = 0
while True:
dis += speed
if dis >= 10:
speed = -1
elif dis <= 0:
speed = 1
可以在dis += speed
之前或if/elif
之后获得预期结果。
或者您甚至可以使用if/elif
来改变方向
speed = -speed
答案 2 :(得分:1)
我明白了:)
speed = 1
dis = 0
while True:
if speed >= 0:
dis += 1
if dis >= 10:
speed = -1
if speed <= 0:
dis -= 1
if dis <= 0:
speed = 1
print(dis)
答案 3 :(得分:0)
您可以检查对象是否在该区域之外,然后反转速度。 pygame.Rect
有很多属性,例如left
和right
,这些属性在这里很有帮助。
import pygame as pg
pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
BG_COLOR = pg.Color('gray13')
BLUE = pg.Color('dodgerblue1')
rect = pg.Rect(300, 200, 20, 20)
distance = 150
speed = 1
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
# Check if the rect is outside of the specified
# area and if it's moving to the left or right.
if (rect.right > 300+distance and speed > 0
or rect.left < 300 and speed < 0):
speed *= -1 # Invert the speed.
# Add the speed to the rect's x attribute to move it.
rect.x += speed
# Draw everything.
screen.fill(BG_COLOR)
pg.draw.rect(screen, BLUE, rect)
pg.display.flip()
clock.tick(60)
pg.quit()