我正在尝试使用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()
是否有一种方法可以制作大量的块并将其单独移动,而无需一个个地定义它们。
答案 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循环,您存储的每个墙对象都会更新其位置,或者您想要同时移动的任何对象。希望您理解奇怪的伪代码