Exemplo n.º 1
0
        private async void Button_Click_Pair(object sender, RoutedEventArgs e)
        {
            var color1 = Color1.Text.ToInt();
            var part1  = Part1.Text.ToInt();
            var color2 = Color2.Text.ToInt();
            var part2  = Part2.Text.ToInt();
            var times  = Times.Text.ToInt();

            weaken = Weaken.IsChecked == true;
            if (times <= 1)
            {
                var sim = new QuQuBattleSimulation(color1, part1, color2, part2, weaken)
                {
                    showDetail = true
                };
                Print(sim.Report());
            }
            else
            {
                BTN.Content   = "执行中...";
                BTN.IsEnabled = false;
                aggregate     = new int[][] { new int[5], new int[5] };
                var taskCount = Environment.ProcessorCount; //4
                var tasks     = new Task[taskCount];
                countdown = times;
                for (int i = 0; i < taskCount; i++)
                {
                    tasks[i] = MakeSpecifiedBattle(color1, part1, color2, part2);
                }
                await Task.WhenAll(tasks);

                var messages = new string[]
                {
                    $"{QuquSystem.instance.GetName(color1, part1)} {ReasonAnalysis(aggregate[0])}",
                    $"{QuquSystem.instance.GetName(color2, part2)} {ReasonAnalysis(aggregate[1])}",
                    ""
                };
                var w = new Writer("logs.txt");
                foreach (var message in messages)
                {
                    Print(message);
                    w.WriteLine(message);
                }
                BTN.Content   = "开始执行";
                BTN.IsEnabled = true;
            }
        }
Exemplo n.º 2
0
        /// <summary>为一种指定蛐蛐随机选择对手交战</summary>
        Task MakeRandomBattle(int color, int part, int[][] enemys)
        {
            return(Task.Run(() =>
            {
                var i = 0;
                while (true)
                {
                    i = Interlocked.Decrement(ref countdown);
                    if (i < 0)
                    {
                        break;
                    }

                    var enemy = enemys[Random.Range(0, enemys.Length)];
                    var result = new QuQuBattleSimulation(color, part, enemy[0], enemy[1], weaken).ShowStartBattleState();

                    Interlocked.Increment(ref aggregate[0][result.win ? 0 : 1]);
                }
            }));
        }
Exemplo n.º 3
0
        /// <summary>让两种指定蛐蛐交战</summary>
        Task MakeSpecifiedBattle(int color1, int part1, int color2, int part2)
        {
            return(Task.Run(() =>
            {
                var i = 0;
                while (true)
                {
                    i = Interlocked.Decrement(ref countdown);
                    if (i < 0)
                    {
                        break;
                    }

                    var result = new QuQuBattleSimulation(color1, part1, color2, part2, weaken).ShowStartBattleState();
                    var winner = result.win ? 0 : 1;

                    Interlocked.Increment(ref aggregate[winner][0]);
                    Interlocked.Increment(ref aggregate[winner][(int)result.status]);
                }
            }));
        }