Example #1
0
 // Creates a human playerInfo
 public PlayerInfo(string i_PlayerName, bool i_Human, Checkers.ePlayerTag i_PlayerTag)
 {
     Name = i_PlayerName;
     Human = i_Human;
     Score = 0;
     PlayerTag = i_PlayerTag;
 }
Example #2
0
 // Creates a machine playerInfo
 public PlayerInfo(bool i_Human, Checkers.ePlayerTag i_PlayerTag)
 {
     Name = k_ComputerName;
     Human = i_Human;
     Score = 0;
     PlayerTag = i_PlayerTag;
 }
Example #3
0
 /// <summary>
 /// This is called whenever your checker gets captured (during an opponent's turn).
 /// </summary>
 /// <param name="checker">The checker that was captured.</param>
 public void GotCaptured(Checkers.Checker checker)
 {
     // <<-- Creer-Merge: gotCaptured -->> - Code you add between this comment and the end comment will be preserved between Creer re-runs.
     // Put your game logic here for gotCaptured
     return ;
     // <<-- /Creer-Merge: gotCaptured -->>
 }
Example #4
0
        private static bool IsSupportedAMDDevice(BaseDevice dev)
        {
            var isSupported = dev is AMDDevice gpu && Checkers.IsGcn4(gpu);

            return(isSupported);
        }
Example #5
0
        public ResponsePacket OnRouteTableQuery(RequestPacket requestPacket)
        {
            // Get RouteTableQuery_req packet params
            int    connectionId = requestPacket.Id;
            string srcPort      = requestPacket.SrcPort;
            string dstPort      = requestPacket.DstPort;
            int    slotsNumber  = requestPacket.SlotsNumber;

            RequestPacket.Est est = requestPacket.Establish;

            if (est == RequestPacket.Est.Teardown)
            {
                LOG.Info($"Received RC::RouteTableQuery_req(Teardown, connectionId = {connectionId}, srcPort = {srcPort}," +
                         $" dstPort = {dstPort}, slotsNumber = {slotsNumber})");

                // The best idea will be to store the actual responses in a table / dict and when the Teardown RouteTableQuery
                // arrives, we just match connectionId, srcPort, dstPort, slotsNumber and if they are the same, just return
                // the same ResponsePacket.
                // e.g. instead of just returning ResponsePacket, do this:
                // ResponsePacket responsePacket = new ResponsePacket.Builder().<blablabla>.Build();
                // _responsePackets[requestPacket] = responsePacket;
                // return responsePacket;
                //
                // and then when the Teardown comes, just do:
                LOG.Info($"Sending RC::RouteTableQuery_res(Teardown, connectionId = {connectionId})");
                var teardownResponsePacket = _responsePackets[GetUniqueRcId(connectionId, srcPort, dstPort, slotsNumber)].Dequeue();
                if (teardownResponsePacket == null)
                {
                    LOG.Error("Could not find such connection");
                    return(new ResponsePacket.Builder().SetRes(ResponsePacket.ResponseType.Refused).Build());
                }

                _connections.RemoveAll(connection => connectionId == connection.Id);

                return(teardownResponsePacket);
            }

            LOG.Info($"Received RC::RouteTableQuery_req(connectionId = {connectionId}, srcPort = {srcPort}," +
                     $" dstPort = {dstPort}, slotsNumber = {slotsNumber})");

            // Set dstZone depending on destination domain
            string secondDomainPortPattern = "3xx";
            string dstZone;

            if (Checkers.PortMatches(secondDomainPortPattern, dstPort) > -1) // TODO: Check for matches value
            {
                dstZone = "012,021";
                LOG.Trace($"Destination port belongs to other zone. Possible leaving ports: {dstZone}");
            }
            else
            {
                dstZone = dstPort;
                LOG.Trace($"Destination port belongs to the same zone. Leaving port: {dstZone}");
            }

            string gateway = GetBestGateway(srcPort, dstPort) ?? "0";

            (int, int)slots = (0, 0);
            // Check whether we don't already have a registered connection with given connectionId
            if (!_connections.Exists(connection => connection.Id == connectionId))
            {
                try
                {
                    slots = CreateSlots(gateway, slotsNumber);
                }
                catch (Exception e)
                {
                    LOG.Info(e.Message);
                    return(new ResponsePacket.Builder()
                           .SetRes(ResponsePacket.ResponseType.ResourcesProblem)
                           .Build());
                }

                _connections.Add(new Connection(connectionId, slots));
                LOG.Trace($"Allocated slots {slots} for new connection with id {connectionId}");
            }
            else
            {
                slots = _connections.Find(connection => connection.Id == connectionId).Slots;
                LOG.Trace($"There is already registered connection with id {connectionId}. Allocated slots: {slots}");
            }

            ResponsePacket responsePacket = new ResponsePacket.Builder()
                                            .SetRes(ResponsePacket.ResponseType.Ok)
                                            .SetId(connectionId)
                                            .SetGateway(gateway)
                                            .SetSlots(slots)
                                            .SetDstZone(dstZone)
                                            .Build();

            RequestPacket requestPacketWhenTeardown = requestPacket;

            requestPacketWhenTeardown.Establish = RequestPacket.Est.Teardown;
            string uniqueRcId = GetUniqueRcId(connectionId, srcPort, dstPort, slotsNumber);

            if (_responsePackets.ContainsKey(uniqueRcId))
            {
                LOG.Trace($"_responsePacketsTable contains key: {uniqueRcId}");
            }
            else
            {
                _responsePackets[uniqueRcId] = new Queue <ResponsePacket>();
            }
            _responsePackets[uniqueRcId].Enqueue(responsePacket);

            LOG.Info($"Sending RC::RouteTableQuery_res" + $"(connectionId = {connectionId}, gateway = {gateway}," +
                     $" slots = {slots.ToString()}, dstZone = {dstZone})");

            return(responsePacket);
        }
