You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在循环轮次中切换Player实例,简化多玩家数据操作?

按轮次切换玩家实例的简便实现方法

你可以用数组或List统一存储所有Player实例,这样就能通过回合数直接索引到对应玩家,完全不需要大量if判断,完美实现你想要的操作方式。

示例代码(数组实现,固定4名玩家)

internal class Program
{
    private static void Main(string[] args)
    {
        // 用数组批量初始化并存储4名玩家
        Player[] players = new Player[]
        {
            new Player(),
            new Player(),
            new Player(),
            new Player()
        };

        int playerTurn = 1; // 回合从1开始,对应第一个玩家

        while (true)
        {
            // 将1-based的回合数转为数组0-based索引,获取当前玩家
            Player currentPlayer = players[playerTurn - 1];
            // 直接修改当前玩家的数据
            currentPlayer.x = 1;
            currentPlayer.y = 2;

            // 自动切换到下一个玩家,循环1-4
            playerTurn = playerTurn % 4 + 1;
        }
    }
}

class Player
{
    public int x = 0;
    public int y = 0;
}

关键说明

  • 用数组/List替代单独声明player1到player4,统一管理所有玩家实例,代码更简洁
  • 通过playerTurn - 1转换索引:因为C#数组是从0开始计数,而你的回合数从1开始,减1就能匹配到正确的玩家
  • 回合切换逻辑playerTurn % 4 + 1可以让回合数在1-4之间循环,不用手动写多个分支判断

灵活扩展(用List实现动态玩家数量)

如果后续玩家数量可能变动,用List<Player>会更方便:

// 初始化List存储玩家
List<Player> players = new List<Player>
{
    new Player(),
    new Player(),
    new Player(),
    new Player()
};

// 后续可以随时添加玩家
players.Add(new Player());

// 获取当前玩家的逻辑只需要把4换成players.Count
Player currentPlayer = players[playerTurn - 1];
playerTurn = playerTurn % players.Count + 1;

内容的提问来源于stack exchange,提问作者yachu09

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:10:40