由于各种原因,随机不使用列表

2024-06-25 23:22:06 发布

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

我想从导入的精灵(ALIEN1ALIEN2ALIEN3)中选择一个随机外来精灵,以显示为随机生成的外来精灵

Here is the gihub

# load aliens #
ALIEN1 = pygame.image.load(os.path.join("sprites","alien1_frame1.png"))
ALIEN2 = pygame.image.load(os.path.join("sprites","alien2_frame1.png"))
ALIEN3 = pygame.image.load(os.path.join("sprites","alien3_frame1.png"))
class Enemy(Ship):
    ALIEN_CHOICE = [ALIEN1, ALIEN2, ALIEN3]
    def __init__(self, x, y, color, health=100):
        super().__init__(x,y, health)
        self.ship_img = self.ALIEN_CHOICE[color]
        # mask #
        self.mask = pygame.mask.from_surface(self.ship_img)

    def move(self, vel): # movement variables for enemies
        self.y += vel 
enemy = Enemy(random.randrange(50, WIDTH-100), random.randrange(-1500, -100), random.choice(Enemy.ALIEN_CHOICE))

Tags: pathimageselfpngosloadpygame精灵
2条回答

如果要从列表中选择随机元素,建议使用random.choice()^{}):

import random
alien_list = [ALIEN1, ALIEN2, ALIEN3]
random_alien = random.choice(alien_list)

Enemy构造函数的参数是外星飞船的图像:

class Enemy(Ship):
    ALIEN_CHOICE = [ALIEN1, ALIEN2, ALIEN3]
    def __init__(self, x, y, ship_img, health=100):
        super().__init__(x,y, health)
        self.ship_img = ship_img 
        # mask #
        self.mask = pygame.mask.from_surface(self.ship_img)
enemy = Enemy(random.randrange(50, WIDTH-100), random.randrange(-1500, -100), random.choice(Enemy.ALIEN_CHOICE))

或者,您可以完全跳过该论证(由您决定):

class Enemy(Ship):
    ALIEN_CHOICE = [ALIEN1, ALIEN2, ALIEN3]
    def __init__(self, x, y, health=100):
        super().__init__(x,y, health)
        self.ship_img = random.choice(Enemy.ALIEN_CHOICE) 
        # mask #
        self.mask = pygame.mask.from_surface(self.ship_img)
enemy = Enemy(random.randrange(50, WIDTH-100), random.randrange(-1500, -100))

像这样使用随机变量。创建一个随机数生成器,创建一个所有外星人的列表,然后用随机数索引列表

import random
aliens = ['alien1', 'alien2', 'alien3']

for r in range(10):
    print(aliens[random.randint(0,2)])



alien3
alien2
alien1
alien1
alien1
alien2
alien3
alien1
alien1
alien2

[Program finished]

相关问题 更多 >