Example #6
0
        public void ValidateMeanings()
        {
            if (!_isRunning)
            {
                try
                {
                    _isRunning = true;

                    using (DataContext.Instance = new AcroniManagerDatabaseModelContainerWrapped())
                    {
                        List <int> arrangementsIDs = Checkers.Select(x => x.Arrangement.ArrangementId).Distinct().ToList();

                        foreach (Acronym acronym in DataContext.Instance.AcronymSet
                                 .Where(x => x.Meanings
                                        .Any(y => !y.Validations.Any() ||
                                             y.Validations
                                             .All(z => !arrangementsIDs.Contains(z.Arrangement.ArrangementId))
                                             )
                                        ).ToList())
                        {
                            foreach (CheckerBase checker in Checkers.Where(x => !acronym.Meanings
                                                                           .SelectMany(y => y.Validations.Select(z => z.Arrangement.ArrangementId))
                                                                           .Contains(x.Arrangement.ArrangementId)))
                            {
                                List <Meaning> validatedMeanings = checker.ValidateMeanings(acronym);
                                if (validatedMeanings != null)
                                {
                                    foreach (Meaning meaning in acronym.Meanings)
                                    {
                                        Validation validation = meaning.Validations
                                                                .FirstOrDefault(x => x.Arrangement.ArrangementId == checker.Arrangement.ArrangementId);

                                        bool pendingChanges = false;

                                        if (validation == null)
                                        {
                                            validation = new Validation
                                            {
                                                Arrangement = checker.Arrangement,
                                                Meaning     = meaning
                                            };
                                            meaning.Validations.Add(validation);

                                            if (MeaningChecked != null && meaning.Validations.Count == 1)
                                            {
                                                MeaningChecked(acronym.Caption, meaning.Caption);
                                            }

                                            pendingChanges = true;
                                        }

                                        bool validated = validatedMeanings.Any(x => x.MeaningId == meaning.MeaningId);

                                        if (validation.Validated != validated)
                                        {
                                            validation.Validated = validated;

                                            if (MeaningValidated != null && validated && meaning.Validations.Count(x => x.Validated) == 1)
                                            {
                                                MeaningValidated(acronym.Caption, meaning.Caption);
                                            }

                                            pendingChanges = true;
                                        }

                                        if (pendingChanges)
                                        {
                                            DataContext.Instance.SaveChanges();
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                finally
                {
                    _checkers            = null;
                    DataContext.Instance = null;
                    _isRunning           = false;
                }
            }
        }
Example #7
0
        public override string ToString()
        {
            var color = Checkers.Any() ? Checkers.First().Color.ToString() : "";

            return($"{Checkers.Count} {color} WN = {WhiteNumber}, BN = {BlackNumber}, ");
        }
Example #8
0
 public bool Bloat(Player.Color myColor)
 {
     return(Checkers.Count(c => c.Color == myColor) == 1);
 }
Example #9
0
 public bool IsOpen(Player.Color myColor)
 {
     //Opponent has less than two checkers on the point.
     //My own home is always open.
     return(Checkers.Count(c => c.Color != myColor) < 2 || GetNumber(myColor) == 25);
 }
Example #10
0
 public bool MyBlock(Player.Color myColor)
 {
     // Do I have a block? Home doesnt count.
     return(Checkers.Count(c => c.Color == myColor) >= 2);
 }
Example #11
0
 /// <summary>
 /// Adds Transform to Checkers dictionary by name
 /// </summary>
 private void AddTransformChecker(Checkers name)
 {
     this._checkerDictionary.Add(name, transform.Find(name.ToString()));
 }
Example #12
0
 public static void Init(TestContext tc)
 {
     classUnderTest = new Checkers();
 }
Example #13
0
 protected void RemoveChecker(Checker checker)
 {
     Checkers.Remove(checker);
     ArrangeCheckers();
 }
Example #14
0
 protected void AddChecker(Checker checker)
 {
     Checkers.Add(checker);
 }
Example #15
0
        protected void cmdSubmit_Click(object sender, EventArgs e)
        {
            Response.Redirect("StartPage.html");
            string data = "";

            coincidence      = false;
            compilationError = false;
            if (IsPostBack)
            {
                if (!String.IsNullOrWhiteSpace(Code.Text))
                {
                    data = Server.HtmlEncode(Code.Text);
                    data = data.Replace(" ", string.Empty);
                    foreach (string s in allSolv)
                    {
                        if (String.Compare(data, s) == 0)
                        {
                            coincidence = true;
                            break;
                        }
                    }
                    if (coincidence == false)
                    {
                        Label1.Text = "Данные приняты!";
                        allSolv.Add(data);
                        string[] codeText = Code.Text.Split('\n');
                        File.WriteAllLines(@"Text.cs", codeText);
                        // компиляция файла с кодом
                        var compileCSC = new Process
                        {
                            StartInfo = new ProcessStartInfo
                            {
                                FileName               = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe",
                                Arguments              = @"Text.cs",
                                UseShellExecute        = false,
                                RedirectStandardOutput = true,
                                CreateNoWindow         = true
                            }
                        };
                        compileCSC.Start();
                        string errText = compileCSC.StandardOutput.ReadToEnd();
                        if (errText.Length > 412) // шапка вывода компилятора, 412 символов
                        {
                            Label1.Text      = errText.Substring(412);
                            compilationError = true;
                        }
                        compileCSC.WaitForExit();
                        if (!compilationError)
                        {
                            checkerResult = Checkers.Check(problem);
                            switch (checkerResult)
                            {
                            case 0:
                                Label1.Text = "Решение принято!";
                                break;

                            case 1:
                                Label1.Text = "Ошибка! Неверное решение!";
                                break;

                            case 2:
                                Label1.Text = "Ошибка! Превышено время ожидания результата!";
                                break;
                            }
                        }
                    }
                    else
                    {
                        Label1.Text = "Это решение уже отправлялось на сервер!";
                    }
                }
            }
        }