如何创建多个矩形并使它们独立移动

时间:2019-08-10 00:50:50

标签: python pygame

我正在尝试使用python创建一个飞扬的鸟游戏,但是我无法让多个墙出现在页面上并四处移动。

我想知道是否有一种方法可以制作多个墙(矩形)并移动它们而无需单独定义它们。我正在使用Pygame。

import pygame

pygame.init()

white = (255,255,255)
yellow = (255,200,0)
green = (0,255,0)

displayHeight = 600
displayWidth = 500

gameDisplay = pygame.display.set_mode((displayWidth, displayHeight))
clock = pygame.time.Clock()

crash = False

def bird(b_X, b_Y, b_R, b_Colour):
    pygame.draw.circle(gameDisplay, b_Colour, (b_X, b_Y), b_R)

def game_loop():

    bX = 50
    bY = 300
    bR = 20
    bColour = yellow

    velocity = 0
    gravity = 0.6
    lift = -15

    while crash == False:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.QUIT
                quit()

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_SPACE:
                    velocity += lift

        gameDisplay.fill(white)

        bird(bX, bY, bR, bColour)

        velocity = velocity + gravity
        bY += velocity
        bY = round(bY)

        if bY > displayHeight:
            bY = displayHeight
            velocity = 0

        if bY < 0:
            bY = 0
            velocity = 0

        pygame.display.update()

        clock.tick(60)

game_loop()
pygame.quit()
quit()

是否有一种方法可以制作大量的块并将其单独移动,而无需一个个地定义它们。

1 个答案:

答案 0 :(得分:1)

我不知道代码是如何工作的,但是您可以将多个墙“对象”存储在一个列表中,并在每次更新屏幕时遍历该列表。在伪代码中,它像这样

wall-list = []
for wanted_wall_amount in range():
wall = create_a_wall
    wall-list.append(wall)

game loop:
    for wall in wall-list:
        wall.x_coordinate += movespeed

由于游戏循环中的for循环,您存储的每个墙对象都会更新其位置,或者您想要同时移动的任何对象。希望您理解奇怪的伪代码

相关问题