python - 基于动态玩家的转弯功能
问题描述
我目前正在尝试编写一个基于玩家回合的游戏。这个想法是:当游戏开始时,它会随机化玩家顺序,然后循环遍历每个玩家,等待玩家轮到完成,然后再转到下一个玩家。我遇到的一个问题是,玩家可能会在轮到他们的时候离开,或者说在比赛期间离开,这会导致他从 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 .. 有人有办法正确分配下一个玩家玩家数量动态变化?
解决方案
推荐阅读
- c - C 语言中的“diff”Linux 实用程序实现
- python - 您可以将未解析的参数传递给python中的类函数吗?
- java - 放心多部分需要参数顺序
- python - 如何在pytorch中查看DataLoader中的数据
- postgresql - 在 Postgresql 中为 order_by 添加一列以选择
- firebase - 您如何间隔运行云功能?
- bash - 从特定列中的 CSV 文件中删除小数部分?
- azure - 网络错误 - 使用 NFS 挂载 Azure Blob 存储时出现 53
- r - 在计算 R 中的“pnorm()”生成的两个极端概率之间的差异时绕过机器精度问题
- node.js - 我在本地存储中找到了用户身份验证令牌,但它在 SSR 中不起作用,有什么解决方案吗?