From 5680ba1a0466095930598d6e3c8fc962ffce1791 Mon Sep 17 00:00:00 2001 From: milimoe Date: Wed, 6 Nov 2024 01:11:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8A=80=E8=83=BD=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Library/Main.cs | 128 ++++++++++++++++++------- Library/Skills/MagicalGirl/绝对领域.cs | 2 +- Library/Tests/FunGame.cs | 4 +- 3 files changed, 97 insertions(+), 37 deletions(-) diff --git a/Library/Main.cs b/Library/Main.cs index ed496af..2294dea 100644 --- a/Library/Main.cs +++ b/Library/Main.cs @@ -12,49 +12,56 @@ ItemModule im = new(); im.Load(); FunGameSimulation.InitCharacter(); -FunGameSimulation.StartGame(true, false, true); +//FunGameSimulation.StartGame(true, false, true); -Stopwatch stopwatch = new(); -stopwatch.Start(); - -for (int i = 0; i < 300; i++) +foreach (Skill s in FunGameSimulation.Magics) { - FunGameSimulation.StartGame(false, false, false); - FunGameSimulation.StartGame(false, false, true); + Skill s2 = s.Copy(); + s2.Level++; + Console.WriteLine(s2); } -stopwatch.Stop(); -Console.WriteLine($"ִʱ䣺{stopwatch.Elapsed.Seconds} "); +//Stopwatch stopwatch = new(); +//stopwatch.Start(); -IEnumerable cs = FunGameSimulation.CharacterStatistics.OrderByDescending(d => d.Value.Rating).ThenByDescending(d => d.Value.Winrates).Select(d => d.Key); -Console.WriteLine("=== ģʽа ==="); -foreach (Character c in cs) -{ - CharacterStatistics stats = FunGameSimulation.CharacterStatistics[c]; - StringBuilder builder = new(); +//for (int i = 0; i < 30; i++) +//{ +// FunGameSimulation.StartGame(false, false, false); +// FunGameSimulation.StartGame(false, false, true); +//} - builder.AppendLine(c.ToString()); - builder.AppendLine($"Σ{stats.Plays}"); - builder.AppendLine($"ʤʣ{stats.Winrates * 100:0.##}%"); - builder.AppendLine($"÷֣{stats.Rating:0.0#}"); +//stopwatch.Stop(); +//Console.WriteLine($"ִʱ䣺{stopwatch.Elapsed.TotalSeconds} "); - Console.WriteLine(builder.ToString()); -} +//IEnumerable cs = FunGameSimulation.CharacterStatistics.OrderByDescending(d => d.Value.Rating).ThenByDescending(d => d.Value.Winrates).Select(d => d.Key); +//Console.WriteLine("=== ģʽа ==="); +//foreach (Character c in cs) +//{ +// CharacterStatistics stats = FunGameSimulation.CharacterStatistics[c]; +// StringBuilder builder = new(); -IEnumerable cs2 = FunGameSimulation.TeamCharacterStatistics.OrderByDescending(d => d.Value.Rating).ThenByDescending(d => d.Value.Winrates).Select(d => d.Key); -Console.WriteLine("=== Ŷģʽа ==="); -foreach (Character c in cs2) -{ - CharacterStatistics stats = FunGameSimulation.TeamCharacterStatistics[c]; - StringBuilder builder = new(); +// builder.AppendLine(c.ToString()); +// builder.AppendLine($"Σ{stats.Plays}"); +// builder.AppendLine($"ʤʣ{stats.Winrates * 100:0.##}%"); +// builder.AppendLine($"÷֣{stats.Rating:0.0#}"); - builder.AppendLine(c.ToString()); - builder.AppendLine($"Σ{stats.Plays}"); - builder.AppendLine($"ʤʣ{stats.Winrates * 100:0.##}%"); - builder.AppendLine($"÷֣{stats.Rating:0.0#}"); +// Console.WriteLine(builder.ToString()); +//} - Console.WriteLine(builder.ToString()); -} +//IEnumerable cs2 = FunGameSimulation.TeamCharacterStatistics.OrderByDescending(d => d.Value.Rating).ThenByDescending(d => d.Value.Winrates).Select(d => d.Key); +//Console.WriteLine("=== Ŷģʽа ==="); +//foreach (Character c in cs2) +//{ +// CharacterStatistics stats = FunGameSimulation.TeamCharacterStatistics[c]; +// StringBuilder builder = new(); + +// builder.AppendLine(c.ToString()); +// builder.AppendLine($"Σ{stats.Plays}"); +// builder.AppendLine($"ʤʣ{stats.Winrates * 100:0.##}%"); +// builder.AppendLine($"÷֣{stats.Rating:0.0#}"); + +// Console.WriteLine(builder.ToString()); +//} string input = Console.ReadLine() ?? ""; while (true) @@ -96,9 +103,60 @@ while (true) builder.AppendLine($"ܼƹھ{stats.Wins}"); builder.AppendLine($"ܼǰ{stats.Top3s}"); builder.AppendLine($"ܼưܳ{stats.Loses}"); - builder.AppendLine($"ʤʣ{stats.Winrates * 100:0.##}%"); + + List names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.GetName())]; + builder.AppendLine($"ʤʣ{stats.Winrates * 100:0.##}%#{names.IndexOf(character.GetName()) + 1}"); + + names = [.. FunGameSimulation.TeamCharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())]; + builder.AppendLine($"÷֣{stats.Rating:0.##}#{names.IndexOf(character.GetName()) + 1}"); + + Console.WriteLine(builder.ToString()); + } + } + } + + if (input.StartsWith("ss")) + { + input = input.Replace("ss", "").Trim(); + if (int.TryParse(input, out int id)) + { + Character character = FunGameSimulation.Characters[Convert.ToInt32(id) - 1]; + if (FunGameSimulation.CharacterStatistics.TryGetValue(character, out CharacterStatistics? stats) && stats != null) + { + StringBuilder builder = new(); + + builder.AppendLine(character.ToString()); + builder.AppendLine($"ܼ˺{stats.TotalDamage:0.##} / {stats.AvgDamage:0.##}"); + builder.AppendLine($"ܼ˺{stats.TotalPhysicalDamage:0.##} / {stats.AvgPhysicalDamage:0.##}"); + builder.AppendLine($"ܼħ˺{stats.TotalMagicDamage:0.##} / {stats.AvgMagicDamage:0.##}"); + builder.AppendLine($"ܼʵ˺{stats.TotalRealDamage:0.##} / {stats.AvgRealDamage:0.##}"); + builder.AppendLine($"ܼƳ˺{stats.TotalTakenDamage:0.##} / {stats.AvgTakenDamage:0.##}"); + builder.AppendLine($"ܼƳ˺{stats.TotalTakenPhysicalDamage:0.##} / {stats.AvgTakenPhysicalDamage:0.##}"); + builder.AppendLine($"ܼƳħ˺{stats.TotalTakenMagicDamage:0.##} / {stats.AvgTakenMagicDamage:0.##}"); + builder.AppendLine($"ܼƳʵ˺{stats.TotalTakenRealDamage:0.##} / {stats.AvgTakenRealDamage:0.##}"); + builder.AppendLine($"ܼƴغ{stats.LiveRound} / {stats.AvgLiveRound}"); + builder.AppendLine($"ܼжغ{stats.ActionTurn} / {stats.AvgActionTurn}"); + builder.AppendLine($"ܼƴʱ{stats.LiveTime:0.##} / {stats.AvgLiveTime:0.##}"); + builder.AppendLine($"ܼ׬ȡǮ{stats.TotalEarnedMoney} / {stats.AvgEarnedMoney}"); + builder.AppendLine($"ÿغ˺{stats.DamagePerRound:0.##}"); + builder.AppendLine($"ÿжغ˺{stats.DamagePerTurn:0.##}"); + builder.AppendLine($"ÿ˺{stats.DamagePerSecond:0.##}"); + builder.AppendLine($"ܼƻɱ{stats.Kills}" + (stats.Plays != 0 ? $" / {(double)stats.Kills / stats.Plays:0.##}" : "")); + builder.AppendLine($"ܼ{stats.Deaths}" + (stats.Plays != 0 ? $" / {(double)stats.Deaths / stats.Plays:0.##}" : "")); + builder.AppendLine($"ܼ{stats.Assists}" + (stats.Plays != 0 ? $" / {(double)stats.Assists / stats.Plays:0.##}" : "")); + builder.AppendLine($"ܼɱ{stats.FirstKills}" + (stats.Plays != 0 ? $" / ɱʣ{(double)stats.FirstKills / stats.Plays * 100:0.##}%" : "")); + builder.AppendLine($"ܼ{stats.FirstDeaths}" + (stats.Plays != 0 ? $" / ʣ{(double)stats.FirstDeaths / stats.Plays * 100:0.##}%" : "")); + builder.AppendLine($"ܼƲ{stats.Plays}"); + builder.AppendLine($"ܼƹھ{stats.Wins}"); + builder.AppendLine($"ܼǰ{stats.Top3s}"); + builder.AppendLine($"ܼưܳ{stats.Loses}"); + + List names = [.. FunGameSimulation.CharacterStatistics.OrderByDescending(kv => kv.Value.Winrates).Select(kv => kv.Key.GetName())]; + builder.AppendLine($"ʤʣ{stats.Winrates * 100:0.##}%#{names.IndexOf(character.GetName()) + 1}"); builder.AppendLine($"ǰʣ{stats.Top3rates * 100:0.##}%"); - builder.AppendLine($"÷֣{stats.Rating:0.0#}"); + + names = [.. FunGameSimulation.CharacterStatistics.OrderByDescending(kv => kv.Value.Rating).Select(kv => kv.Key.GetName())]; + builder.AppendLine($"÷֣{stats.Rating:0.##}#{names.IndexOf(character.GetName()) + 1}"); builder.AppendLine($"ϴ{stats.LastRank} / Σ{stats.AvgRank}"); Console.WriteLine(builder.ToString()); diff --git a/Library/Skills/MagicalGirl/绝对领域.cs b/Library/Skills/MagicalGirl/绝对领域.cs index ca21027..0dcb0a6 100644 --- a/Library/Skills/MagicalGirl/绝对领域.cs +++ b/Library/Skills/MagicalGirl/绝对领域.cs @@ -54,7 +54,7 @@ namespace Milimoe.FunGame.Testing.Skills return false; } - public override void OnSkillCasting(Character caster) + public override void OnSkillCasting(Character caster, List targets) { 释放时的能量值 = caster.EP; } diff --git a/Library/Tests/FunGame.cs b/Library/Tests/FunGame.cs index 04da0e4..1e075f4 100644 --- a/Library/Tests/FunGame.cs +++ b/Library/Tests/FunGame.cs @@ -524,7 +524,9 @@ namespace Milimoe.FunGame.Testing.Tests { foreach (Item item in 这次发放的空投) { - queue.Equip(character, item.Copy(1)); + Item newItem = item.Copy(); + newItem.SetLevel(1); + queue.Equip(character, newItem); } } WriteLine("");