/// <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)); }