繁体   English   中英

我如何从 10 个玩家中随机选择 5 个,并且每个玩家都从列表中随机选择不同的 y 坐标?

[英]How do i randomly pick 5 from 10 players and each of them all have different randomly picked y coordinate from a list?

所以我正在尝试构建一个“赛马”游戏,我想从 10 个玩家的列表中随机挑选出 5 个玩家,其中 5 个玩家都从列表中随机选择不同的 y 坐标。 我尝试了我的代码,但 y 有时是相同的。 我有点卡住了,如果你们能帮助我,我真的很感激。

class Player1(pygame.sprite.Sprite):      #Player1 class ( 2-10 are the same)
    def __init__(self, pos_x, pos_y):
        super().__init__()
        self.sprites = []
        self.sprites.append(pygame.transform.scale(pygame.image.load("image/pig/non/1.png").convert_alpha(), (80, 60)))
        self.sprites.append(pygame.transform.scale(pygame.image.load("image/pig/non/2.png").convert_alpha(), (80, 60)))
        self.sprites.append(pygame.transform.scale(pygame.image.load("image/pig/non/3.png").convert_alpha(), (80, 60)))
        self.sprites.append(pygame.transform.scale(pygame.image.load("image/pig/non/4.png").convert_alpha(), (80, 60)))
        self.sprites.append(pygame.transform.scale(pygame.image.load("image/pig/non/5.png").convert_alpha(), (80, 60)))
        self.sprites.append(pygame.transform.scale(pygame.image.load("image/pig/non/6.png").convert_alpha(), (80, 60)))
        self.sprites.append(pygame.transform.scale(pygame.image.load("image/pig/non/7.png").convert_alpha(), (80, 60)))
        self.sprites.append(pygame.transform.scale(pygame.image.load("image/pig/non/8.png").convert_alpha(), (80, 60)))
        self.sprites.append(pygame.transform.scale(pygame.image.load("image/pig/non/9.png").convert_alpha(), (80, 60)))
        self.sprites.append(pygame.transform.scale(pygame.image.load("image/pig/non/10.png").convert_alpha(), (80, 60)))
    
        self.current_sprite = 0
        self.image = self.sprites[self.current_sprite]

        self.rect = self.image.get_rect(center = (pos_x, pos_y))

    def update(self):
        self.current_sprite += 0.1
        if self.current_sprite >= len(self.sprites):
            self.current_sprite = 0
        self.image = self.sprites[int(self.current_sprite)]

player_x = 100

random_y = [sf_height-200, sf_height - 290,sf_height-345,sf_height - 420,sf_height - 470]  

player1 = Player1(player_x,random.choice(random_y))
player2 = Player2(player_x,random.choice(random_y))
player3 = Player3(player_x,random.choice(random_y))
player4 = Player4(player_x,random.choice(random_y))
player5 = Player5(player_x,random.choice(random_y))
player6 = Player6(player_x,random.choice(random_y))
player7 = Player7(player_x,random.choice(random_y))
player8 = Player8(player_x,random.choice(random_y))
player9 = Player9(player_x,random.choice(random_y))
player10 = Player10(player_x,random.choice(random_y))

player_list = [player1, player2, player3, player4, player5, player6, player7, player8, player9, player10]

player_group = pygame.sprite.Group()
player_group.add(random.sample(player_list, 5))

您可以将 5 个y坐标中的每一个分配给 5 个Player1 class 对象。 一开始它不会是随机的,但是当你在列表中使用random.sample时它会自动打乱:

player_x = 100
random_y = [sf_height - 200, sf_height - 290, sf_height - 345, sf_height - 420, sf_height - 470]  

five_players = [Player1(player_x,random.choice(y)) for y in random_y]
all_players = [...]
player_group = pygame.sprite.Group()
player_group.add(random.sample(five_players, 5))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM