pygame-在两点之间移动rect

时间:2018-08-29 06:16:15

标签: python pygame

我正在尝试在pygame中在两点之间进行直接移动。我已经能够使其移动到另一个矩形上然后停止,但是那样就不会向后移动了。 我不确定自己在做什么错,所以我决定寻求帮助。这是我的代码:

import pygame

width, height = 800, 600
gameDisplay = pygame.display.set_mode((width, height))
pygame.display.set_caption("Test")
gameExit = False
white = (255, 255, 255)
black = (0, 0, 0)
red = (255, 0, 0)
block_size = 10


def gameloop():
    lead_x1, lead_x2 = 1, 100
    lead_y1, lead_y2 = 1, 1
    velocity = 0.2
    gameExit = False
    white = (255, 255, 255)
    black = (0, 0, 0)
    red = (255, 0, 0)
    block_size = 10

    while not gameExit:
        gameDisplay.fill(white)
        pygame.draw.rect(gameDisplay, black, [lead_x1, lead_y1, block_size, block_size])
        pygame.draw.rect(gameDisplay, black, [lead_x2, lead_y2, block_size, block_size])
        lead_x1 += velocity
        if lead_x1 >= lead_x2:
            lead_x1 += -velocity
        if lead_x1 <= 0:
            lead_x1 += velocity
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                gameExit = True
        pygame.display.update()
    pygame.quit()
    quit()
gameloop()

1 个答案:

答案 0 :(得分:1)

我认为您需要将d %>% tidyr::spread(key = IDPRODUCT, value = IDPRODUCT) %>% sjmisc::rec_if(is.character, rec = "NA=0;else=1", append = F) %>% tibble::add_column(IDBILL = unique(d$IDBILL), .before = 1) #> # A tibble: 3 x 5 #> IDBILL ABC123_r ABC124_r BCH134_r GDF345_r #> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 111 1 1 0 0 #> 2 112 0 0 1 0 #> 3 113 1 0 0 1 行放在else语句中,如下所示:-

lead_x1 += velocity

所以我在这里要做的是,拿一个名为import pygame width, height = 800, 600 gameDisplay = pygame.display.set_mode((width, height)) pygame.display.set_caption("Test") gameExit = False white = (255, 255, 255) black = (0, 0, 0) red = (255, 0, 0) block_size = 10 def gameloop(): lead_x1, lead_x2 = 1, 100 lead_y1, lead_y2 = 1, 1 velocity = 0.2 gameExit = False white = (255, 255, 255) black = (0, 0, 0) red = (255, 0, 0) block_size = 10 toogle_flag = 1 while not gameExit: gameDisplay.fill(white) pygame.draw.rect(gameDisplay, black, [lead_x1, lead_y1, block_size, block_size]) pygame.draw.rect(gameDisplay, black, [lead_x2, lead_y2, block_size, block_size]) lead_x1 += toggle_flag * velocity if lead_x1 >= lead_x2: toggle_flag = -1*toggle_flag if lead_x1 <= 0: toggle_flag = -1*toggle_flag for event in pygame.event.get(): if event.type == pygame.QUIT: gameExit = True pygame.display.update() pygame.quit() quit() gameloop() 的标志,将其初始化为toggle_flag

  1. 发件箱位于位置1,我们将1添加到toggle_flag * velocity中。即我们基本上是在添加lead_x1

  2. 一旦我们触摸第二个框,就会将velocity的值翻转为toggle_flag。 将会发生的是,我们继续将-1添加到-velocity中。

  3. 现在,一旦我们到达lead_x1。我们通过将0乘以toggle_flag来再次翻转-1的值,这使我们将velocity加到lead_x1中。

希望这会有所帮助!