mikhailemv

Untitled

Apr 22nd, 2023
1,127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.94 KB | None | 0 0
  1. using System;
  2. using System.Collections.Concurrent;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5.  
  6. namespace rocket_bot
  7. {
  8.     public partial class Bot
  9.     {
  10.         public Rocket GetNextMove(Rocket rocket)
  11.         {
  12.             var allMoves = new ConcurrentBag<Tuple<Turn, double>>();
  13.             var currentTasks = new Task[threadsCount];
  14.  
  15.             for (var i = 0; i < threadsCount; i++)
  16.             {
  17.                 currentTasks[i] = new Task(() =>
  18.                 {
  19.                     var random = new Random();
  20.                     var bestMove = SearchBestMove(rocket, this.random, iterationsCount / threadsCount);
  21.                     allMoves.Add(bestMove);
  22.                 });
  23.                 currentTasks[i].Start();
  24.             }
  25.  
  26.             Task.WaitAll(currentTasks);
  27.             var finalSearch = allMoves.OrderBy(w => w.Item2).First();
  28.             return rocket.Move(finalSearch.Item1, level);
  29.         }
  30.     }
  31. }
Advertisement
Add Comment
Please, Sign In to add comment