Пример #1
0
        private Pieza CrearPieza(TipoPieza tipo, ColorFicha color)
        {
            var newPiece = PieceFactory.MakePiece(tipo, color, _piezaContador++);

            _piezas.Add(newPiece);
            return(newPiece);
        }
Пример #2
0
        public MovimientoFicha NuevoMovimiento(Game game, Posicion desdeDonde, int indice)
        {
            MovimientoFicha movimiento = new MovimientoFicha();

            Celda dondePonerFicha = this.DisparaFicha(game, desdeDonde, indice);

            if (dondePonerFicha != null)
            {
                IList <Celda> celdasARomper = game.Board.NuevoMovimiento(dondePonerFicha.RowIndex, dondePonerFicha.ColIndex, new FichaRGB(game.Board.FichaDisparo[desdeDonde][indice].Color));
                if (celdasARomper != null)
                {
                    movimiento.CeldaRotas    = celdasARomper;
                    movimiento.PuntosGanados = celdasARomper.Count * 10;
                    game.Score += movimiento.PuntosGanados;

                    foreach (var celda in celdasARomper)
                    {
                        game.Board.Celdas[celda.RowIndex, celda.ColIndex].Ficha = null;
                    }
                }
                ColorFicha colorFicha = FichaRGB.GetRandomColorFicha(game.CurrentLevel.LevelNumber + 2);

                while (game.Board.FichaDisparo[desdeDonde][indice].Color == colorFicha)
                {
                    colorFicha = FichaRGB.GetRandomColorFicha(game.CurrentLevel.LevelNumber + 2);
                }
                game.Board.FichaDisparo[desdeDonde][indice].Color = colorFicha;
            }

            movimiento.Juego = game;

            return(movimiento);
        }
Пример #3
0
        public bool CheckCheck(ColorFicha color)
        {
            var king          = GetKing(color);
            var enPeligro     = CasillasEnPeligro(king);
            var isKingChecked = enPeligro.Contains(king);

            return(isKingChecked);
        }
Пример #4
0
        public static Pieza MakePiece(TipoPieza tipo, ColorFicha color, int idPieza)
        {
            switch (tipo)
            {
            case TipoPieza.Peon:
                return(new Peon
                {
                    Color = color,
                    Id = idPieza,
                    Tipo = (int)tipo
                });

            case TipoPieza.Torre:
                return(new Torre
                {
                    Color = color,
                    Id = idPieza,
                    Tipo = (int)tipo
                });

            case TipoPieza.Caballero:
                return(new Caballero
                {
                    Color = color,
                    Id = idPieza,
                    Tipo = (int)tipo
                });

            case TipoPieza.Alfil:
                return(new Alfil
                {
                    Color = color,
                    Id = idPieza,
                    Tipo = (int)tipo
                });

            case TipoPieza.Reina:
                return(new Reina
                {
                    Color = color,
                    Id = idPieza,
                    Tipo = (int)tipo
                });

            case TipoPieza.Rey:
                return(new Rey
                {
                    Color = color,
                    Id = idPieza,
                    Tipo = (int)tipo
                });

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Пример #5
0
        public void TestWhen_GeneratingPiecesNoRepeted()
        {
            ColorFicha newColor = FichaRGB.GetRandomColorFicha(3);

            for (int vez = 1; vez <= 8; vez++)
            {
                ColorFicha newColorDiferent = FichaRGB.GetRandomColorFicha(3);
                if (newColor != newColorDiferent)
                {
                    Assert.AreNotEqual(newColor, newColorDiferent);
                }
            }
        }
Пример #6
0
 public static Pieza MakePiece(TipoPieza tipo, ColorFicha color, int idPieza)
 {
     switch (tipo)
     {
         case TipoPieza.Peon:
             return new Peon
             {
                 Color = color,
                 Id = idPieza,
                 Tipo = (int)tipo
             };
         case TipoPieza.Torre:
             return new Torre
             {
                 Color = color,
                 Id = idPieza,
                 Tipo = (int) tipo
             };
         case TipoPieza.Caballero:
             return new Caballero
             {
                 Color = color,
                 Id = idPieza,
                 Tipo = (int)tipo
             };
         case TipoPieza.Alfil:
             return new Alfil
             {
                 Color = color,
                 Id = idPieza,
                 Tipo = (int)tipo
             };
         case TipoPieza.Reina:
             return new Reina
             {
                 Color = color,
                 Id = idPieza,
                 Tipo = (int)tipo
             };
         case TipoPieza.Rey:
             return new Rey
             {
                 Color = color,
                 Id = idPieza,
                 Tipo = (int)tipo
             };
         default:
             throw new ArgumentOutOfRangeException();
     }
 }
Пример #7
0
        public void TestWhen_GeneratingPieceColor()
        {
            ColorFicha newColor = Ficha.GetRandomColorFicha();

            for (int vez = 1; vez <= 100; vez++)
            {
                ColorFicha otroColor = Ficha.GetRandomColorFicha();
                if (otroColor != newColor)
                {
                    return;
                }
            }

            Assert.Fail("No se generaron dos color distintos en 100 pasadas");
        }
Пример #8
0
        public Output CheckCheckMate(ColorFicha color)
        {
            var casillasOfColor = _casillas.Where(casilla => casilla.PiezaContenida != null &&
                                                  casilla.PiezaContenida.Color == color);

            foreach (var casilla in casillasOfColor)
            {
                var posiblesMovimientos = MovementPosibilitiesList(casilla);
                foreach (var posiblesMovimiento in posiblesMovimientos)
                {
                    if (MovePiece(casilla, posiblesMovimiento, true) != Output.SelfCheck)
                    {
                        return(Output.Success);
                    }
                }
            }
            return(CheckCheck(color) ? Output.CheckMate : Output.StaleMate);
        }
Пример #9
0
 public FichaDisparo(ColorFicha color, Posicion desdeDonde, int indice) : base(color)
 {
     DesdeDonde = desdeDonde;
     Indice     = indice;
 }
Пример #10
0
 private Casilla GetKing(ColorFicha color)
 {      
     return _casillas.FirstOrDefault(casilla => casilla.PiezaContenida != null 
         && (casilla.PiezaContenida.Tipo == (int) TipoPieza.Rey
         && casilla.PiezaContenida.Color == color));
 }
Пример #11
0
 public bool CheckCheck(ColorFicha color)
 {
     var king = GetKing(color);
     var enPeligro = CasillasEnPeligro(king);
     var isKingChecked = enPeligro.Contains(king);
     return isKingChecked;
 }
Пример #12
0
 public Output CheckCheckMate(ColorFicha color)
 {
     var casillasOfColor = _casillas.Where(casilla => casilla.PiezaContenida != null 
         && casilla.PiezaContenida.Color == color);
     foreach (var casilla in casillasOfColor)
     {
         var posiblesMovimientos = MovementPosibilitiesList(casilla);
         foreach (var posiblesMovimiento in posiblesMovimientos)
         {
             if(MovePiece(casilla, posiblesMovimiento,true) != Output.SelfCheck)
                 return Output.Success;
         }
     }
     return CheckCheck(color) ? Output.CheckMate : Output.StaleMate;
 }
Пример #13
0
 private  Pieza CrearPieza(TipoPieza tipo,ColorFicha color)
 {   
     var newPiece = PieceFactory.MakePiece(tipo, color, _piezaContador++);
     _piezas.Add(newPiece);
     return newPiece;
 }
Пример #14
0
 private Casilla GetKing(ColorFicha color)
 {
     return(_casillas.FirstOrDefault(casilla => casilla.PiezaContenida != null &&
                                     (casilla.PiezaContenida.Tipo == (int)TipoPieza.Rey &&
                                      casilla.PiezaContenida.Color == color)));
 }
Пример #15
0
 public FichaRGB(ColorFicha color) : this()
 {
     this.Color = color;
 }
Пример #16
0
 public Ficha(ColorFicha color)
 {
     this.Color = color;
 }