From 8a0ee85e091e817041fc005dbe2e67c7107dcc5b Mon Sep 17 00:00:00 2001 From: gsy1519 <614054460@qq.com> Date: Sat, 8 Apr 2023 22:59:27 +0800 Subject: [PATCH] refactor: :art: improve score function --- logic/Server/GameServer.cs | 44 ++++++++++++++++++------------------- logic/Server/Program.cs | 6 +++++ logic/Server/RpcServices.cs | 6 ++--- 3 files changed, 30 insertions(+), 26 deletions(-) diff --git a/logic/Server/GameServer.cs b/logic/Server/GameServer.cs index 6f6aacb..cc35239 100644 --- a/logic/Server/GameServer.cs +++ b/logic/Server/GameServer.cs @@ -83,10 +83,9 @@ namespace Server private void SaveGameResult(string path) { Dictionary result = new Dictionary(); - for (int i = 0; i < TeamCount; i++) - { - result.Add("Team" + i.ToString(), GetTeamScore(i)); //Team待修改 - } + int[] score = GetScore(); + result.Add("Student", score[0]); + result.Add("Tricker", score[1]); JsonSerializer serializer = new JsonSerializer(); using (StreamWriter sw = new StreamWriter(path)) { @@ -99,10 +98,9 @@ namespace Server protected virtual void SendGameResult() // 天梯的 Server 给网站发消息记录比赛结果 { var scores = new JObject[options.TeamCount]; - for (ushort i = 0; i < options.TeamCount; ++i) - { - scores[i] = new JObject { ["team_id"] = i.ToString(), ["score"] = GetTeamScore(i) }; - } // Team待修改 + int[] score = GetScore(); + scores[0] = new JObject { ["team_name"] = "Student", ["score"] = score[0] }; + scores[1] = new JObject { ["team_name"] = "Tricker", ["score"] = score[1] }; httpSender?.SendHttpRequest ( new JObject @@ -166,9 +164,23 @@ namespace Server kvp.Value.Item2.Wait(); } } - public int GetTeamScore(long teamID) + public int[] GetScore() { - return game.GetTeamScore(teamID); + int[] score = new int[2]; // 0代表Student,1代表Tricker + try + { + foreach (Character character in game.GameMap.GameObjDict[GameObjType.Character]) + { + if (!character.IsGhost()) score[0] += character.Score; + else score[1] += character.Score; + } + + } + finally + { + game.GameMap.GameObjLockDict[GameObjType.Character].ExitReadLock(); + } + return score; } private int PlayerIDToTeamID(long playerID) @@ -205,19 +217,7 @@ namespace Server msg.StudentScore = 0; msg.TrickerScore = 0; game.GameMap.GameObjLockDict[GameObjType.Character].EnterReadLock(); - try - { - foreach (Character character in game.GameMap.GameObjDict[GameObjType.Character]) - { - if (!character.IsGhost()) msg.StudentScore += character.Score; - else msg.TrickerScore += character.Score; - } - } - finally - { - game.GameMap.GameObjLockDict[GameObjType.Character].ExitReadLock(); - } //msg.GateOpened //msg.HiddenGateRefreshed //msg.HiddenGateOpened diff --git a/logic/Server/Program.cs b/logic/Server/Program.cs index 1c2aa5e..3a51dd5 100644 --- a/logic/Server/Program.cs +++ b/logic/Server/Program.cs @@ -42,6 +42,12 @@ namespace Server gameServer.WaitForEnd(); Console.WriteLine("Server end!"); server.ShutdownAsync().Wait(); + + Thread.Sleep(50); + Console.WriteLine(""); + Console.WriteLine("=================== Final Score ===================="); + Console.WriteLine($"Studnet: {gameServer.GetScore()[0]}"); + Console.WriteLine($"Tricker: {gameServer.GetScore()[1]}"); } catch (Exception ex) { diff --git a/logic/Server/RpcServices.cs b/logic/Server/RpcServices.cs index ba6bdd2..d775697 100644 --- a/logic/Server/RpcServices.cs +++ b/logic/Server/RpcServices.cs @@ -65,9 +65,9 @@ namespace Server //Console.WriteLine("Send!"); } } - catch (Exception ex) + catch (Exception) { - Console.WriteLine(ex); + //Console.WriteLine(ex); } finally { @@ -97,7 +97,6 @@ namespace Server if (newPlayerID == GameObj.invalidID) return; communicationToGameID[request.PlayerId] = newPlayerID; - // 内容待修改 var temp = (new SemaphoreSlim(0, 1), new SemaphoreSlim(0, 1)); bool start = false; Console.WriteLine($"Id: {request.PlayerId} joins."); @@ -172,7 +171,6 @@ namespace Server } var gameID = communicationToGameID[request.PlayerId]; game.MovePlayer(gameID, (int)request.TimeInMilliseconds, request.Angle); - // 之后game.MovePlayer可能改为bool类 moveRes.ActSuccess = true; if (!game.GameMap.Timer.IsGaming) moveRes.ActSuccess = false; return Task.FromResult(moveRes);