簡體   English   中英

Pygame - 在兩點之間移動矩形

[英]Pygame - Moving rect between two points

我正在嘗試在 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()

我認為您需要在 else 語句中放置 line 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. Out box 位於位置 1,我們將toggle_flag * velocity添加到我們的lead_x1 即我們基本上是在增加velocity

  2. 一旦我們觸摸第二個框,我們將toggle_flag的值翻轉為-1 會發生什么事是,我們不斷增加-velocity我們lead_x1

  3. 現在,一旦我們達到0 我們再次通過將其乘以-1翻轉toggle_flag的值,我們讓我們將velocity添加到lead_x1

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM