Пример #1
0
        private void MakeMove(NumsNum move)
        {
            switch (_position.PlayerToMakeMove)
            {
            case 1:
                _position.FirstPlayerMoves.Add(new NumsMove {
                    Guess = move, Count = move.GetCountFrom(_position.SecondPlayerNumber)
                });
                if ((_position.SecondPlayerMoves.LastOrDefault() == null) || (_position.SecondPlayerMoves.Last().Count.Second != 5))
                {
                    _position.PlayerToMakeMove = 2;
                }
                break;

            case 2:
                _position.SecondPlayerMoves.Add(new NumsMove {
                    Guess = move, Count = move.GetCountFrom(_position.FirstPlayerNumber)
                });
                if ((_position.FirstPlayerMoves.LastOrDefault() == null) || (_position.FirstPlayerMoves.Last().Count.Second != 5))
                {
                    _position.PlayerToMakeMove = 1;
                }
                break;
            }
        }
Пример #2
0
        public List <NumsNum> AnalysePosition(List <NumsMove> moves)
        {
            var result = new List <NumsNum>();

            for (int i = 1234; i < 98766; i++)
            {
                if (i.IsCorrect())
                {
                    var possible = true;

                    var iNum = new NumsNum(i);

                    for (int j = 0; j < moves.Count; j++)
                    {
                        var count = iNum.GetCountFrom(new NumsNum(moves[j].Guess.Num));
                        if ((count.First != moves[j].Count.First) || (count.Second != moves[j].Count.Second))
                        {
                            possible = false;
                            break;
                        }
                    }

                    if (possible)
                    {
                        result.Add(new NumsNum(i));
                    }
                }
            }

            return(result);
        }