Exemplo n.º 1
0
        private void SearchFirsWord(GameSession gameSession, TypeMove typeVertical)
        {
            var typeMove = typeVertical;
            var steps    = stepsForMoveVertical;

            while (VisibleArea == voidSpace)
            {
                steps--;
                switch (typeMove)
                {
                case TypeMove.Down:
                    VisibleArea = gameSession.Move(typeVertical);
                    if (steps <= 1)
                    {
                        typeMove = TypeMove.Right;
                        steps    = stepsForMoveHorizontal;
                    }
                    break;

                case TypeMove.Right:
                    VisibleArea = gameSession.Move(TypeMove.Right);
                    if (steps <= 1)
                    {
                        typeMove = typeVertical;
                        steps    = stepsForMoveVertical;
                    }
                    break;
                }
            }
        }
        private void OnEventMouseMove(MouseEventArgs e)
        {
            if (!(Mouse.Captured is CanBeMove))
            {
                return;
            }

            Point delta = GetDeltaMove();

            if (delta.IsClear())
            {
                return;
            }

            SumMove = SumMove.Addition(delta);
            if (this.IsMouseCaptured)
            {
                ViewModel.CommandPartMoveAllNode.ExecuteWithSubscribe(delta);
                Move = TypeMove.MoveAll;
            }
            else
            {
                ViewModel.CommandPartMoveAllSelectedNode.ExecuteWithSubscribe(delta);
                Move = TypeMove.MoveSelected;
            }
        }
Exemplo n.º 3
0
        public override List <Position> GetAListOfMoves(ChessBoard chessBoard, TypeMove typeMove)
        {
            List <Position> listOfMoves = new List <Position>();



            return(listOfMoves);
        }
Exemplo n.º 4
0
 private void SearchWordOnOneTurn(GameSession gameSession, TypeMove typeVertical)
 {
     while (VisibleArea == voidSpace)
     {
         VisibleArea = gameSession.Move(typeVertical);
         GlobalIterationIndex++;
     }
 }
Exemplo n.º 5
0
 private void SearchWordOnTor(GameSession gameSession, TypeMove typeVertical)
 {
     for (; GlobalIterationIndex < LengthOneTurn - 7; GlobalIterationIndex++)
     {
         if (VisibleArea != voidSpace)
         {
             break;
         }
         VisibleArea = gameSession.Move(typeVertical);
     }
 }
Exemplo n.º 6
0
 private void MoveInDirection(GameSession gameSession, int countMove, TypeMove typeMove)
 {
     if (typeMove == TypeMove.Down)
     {
         GlobalIterationIndex += countMove;
     }
     if (typeMove == TypeMove.Up)
     {
         GlobalIterationIndex -= countMove;
     }
     for (int i = 0; i < countMove; i++)
     {
         VisibleArea = gameSession.Move(typeMove);
     }
 }
        private void OnEventMouseLeftUp(MouseButtonEventArgs e)
        {
            if (Move == TypeMove.None)
            {
                return;
            }

            if (Move == TypeMove.MoveAll)
            {
                this.ViewModel.CommandFullMoveAllNode.Execute(SumMove);
            }
            else if (Move == TypeMove.MoveSelected)
            {
                this.ViewModel.CommandFullMoveAllSelectedNode.Execute(SumMove);
            }

            Move    = TypeMove.None;
            SumMove = new Point();
        }
