예제 #1
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);
        }
예제 #2
0
        public IList <FichaDisparo> GetFichaDisparo(Game juegoActual, Posicion desdeDonde)
        {
            IList <FichaDisparo> fichasLaterales = new List <FichaDisparo>();

            for (int indice = 0; indice < juegoActual.Board.Size; indice++)
            {
                FichaDisparo ficha = new FichaDisparo(FichaRGB.GetRandomColorFicha(juegoActual.CurrentLevel.LevelNumber + 2), desdeDonde, indice);
                fichasLaterales.Add(ficha);
            }
            return(fichasLaterales);
        }
예제 #3
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);
                }
            }
        }
예제 #4
0
        public void TestWhen_GeneratingPieces()
        {
            FichaRGB newFicha = FichaRGB.GeneratePiece();

            for (int vez = 1; vez <= 100; vez++)
            {
                FichaRGB otraFicha = FichaRGB.GeneratePiece();
                if (otraFicha.Color != newFicha.Color)
                {
                    return;
                }
            }

            Assert.Fail("No se generaron dos fichas de color distinto en 100 pasadas");
        }
예제 #5
0
        public void TestWhen_GeneratingPieceColor()
        {
            ColorFicha newColor = FichaRGB.GetRandomColorFicha();

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

            Assert.Fail("No se generaron dos color distintos en 100 pasadas");
        }