首页 > 解决方案 > 基于动态玩家的转弯功能

问题描述

我目前正在尝试编写一个基于玩家回合的游戏。这个想法是:当游戏开始时,它会随机化玩家顺序,然后循环遍历每个玩家,等待玩家轮到完成,然后再转到下一个玩家。我遇到的一个问题是,玩家可能会在轮到他们的时候离开,或者说在比赛期间离开,这会导致他从 Game Class 玩家列表中被删除,这可能会导致选择正确的下一个玩家出现问题。

class Player(object):
    def __init__(self,name):
        self.name = name
class Game(object):
    def __init__(self, players):
        self.turn = 0 # Used to declare which player's turn it is

        self.players = players # List containing all players

    def disconnect(self, player):
        self.players.remove(player)

    def start(self):
        self.randomize()
    
        self.turn()

    def randomize(self):
        # Randomize Players Order
        random.shuffle(self.players) 

    def turn(self):
        # Player's Turn
        current_player = self.players[self.turn]

        # DO GAME LOGIC HERE

        self.turn_done()
    
    def turn_done(self):
        # Player's Turn Done

        # CHECK IF GAME IS OVER

        # Select Next Player
        self.current_turn = (self.turn + 1) % len(self.players)

        self.turn()

例如,当索引为 0 的玩家 1 断开连接时(Game.disconnect(player1)),而其玩家 2 转弯时,它会给玩家 4 下一轮而不是玩家 3 .. 有人有办法正确分配下一个玩家玩家数量动态变化?

标签: pythonlistcycleturn

解决方案


推荐阅读