/// <summary>
    /// 获取下一个题目
    /// </summary>
    /// <param name="token">Hash 客户端信息</param>
    /// <returns>Hash 结果信息</returns>
    public static Hash Assign(Hash token)
    {
        Random         random = new Random();
        Hash           data   = ClientDinosaurData.Assign(token.ToInt("clientId"));
        HashCollection names  = DinosaurData.AllName(0).ToHashCollection("data");

        data["length"]   = names.Count;
        data["duration"] = token.ToInt("duration");
        data["score"]    = token.ToInt("score");
        data["cards"]    = token.ToInt("cards");
        data["status"]   = token.ToInt("status");

        int indexAt = random.Next(0, 4);

        if (data.ToInt("dinosaurId") > 0)
        {
            HashCollection options = new HashCollection();

            //  剔除当前题目
            for (int i = 0; i < names.Count; i++)
            {
                if (names[i].ToString("name") == data.ToString("name"))
                {
                    names.RemoveAt(i);
                }
            }

            //  添加选项
            for (int i = 0; i < 4; i++)
            {
                if (i == indexAt)
                {
                    options.Add(new Hash("{\"name\":\"" + data.ToString("name") + "\"}"));
                }
                else
                {
                    int index = random.Next(0, names.Count);
                    options.Add(names[i]);
                    names.RemoveAt(index);
                }
            }

            data["options"] = options;

            return(new Hash((int)CodeType.OK, "成功", data));
        }
        return(new Hash((int)CodeType.OK, "所有题目都答完了", data));
    }