Exemplo n.º 8
0
        public string Move(TypeMove typeMove)
        {
            var partToroid = "";

            try
            {
                var resp    = NetworkActions.POST(Server + "/task/move/" + typeMove.ToString(), "", Auth_key);
                var sr      = new StreamReader(resp.GetResponseStream());
                var content = sr.ReadToEnd();
                if (resp.StatusCode == HttpStatusCode.OK)
                {
                    partToroid = content;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("ERROR: " + ex.Message);
            }
            return(partToroid);
        }
Exemplo n.º 9
0
        public List <Position> GetAListOfAllMoves(ChessColor chessColor, TypeMove typeMove)
        {
            List <Position> allMoves = new List <Position>();

            if (chessColor == ChessColor.White)
            {
                foreach (Piece piece in WhitePieces)
                {
                    allMoves.AddRange(piece.GetAListOfMoves(this, typeMove));
                }
            }
            else
            {
                foreach (Piece piece in BlackPieces)
                {
                    allMoves.AddRange(piece.GetAListOfMoves(this, typeMove));
                }
            }
            allMoves = allMoves.Distinct().ToList();
            return(allMoves);
        }
Exemplo n.º 10
0
 private bool checkMove(Position position, ChessBoard chessBoard, TypeMove typeMove)
 {
     if (position.V > 0 && position.V < 9 && position.H > 0 && position.H < 9)
     {
         if (chessBoard.Board[position.V, position.H].piece == null
             ||
             chessBoard.Board[position.V, position.H].piece.color != this.color)
         {
             if (typeMove == TypeMove.PossibleAttack)
             {
                 return(true);
             }
             ChessBoard tmpChessBoard = (ChessBoard)chessBoard.Clone();
             tmpChessBoard.Move(this.position, position);
             if (tmpChessBoard.CheckKingAttacked(this.color))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Exemplo n.º 11
0
        private string RecognizeLetter(GameSession gameSession, TypeMove typeMove)
        {
            var letter             = "";
            var visiblePartLetter1 = VisibleArea.Replace("\r\n", " ").Split()
                                     .Select(line => line.Substring(4))
                                     .ToArray();

            MoveInDirection(gameSession, 2, typeMove);
            var visiblePartLetter2 = VisibleArea.Replace("\r\n", " ").Split()
                                     .Select(line => line.Substring(4));

            visiblePartLetter2 = typeMove == TypeMove.Down ? visiblePartLetter2.Skip(3).ToArray():
                                 visiblePartLetter2.Take(2).ToArray();
            var visibleLetter = typeMove == TypeMove.Down ? visiblePartLetter1.Concat(visiblePartLetter2).ToArray():
                                visiblePartLetter2.Concat(visiblePartLetter1).ToArray();

            letter += visibleLetter[0];
            for (int i = 1; i < visibleLetter.Length; i++)
            {
                letter += ' ' + visibleLetter[i];
            }
            return(letter);
        }
Exemplo n.º 12
0
 public abstract List <Position> GetAListOfMoves(ChessBoard chessBoard, TypeMove typeMove);
Exemplo n.º 13
0
        public override List <Position> GetAListOfMoves(ChessBoard chessBoard, TypeMove typeMove)
        {
            List <Position> listOfMoves = new List <Position>();

            //UP
            bool up = checkMove(new Position {
                V = this.position.V - 1, H = this.position.H
            }, chessBoard, typeMove);

            for (int i = this.position.V - 1, j = this.position.H; up && i > 0; i--)
            {
                if (chessBoard.Board[i, j].piece == null)
                {
                    listOfMoves.Add(new Position {
                        V = i, H = j
                    });
                }
                else
                {
                    if (chessBoard.Board[i, j].piece.color != this.color)
                    {
                        listOfMoves.Add(new Position {
                            V = i, H = j
                        });
                    }
                    break;
                }
            }
            //DOWN
            bool down = checkMove(new Position {
                V = this.position.V + 1, H = this.position.H
            }, chessBoard, typeMove);

            for (int i = this.position.V + 1, j = this.position.H; down && i < 9; i++)
            {
                if (chessBoard.Board[i, j].piece == null)
                {
                    listOfMoves.Add(new Position {
                        V = i, H = j
                    });
                }
                else
                {
                    if (chessBoard.Board[i, j].piece.color != this.color)
                    {
                        listOfMoves.Add(new Position {
                            V = i, H = j
                        });
                    }
                    break;
                }
            }
            //LEFT
            bool left = checkMove(new Position {
                V = this.position.V, H = this.position.H - 1
            }, chessBoard, typeMove);

            for (int i = this.position.V, j = this.position.H - 1; left && j > 0; j--)
            {
                if (chessBoard.Board[i, j].piece == null)
                {
                    listOfMoves.Add(new Position {
                        V = i, H = j
                    });
                }
                else
                {
                    if (chessBoard.Board[i, j].piece.color != this.color)
                    {
                        listOfMoves.Add(new Position {
                            V = i, H = j
                        });
                    }
                    break;
                }
            }
            //RIGHT
            bool right = checkMove(new Position {
                V = this.position.V, H = this.position.H + 1
            }, chessBoard, typeMove);

            for (int i = this.position.V, j = this.position.H + 1; right && j < 9; j++)
            {
                if (chessBoard.Board[i, j].piece == null)
                {
                    listOfMoves.Add(new Position {
                        V = i, H = j
                    });
                }
                else
                {
                    if (chessBoard.Board[i, j].piece.color != this.color)
                    {
                        listOfMoves.Add(new Position {
                            V = i, H = j
                        });
                    }
                    break;
                }
            }

            return(listOfMoves);
        }
Exemplo n.º 14
0
        public override List <Position> GetAListOfMoves(ChessBoard chessBoard, TypeMove typeMove)
        {
            List <Position> listOfMoves = new List <Position>();

            //UP
            if (checkMove(new Position {
                V = this.position.V - 1, H = this.position.H
            }, chessBoard, typeMove))
            {
                listOfMoves.Add(new Position {
                    V = this.position.V - 1, H = this.position.H
                });
            }
            //DOWN
            if (checkMove(new Position {
                V = this.position.V + 1, H = this.position.H
            }, chessBoard, typeMove))
            {
                listOfMoves.Add(new Position {
                    V = this.position.V + 1, H = this.position.H
                });
            }
            //LEFT
            if (checkMove(new Position {
                V = this.position.V, H = this.position.H - 1
            }, chessBoard, typeMove))
            {
                listOfMoves.Add(new Position {
                    V = this.position.V, H = this.position.H - 1
                });
            }
            //RIGHT
            if (checkMove(new Position {
                V = this.position.V, H = this.position.H + 1
            }, chessBoard, typeMove))
            {
                listOfMoves.Add(new Position {
                    V = this.position.V, H = this.position.H + 1
                });
            }
            //UL
            if (checkMove(new Position {
                V = this.position.V - 1, H = this.position.H - 1
            }, chessBoard, typeMove))
            {
                listOfMoves.Add(new Position {
                    V = this.position.V - 1, H = this.position.H - 1
                });
            }
            //UR
            if (checkMove(new Position {
                V = this.position.V - 1, H = this.position.H + 1
            }, chessBoard, typeMove))
            {
                listOfMoves.Add(new Position {
                    V = this.position.V - 1, H = this.position.H + 1
                });
            }
            //DL
            if (checkMove(new Position {
                V = this.position.V + 1, H = this.position.H - 1
            }, chessBoard, typeMove))
            {
                listOfMoves.Add(new Position {
                    V = this.position.V + 1, H = this.position.H - 1
                });
            }
            //DR
            if (checkMove(new Position {
                V = this.position.V + 1, H = this.position.H + 1
            }, chessBoard, typeMove))
            {
                listOfMoves.Add(new Position {
                    V = this.position.V + 1, H = this.position.H + 1
                });
            }

            /*
             * if (castling)
             * {
             *  //LEFT CASTLING
             *  List<Position> leftCastlingList = new List<Position>();
             *  leftCastlingList.Add(new Position { V = this.position.V, H = this.position.H - 1 });
             *  leftCastlingList.Add(new Position { V = this.position.V, H = this.position.H - 2 });
             *
             *  if (
             *      chessBoard.Board[this.position.V, this.position.H - 1].piece == null
             *      &&
             *      chessBoard.Board[this.position.V, this.position.H - 2].piece == null
             *      &&
             *      chessBoard.Board[this.position.V, this.position.H - 3].piece == null
             *      &&
             *      chessBoard.Board[this.position.V, this.position.H - 4].piece is Rook
             *      &&
             *      ((Rook)chessBoard.Board[this.position.V, this.position.H - 4].piece).castling
             *      &&
             *      chessBoard.CheckCellsIsAttacked(leftCastlingList, this.color)
             *     )
             *  {
             *      listOfMoves.Add(new Position { V = this.position.V, H = this.position.H - 2 });
             *  }
             *  //RIGHT CASTLING
             *  List<Position> rightCastlingList = new List<Position>();
             *  leftCastlingList.Add(new Position { V = this.position.V, H = this.position.H + 1 });
             *  leftCastlingList.Add(new Position { V = this.position.V, H = this.position.H + 2 });
             *  if (
             *      chessBoard.Board[this.position.V, this.position.H + 1].piece == null
             *      &&
             *      chessBoard.Board[this.position.V, this.position.H + 2].piece == null
             *      &&
             *      chessBoard.Board[this.position.V, this.position.H + 3].piece is Rook
             *      &&
             *      ((Rook)chessBoard.Board[this.position.V, this.position.H + 3].piece).castling
             *      &&
             *      chessBoard.CheckCellsIsAttacked(rightCastlingList, this.color)
             *     )
             *  {
             *      listOfMoves.Add(new Position { V = this.position.V, H = this.position.H + 2 });
             *  }
             * }
             */
            return(listOfMoves);
        }
Exemplo n.º 15
0
        public override List <Position> GetAListOfMoves(ChessBoard chessBoard, TypeMove typeMove)
        {
            List <Position> listOfMoves = new List <Position>();

            int side;

            if (this.color == ChessColor.White)
            {
                side = -1;
            }
            else
            {
                side = +1;
            }


            if (typeMove == TypeMove.Move)
            {
                ChessBoard tmpChessBoard = (ChessBoard)chessBoard.Clone();
                tmpChessBoard.Move(this.position, new Position {
                    V = this.position.V + (1 * side), H = this.position.H
                });
                //UP
                if (chessBoard.Board[this.position.V + (1 * side), this.position.H].piece == null
                    &&
                    tmpChessBoard.CheckKingAttacked(this.color)
                    )
                {
                    listOfMoves.Add(new Position {
                        V = this.position.V + (1 * side), H = this.position.H
                    });
                    //UP2
                    if (first && chessBoard.Board[this.position.V + (2 * side), this.position.H].piece == null)
                    {
                        listOfMoves.Add(new Position {
                            V = this.position.V + (2 * side), H = this.position.H
                        });
                    }
                }


                //L
                if (this.position.H - 1 > 0)
                {
                    if (
                        (
                            chessBoard.Board[this.position.V + (1 * side), this.position.H - 1].piece != null
                            &&
                            chessBoard.Board[this.position.V + (1 * side), this.position.H - 1].piece.color != this.color
                        )
                        ||
                        (
                            chessBoard.Board[this.position.V, this.position.H - 1].piece is Pawn
                            &&
                            ((Pawn)chessBoard.Board[this.position.V, this.position.H - 1].piece).takeOnTheAisle
                            &&
                            chessBoard.Board[this.position.V, this.position.H - 1].piece.color != this.color
                        )
                        )
                    {
                        tmpChessBoard = (ChessBoard)chessBoard.Clone();
                        tmpChessBoard.Move(this.position, new Position {
                            V = this.position.V + (1 * side), H = this.position.H - 1
                        });

                        if (tmpChessBoard.CheckKingAttacked(this.color))
                        {
                            listOfMoves.Add(new Position {
                                V = this.position.V + (1 * side), H = this.position.H - 1
                            });
                        }
                    }
                }
                //R
                if (this.position.H + 1 < 9)
                {
                    if (
                        (
                            chessBoard.Board[this.position.V + (1 * side), this.position.H + 1].piece != null
                            &&
                            chessBoard.Board[this.position.V + (1 * side), this.position.H + 1].piece.color != this.color
                        )
                        ||
                        (
                            chessBoard.Board[this.position.V, this.position.H + 1].piece is Pawn
                            &&
                            ((Pawn)chessBoard.Board[this.position.V, this.position.H + 1].piece).takeOnTheAisle
                            &&
                            chessBoard.Board[this.position.V, this.position.H + 1].piece.color != this.color
                        )
                        )
                    {
                        tmpChessBoard = (ChessBoard)chessBoard.Clone();
                        tmpChessBoard.Move(this.position, new Position {
                            V = this.position.V + (1 * side), H = this.position.H + 1
                        });
                        if (tmpChessBoard.CheckKingAttacked(this.color))
                        {
                            listOfMoves.Add(new Position {
                                V = this.position.V + (1 * side), H = this.position.H + 1
                            });
                        }
                    }
                }
            }
            else
            {
                //L
                if (this.position.H - 1 > 0)
                {
                    listOfMoves.Add(new Position {
                        V = this.position.V + (1 * side), H = this.position.H - 1
                    });
                }
                //R
                if (this.position.H + 1 < 9)
                {
                    listOfMoves.Add(new Position {
                        V = this.position.V + (1 * side), H = this.position.H + 1
                    });
                }
            }

            return(listOfMoves);
        }
Exemplo n.º 16
0
        public override List <Position> GetAListOfMoves(ChessBoard chessBoard, TypeMove typeMove)
        {
            List <Position> listOfMoves = new List <Position>();

            //UL
            bool ul = checkMove(new Position {
                V = this.position.V - 1, H = this.position.H - 1
            }, chessBoard, typeMove);

            for (int i = this.position.V - 1, j = this.position.H - 1; ul && i > 0 && j > 0; i--, j--)
            {
                if (chessBoard.Board[i, j].piece == null)
                {
                    listOfMoves.Add(new Position {
                        V = i, H = j
                    });
                }
                else
                {
                    if (chessBoard.Board[i, j].piece.color != this.color)
                    {
                        listOfMoves.Add(new Position {
                            V = i, H = j
                        });
                    }
                    break;
                }
            }
            //UR
            bool ur = checkMove(new Position {
                V = this.position.V - 1, H = this.position.H + 1
            }, chessBoard, typeMove);

            for (int i = this.position.V - 1, j = this.position.H + 1; ur && i > 0 && j < 9; i--, j++)
            {
                if (chessBoard.Board[i, j].piece == null)
                {
                    listOfMoves.Add(new Position {
                        V = i, H = j
                    });
                }
                else
                {
                    if (chessBoard.Board[i, j].piece.color != this.color)
                    {
                        listOfMoves.Add(new Position {
                            V = i, H = j
                        });
                    }
                    break;
                }
            }
            //DL
            bool dl = checkMove(new Position {
                V = this.position.V + 1, H = this.position.H - 1
            }, chessBoard, typeMove);

            for (int i = this.position.V + 1, j = this.position.H - 1; dl && i < 9 && j > 0; i++, j--)
            {
                if (chessBoard.Board[i, j].piece == null)
                {
                    listOfMoves.Add(new Position {
                        V = i, H = j
                    });
                }
                else
                {
                    if (chessBoard.Board[i, j].piece.color != this.color)
                    {
                        listOfMoves.Add(new Position {
                            V = i, H = j
                        });
                    }
                    break;
                }
            }
            //DR
            bool dr = checkMove(new Position {
                V = this.position.V + 1, H = this.position.H + 1
            }, chessBoard, typeMove);

            for (int i = this.position.V + 1, j = this.position.H + 1; dr && i < 9 && j < 9; i++, j++)
            {
                if (chessBoard.Board[i, j].piece == null)
                {
                    listOfMoves.Add(new Position {
                        V = i, H = j
                    });
                }
                else
                {
                    if (chessBoard.Board[i, j].piece.color != this.color)
                    {
                        listOfMoves.Add(new Position {
                            V = i, H = j
                        });
                    }
                    break;
                }
            }

            return(listOfMoves);
        }