如何让随机的敌人出现在列表中?

2024-06-26 13:50:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着从一个保存在变量中的汽车列表中随机出现一辆车。问题似乎是它从列表中随机选择一辆车,并且在游戏进行过程中不会改变它。每次前一辆车停在屏幕上时,我都想换一辆车。在

每次游戏开始时,它都会从随机列表中选择一辆车,但每次游戏循环运行时都不会改变汽车。在

我相信问题出在这段代码上

randomCars = [car1, car2, car3, car4, car5, car6, car7, car8]
enemy = random.choice(randomCars)

我已经粘贴了下面的完整代码:

^{pr2}$

Tags: 代码游戏列表屏幕过程汽车car1car2
2条回答

这里有一个最小的例子。只需使用random.choice在当前汽车离开屏幕后立即从列表中取出一辆新车。在

import random
import pygame


pygame.init()

CAR_IMG1 = pygame.Surface((30, 50))
CAR_IMG1.fill((10, 150, 200))
CAR_IMG2 = pygame.Surface((30, 50))
CAR_IMG2.fill((210, 150, 0))
CAR_IMG3 = pygame.Surface((30, 50))
CAR_IMG3.fill((10, 250, 0))

CARS = [CAR_IMG1, CAR_IMG2, CAR_IMG3]


def main():
    screen = pygame.display.set_mode((640, 480))
    screen_rect = screen.get_rect()
    clock = pygame.time.Clock()
    car = random.choice(CARS)
    pos_x = random.randrange(screen_rect.width-30)
    pos_y = -50

    done = False

    while not done:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True

        pos_y += 15
        if pos_y > screen_rect.height:
            car = random.choice(CARS)
            pos_x = random.randrange(screen_rect.width-30)
            pos_y = -50

        screen.fill((30, 30, 30))
        screen.blit(car, (pos_x, pos_y))

        pygame.display.flip()
        clock.tick(30)


if __name__ == '__main__':
    pygame.init()
    main()
    pygame.quit()

首先初始化你的敌人汽车图像列表,从中选择一个。在

randomCars = [carImg1, carImg2, carImg3, carImg4]

在game\u loop()函数内,但在主循环集enemy = random.choice(randomCars)之外

在game\u loop()函数的主循环中,检查敌人是否离开屏幕。如果是,将敌方变量设置为一辆新的随机汽车。在

if thing_starty > display_height:
    # Reset enemy image
    enemy = random.choice(randomCars)
    # Reset thing co-ordinates
    thing_starty = -600
    thing_startx = random.randrange(0, display_width)

如果enemy = random.choice(randomCars)行代码不起作用,您也可以尝试用一个随机整数索引randomCars列表。在

randomCarsIndex = random.randint(0, len(randomCars) - 1) enemy = randomCars[randomCarsIndex]

希望这有帮助!在

相关问题 更多 >