Pygame平台游戏敌人运动

时间:2017-12-30 05:25:26

标签: python pygame

我正在开发一款平台游戏,试图让我的敌人来回移动一定距离。基本上我需要找到一种方法来将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)

4 个答案:

答案 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有很多属性,例如leftright,这些属性在这里很有帮助。

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()