Пример #1
0
 public void si_añadimos_dos_veces_una_ficha_del_mismo_tipo_en_posiciones_distintas_se_lanza_excepcion()
 {
     var tablero = new Tablero();
     tablero.AddFicha(Fichas.Aspa, new Posicion(0, 0));
     tablero.AddFicha(Fichas.Circulo, new Posicion(1, 0));
     Assert.Throws<InvalidOperationException>(() => tablero.AddFicha(Fichas.Circulo, new Posicion(1, 0)));
 }
Пример #2
0
        public MainWindow()
        {
            InitializeComponent();

            imagen = new BitmapImage(new Uri(System.IO.Directory.GetCurrentDirectory() + @"\Imagenes\imagen.jpg"));
            Rectangle rectangle = new Rectangle();
            rectangle.Width = 500;
            rectangle.Height = 500;
            rectangle.Fill = new ImageBrush(imagen);

            tablero = new Tablero(3, 3, imagen);

            foreach (Pieza p in tablero.Piezas)
            {
                Rectangle r = new Rectangle();
                r.Width = Canvas.Width / tablero.Filas;
                r.Height = Canvas.Height / tablero.Columnas;
                r.Fill = new ImageBrush(p.Imagen);
                r.Stroke = new SolidColorBrush(Colors.Black);
                r.StrokeThickness = 1;
                r.SetValue(Canvas.LeftProperty, Convert.ToDouble(p.Columna * (Canvas.Width / tablero.Filas)));
                r.SetValue(Canvas.TopProperty, Convert.ToDouble(p.Fila * (Canvas.Height / tablero.Columnas)));
                Canvas.Children.Add(r);
            }
        }
Пример #3
0
 public Game()
 {
     InitializeComponent();
     TheGame = new Tablero();
     J1 = new Jugador();
     J2 = new Jugador();
 }
Пример #4
0
 private void IniciaJuego()
 {
     marBotones = new Button[N, N];
     creaEscenario();
     // Crea el tablero con los barcos
     tb = new Tablero(N, N, quedan);
 }
Пример #5
0
 /**
  * Este constructor nos permite crear un tablero idéntico a otro ya existente.
  */
 public Tablero(Tablero tablero)
 {
     tamaño = tablero.getTamaño();
     celdas = new Celda[tamaño, tamaño];
     for (int a = 0; a < getTamaño(); a++)
         for (int b = 0; b < getTamaño(); b++)
             getTablero()[a, b] = new Celda(a, b, tablero.getCelda(a,b).getFicha());
 }
Пример #6
0
        public void si_añado_una_ficha_a_un_tablero_iniciado_este_contendra_una_ficha_en_la_posicion_indicada()
        {
            var tablero = new Tablero();
            var turno = new Turno();
            var ficha = turno.GetFichaActual();

            byte fila = 0;
            byte columna = 2;
            var posicion = new Posicion(fila,columna);
            tablero.AddFicha(ficha, posicion);

            Assert.Equal(1,tablero.GetNumeroFichas());
            Assert.Equal(ficha,tablero.GetFicha(posicion));
        }
Пример #7
0
 public override void GenerarMovLegales(int esq, Tablero tab)
 {
     for (int j = 0; j < BdMov[esq][0].Length; j++)
     {
         int casPosible = BdMov[esq][0][j];
         if (tab[casPosible].Tipo == null)
         {
             tab[casPosible].Movs[this.Color].Insertar(esq, tab);
         }
         else
         {
             tab[casPosible].Movs[this.Color].Insertar(esq, tab);
         }
     }
 }
Пример #8
0
    public override void GenerarMovDestino(int esq, Movimiento mov, Tablero tab)
    {
        tab[mov.Destino].Movs[this.Color].Eliminar(esq);
        tab[mov.Destino].Bloqueados.Insertar(esq, tab);
        int fila = (esq - esq % 8) / 8;

        if (this.Color == 0 && fila == 1 && mov.Destino == esq + 8)
        {
            tab[esq + 16].Movs[this.Color].Eliminar(esq);
        }
        else if (this.Color == 1 && fila == 6 && mov.Destino == esq - 8)
        {
            tab[esq - 16].Movs[this.Color].Eliminar(esq);
        }
    }
Пример #9
0
        public void TestPacmanColisionaFantasma()
        {
            //Arrange
            Tablero t = new Tablero(3, 3);

            t.setPersonaje(0, 0, 1, 1, 0);
            t.setPersonaje(1, 1, 1, 0, -1);

            //Act
            t.muevePacman();
            bool captura = t.captura();

            //Assert
            Assert.IsTrue(captura, "Fallo: pacman no capturado");
        }
Пример #10
0
    /// <summary>
    /// Expandimos la lista, con todos los vecinos walkables por el usuario
    /// </summary>
    /// <param name="board"></param>
    /// <returns></returns>
    public List <Nodo> Expandir(Tablero board)
    {
        List <Nodo> result  = new List <Nodo>();
        List <Cell> vecinos = estado.getVecinosWalkables(board);

        for (int i = 0; i < vecinos.Count; i++)
        {
            Cell vecino = vecinos[i];

            Nodo nuevo = new Nodo(vecino, this);
            result.Add(nuevo);
        }

        return(result);
    }
Пример #11
0
        public void TestPosiblesDirecciones4()
        {
            //Arrange
            Tablero t = new Tablero(3, 3);

            t.setPersonaje(1, 1, 1, 1, 1);
            ListaPares l;
            int        cont;

            //Act
            t.posiblesDirs(1, out l, out cont);

            //Assert
            Assert.AreEqual(4, cont, "Fallo: direcciones invalidas, se espera 0");
        }
        /// <summary>
        /// Guarda una copia del tablero en la ruta del archivo especificado.
        /// </summary>
        /// <param name="filePath">La ruta en donde se guardará el archivo.</param>
        /// <param name="saveInput">Los parametros de entrada que recibe la función de guardado.</param>
        private static Boolean SaveTablero(String filePath, Object saveInput)
        {
            var             data           = (Object[])saveInput;
            Tablero         tablero        = data[0] as Tablero;
            Action <Object> task_completed = data[1] as Action <Object>;
            Boolean         flag           = false;

            try
            {
                //Copiamos el archivo base de tableros
                File.Copy(TabalimApp.TableroDBPath, filePath, tablero.Path == filePath);
                SQLiteWrapper tr = new SQLiteWrapper(filePath)
                {
                    TransactionTask = (SQLite_Connector conn, Object input) =>
                    {
                        try
                        {
                            List <Componente> cmps;
                            List <Circuito>   ctos;
                            Tablero           t = ((Tablero)input).Clone(out cmps, out ctos);
                            //Se inserta el tablero
                            InsertTableroTask(conn, t);
                            //Se se insertan los circuitos
                            ctos.ForEach(x => x.GetLastId <Circuito>(conn, t));
                            //Se insertan los componentes
                            cmps.ForEach(cmp => cmp.GetLastId <Componente>(conn, ctos.FirstOrDefault(cto => cto.ToString() == cmp.CircuitoName)));
                            return(new object[] { true, String.Format("Tablero guardado de forma correcta en \n{0}.", filePath) });
                        }
                        catch (Exception exc)
                        {
                            return(new object[] { false, String.Format("Error al guardar el tablero\nDetalles: {0}", exc.Message) });
                        }
                    },
                    TaskCompleted = (Object result) => { task_completed(result); }
                };
                tr.Run(tablero);
                flag = true;
            }
            catch (IOException exc)
            {
                task_completed(new object[] { false, String.Format("Error al guardar el tablero\nDetalles: {0}\nPara remplazar el archivo utilice guardar como.", exc.Message) });
            }
            catch (Exception exc)
            {
                task_completed(new object[] { false, String.Format("Error al guardar el tablero\nDetalles: {0}", exc.Message) });
            }
            return(flag);
        }
Пример #13
0
        public void WriteXML(Tablero tablero, string ruta)
        {
            XmlTextWriter writer = null;

            writer = new XmlTextWriter(ruta, null);

            writer.WriteStartDocument();
            writer.Formatting  = Formatting.Indented;
            writer.Indentation = 3;

            writer.WriteStartElement("tablero");

            int acc = 0;

            for (int i = 0; i < tablero.filas; i++)
            {
                for (int j = 0; j < tablero.columnas; j++)
                {
                    if (tablero.fichas[acc].color != null)
                    {
                        writer.WriteStartElement("ficha");
                        writer.WriteStartElement("color");
                        writer.WriteString(tablero.fichas[acc].color); //COLOR
                        writer.WriteEndElement();
                        writer.WriteStartElement("columna");
                        writer.WriteString(Globals.columnas[j]);//COLUMNA
                        writer.WriteEndElement();
                        writer.WriteStartElement("fila");
                        writer.WriteString(Globals.filas[i]);//FILA
                        writer.WriteEndElement();
                        writer.WriteEndElement();
                    }

                    acc++;
                }
            }

            writer.WriteStartElement("siguienteTiro"); //Poner el siguiente tiro
            writer.WriteStartElement("color");
            writer.WriteString(tablero.color);
            writer.WriteEndElement();
            writer.WriteEndElement();

            writer.WriteEndElement();

            writer.WriteEndDocument();
            writer.Close();
        }
        static void ArrancaJuego(string[,] a)
        {
            ConsoleKey op;                        //Para la gestión de lo que quiera el usuario.
            Tablero    miTablero = new Tablero(); //Genera la estructura que usaremos.

            string[,] juego = new string[25, 80];
            int cont = 0;

            Console.Clear();
            juego = a;
            Console.WriteLine("\n\n\t\tI --> Iterar    A --> Automatico");

            do
            {
                Console.Title = ("Generación: " + cont);
                op            = Console.ReadKey(true).Key;

                switch (op)
                {
                case ConsoleKey.I:

                    miTablero.PintaTablero(juego);
                    juego = miTablero.AvanzarGeneracio(juego);
                    cont++;
                    break;

                case ConsoleKey.A:
                    do
                    {
                        Console.Title = ("Generación: " + cont);
                        miTablero.PintaTablero(juego);
                        miTablero.AvanzarGeneracio(juego);
                        cont++;
                    } while (!Console.KeyAvailable);
                    break;

                case ConsoleKey.R:

                    juego = miTablero.GeneracionALEA();
                    break;

                case ConsoleKey.S:
                    miTablero.GuardarTablero(juego);
                    break;
                }
            } while (op != ConsoleKey.M);
            return;
        }
Пример #15
0
        public int Ficha_seleccionada(Tablero tablero)
        {
            int index = -1, acc = 0;

            foreach (Ficha ficha in tablero.fichas)
            {
                if (ficha.presionado == "true")
                {
                    index = acc;
                }

                acc++;
            }

            return(index);
        }
Пример #16
0
        public void TestSiguienteCeldaVaciaDerecha()
        {
            //Arrange
            Tablero tPruebas = new Tablero(3, 3);
            int     posX = 1;
            int     posY = 1;
            int     nx, ny;

            //Act
            bool puedeMover = tPruebas.siguiente(posX, posY, 0, 1, out nx, out ny);

            //Assert
            Assert.IsTrue(puedeMover);
            Assert.AreEqual(1, nx, "Coordenada X incorrecta al ejecutar siguiente");
            Assert.AreEqual(2, ny, "Coordenada Y incorrecta al ejecutar siguiente");
        }
Пример #17
0
        public void TestSiguienteToroideIzquierda()
        {
            //Arrange
            Tablero tPruebas = new Tablero(3, 3);
            int     posX = 2;
            int     posY = 0;
            int     nx, ny;

            //Act
            bool puedeMover = tPruebas.siguiente(posX, posY, 0, -1, out nx, out ny);

            //Assert
            Assert.IsTrue(puedeMover);
            Assert.AreEqual(2, nx, "Coordenada X incorrecta al ejecutar siguiente");
            Assert.AreEqual(2, ny, "Coordenada Y incorrecta al ejecutar siguiente");
        }
Пример #18
0
        public void si_todas_las_fichas_de_misma_columna_son_iguales_ganan_esas_fichas()
        {
            Tablero tablero = new Tablero();
            var turno = new Turno();

            for (byte i = 0; i < DimensionTableroMenosUno; i++)
            {
                tablero.AddFicha(turno.GetFichaActual(), new Posicion(i, 1));
                tablero.AddFicha(turno.GetFichaActual(), new Posicion(i, 0));
            }

            Assert.Equal(null, tablero.GetGanador());
            var ficha = turno.GetFichaActual();
            tablero.AddFicha(ficha, new Posicion ( DimensionTableroMenosUno,1));
            Assert.Equal(ficha, tablero.GetGanador());
        }
Пример #19
0
        public void Acaba()
        {
            //Arrange
            Tablero tab = new Tablero(3, 3);

            tab.setNumComida(3);
            //Act
            bool noacaba = tab.finNivel();

            tab.setNumComida(0);
            bool acaba = tab.finNivel();

            //Assert
            Assert.IsFalse(noacaba, "Error, todavia sigue habiendo comida");
            Assert.IsTrue(acaba, "Error, ya no hay comida");
        }
Пример #20
0
    public virtual void GenerarMovLegales(int esq, Tablero tab)
    {
        for (int dir = 0; dir < BdMov[esq].Length; dir++)
        {
            for (int j = 0; j < BdMov[esq][dir].Length; j++)
            {
                int casPosible = BdMov[esq][dir][j];
                tab[casPosible].Movs[this.Color].Insertar(esq, tab);

                if (tab[casPosible].Tipo != null)
                {
                    break;
                }
            }
        }
    }
Пример #21
0
 private void buttonGoTablero_Click(object sender, EventArgs e)
 {
     if (tableroSeleccionado != null)
     {
         TABLERO formTablero = new TABLERO();
         tableroSeleccionado = (Tablero)dgvTableros.CurrentRow.DataBoundItem;
         formTablero.recibirDatosDeHome(tableroSeleccionado, userLogueado);
         AddOwnedForm(formTablero);
         this.Hide();
         formTablero.ShowDialog();
     }
     else
     {
         MessageBox.Show("Por favor seleccione un tablero");
     }
 }
Пример #22
0
    public void enrocarDerecha(Pieza pieza, Tablero tablero, Posicion nuevaPosicion)
    {
        pieza.efectuarMovimiento(nuevaPosicion, tablero);
        Pieza torreDerecha;

        if (pieza.obtenerColor() == "Negro")
        {
            torreDerecha = tablero.piezaEn(new Posicion(7, 7));
            torreDerecha.efectuarMovimiento(new Posicion(5, 7), tablero);
        }
        else if (pieza.obtenerColor() == "Blanco")
        {
            torreDerecha = tablero.piezaEn(new Posicion(7, 0));
            torreDerecha.efectuarMovimiento(new Posicion(5, 0), tablero);
        }
    }
Пример #23
0
 //creacion de un tablero con valores por defecto.
 static void CreaTableroVacio(out Tablero tab)
 {
     tab.fils  = tab.cols = 0;
     tab.fijas = new Casilla[50, 50];
     tab.cajas = new bool[50, 50];
     for (int i = 0; i < 50; i++)
     {
         for (int j = 0; j < 50; j++)
         {
             tab.fijas[i, j] = Casilla.Muro;
             tab.cajas[i, j] = false;
         }
     }
     tab.jugX = 0;
     tab.jugY = 0;
 }
Пример #24
0
        public void TestMueveToroidePacmanArriba()
        {
            //Arrange
            Tablero t = new Tablero(3, 3);

            t.setPersonaje(0, 0, 2, -1, 0);
            ListaPares l;
            int        cont;

            //Act
            t.muevePacman();
            t.posiblesDirs(0, out l, out cont);
            //Assert
            Assert.AreEqual(2, t.getPersonaje(0).posX, "Posicion X incorrecta de Pacman");
            Assert.AreEqual(2, t.getPersonaje(0).posY, "Posicion Y incorrecta de Pacman");
        }
Пример #25
0
 private void Tablero_CellClick(object sender, DataGridViewCellEventArgs e)
 {
     if (!endCondition)
     {
         if (usarBandera)
         {
             Marcar(e.ColumnIndex, e.RowIndex);
         }
         else if (Tablero[e.ColumnIndex, e.RowIndex].Style.BackColor != Color.Red)
         {
             Revelar(e.ColumnIndex, e.RowIndex);
         }
         CheckWin();
     }
     Tablero.ClearSelection();
 }
Пример #26
0
        public void SiguienteToroRight()
        {
            //Arrange
            Tablero tab = new Tablero(3, 3);
            int     posX = 1;
            int     posY = 2;
            int     nx, ny;

            //Act
            bool PuedeMover = tab.siguiente(posX, posY, 0, 1, out nx, out ny);

            //Arrange
            Assert.IsTrue(PuedeMover, "Error, debería poderse mover");
            Assert.AreEqual(nx, 1, "Error, no se debería haber cambiado de fila");
            Assert.AreEqual(ny, 0, "Error, tendria que estar en el lado izquierdo");
        }
Пример #27
0
        public void SiguienteToroUp()
        {
            //Arrange
            Tablero tab = new Tablero(3, 3);
            int     posX = 0;
            int     posY = 1;
            int     nx, ny;

            //Act
            bool PuedeMover = tab.siguiente(posX, posY, -1, 0, out nx, out ny);

            //Arrange
            Assert.IsTrue(PuedeMover, "Error, debería poderse mover");
            Assert.AreEqual(nx, 2, "Error, debería estar abajo tras salir por arriba");
            Assert.AreEqual(ny, 1, "Error, no se debería haber cambiado de columna");
        }
Пример #28
0
    public void Desbloquear(int esq, int origen, Tablero tab)
    {
        tab[origen].Bloqueados.Eliminar(esq);
        tab[origen].Movs[this.Color].Insertar(esq, tab);

        int fila = (esq - esq % 8) / 8;

        if (this.Color == 0 && fila == 1 && origen == esq + 8)
        {
            tab[esq + 16].Movs[this.Color].Insertar(esq, tab);
        }
        else if (this.Color == 1 && fila == 6 && origen == esq - 8)
        {
            tab[esq - 16].Movs[this.Color].Insertar(esq, tab);
        }
    }
Пример #29
0
        public ActionResult Sala(Ronda ronda)
        {
            Tablero tablero_temp = new Tablero(8, 8, "negro", Globals.campeonato.Ronda_actual.Partida_actual.Jugador1, Globals.campeonato.Ronda_actual.Partida_actual.Jugador2);

            tablero_temp.modalidad = "Normal";
            tablero_temp.Iniciar(false);

            ronda.Partida_actual.tablero = tablero_temp;

            Globals.campeonato.Ronda_actual = ronda;

            ViewBag.Message     = Globals.campeonato.Ronda_actual.Partida_actual.Jugador1 + " VS " + Globals.campeonato.Ronda_actual.Partida_actual.Jugador2;
            ViewBag.MessageType = "neutral-message";

            return(View("Juego", ronda.Partida_actual));
        }
Пример #30
0
        public static void Main(string[] args)
        {
            Console.WriteLine("Bienvenido al Buscaminas. \nSi quieres cargar una partida ya empezada pulsa C si quieres empezar una nueva pulsa N");
            string resp = Console.ReadLine();

            if (resp == "c" || resp == "C")
            {
                Console.WriteLine("Introduce el nombre de la partidaque que quieres cargar:");
                resp = Console.ReadLine();
                Jugar(CargarEstado(resp));
            }
            else if (resp == "n" || resp == "N")
            {
                bool empezar = false;
                int  fils    = 1;
                int  cols    = 1;
                int  minas   = 1;
                while (!empezar)
                {
                    Console.WriteLine("Introduce el numero de filas del tablero(entre 6 y 100):");
                    fils = int.Parse(Console.ReadLine());
                    if (fils > 5 && fils <= 100)
                    {
                        empezar = true;
                    }
                    Console.WriteLine("Introduce el numero de columnas del tablero(entre 6 y 100):");
                    cols = int.Parse(Console.ReadLine());
                    if (cols <= 5 && cols > 100)
                    {
                        empezar = false;
                    }
                    Console.WriteLine("Introduce el numero de minas del nivel:");
                    minas = int.Parse(Console.ReadLine());
                    if (!empezar)
                    {
                        Console.WriteLine("Alguno de los datos introducidos no está en el rango.");
                    }
                }
                Tablero tablero = creaTablero(fils, cols, minas);

                Jugar(tablero);
            }
            else
            {
                Console.WriteLine("Comando desconocido.");
            }
        }
Пример #31
0
        public static void Main(string[] args)
        {
            //declaramos e inicializamos los objetos
            Tablero tablero  = new Tablero();
            Jugador jugador1 = new Jugador("X");
            Jugador jugador2 = new Jugador("O");
            //inicializamos las variables

            int jugador_actual = 1;
            int ficha_actual   = 1;

            //iniciamos un bucle que dure indifinidamente hasta
            //que el juego finalice
            while (true)
            {
                tablero.PintarTablero();
                if (ficha_actual == 0)
                {
                    Console.Write("Jugador {0}: ingrese el número de la ficha a mover: ", jugador_actual, ficha_actual);
                    ficha_actual = Convert.ToInt32(Console.ReadLine());
                }
                Console.Write("Jugador {0}: ingrese posición para la ficha {1}:", jugador_actual, ficha_actual);
                int posicion_elegida = Convert.ToInt32(Console.ReadLine());
                //imprimiendo el tipo ficha apropiado según el
                //jugador actual
                if (jugador_actual == 1)
                {
                    tablero.posiciones[posicion_elegida] = jugador1.tipo_ficha;
                }
                else
                {
                    tablero.posiciones[posicion_elegida] = jugador2.tipo_ficha;
                }

                jugador_actual++;
                if (jugador_actual == 3)
                {
                    jugador_actual = 1;
                    ficha_actual++;
                    if (ficha_actual == 4)
                    {
                        ficha_actual = 0;
                    }
                }
            }
            Console.ReadLine();
        }
Пример #32
0
        public void NoCambiaAIzquierda()
        {
            //Arrange
            Tablero tab = new Tablero(3, 3);

            tab.setPersonaje(0, 1, 1, -1, 0);//dir original hacia arriba
            tab.cambiaCasilla(0, 0, Tablero.Casilla.Muro);
            tab.cambiaCasilla(1, 0, Tablero.Casilla.Muro);
            tab.cambiaCasilla(2, 0, Tablero.Casilla.Muro);

            //Act
            bool HaCambiado = tab.cambiaDir('l');

            //Arrange
            Assert.IsFalse(HaCambiado, "Error, no debería haberse cambiado la dir");
            Assert.IsTrue(tab.pers[0].dirX == -1 && tab.pers[0].dirY == 0, "Error, debería seguir moviendose hacia arriba");
        }
        static void Main(string[] args)
        {
            Tablero miTablero = new Tablero
            {
                DimensionX = 100,
                DimensionY = 100
            };

            Personaje personaje = new Personaje();

            //miTablero.Poblacion[0] = personaje;
            miTablero.AgregarPersonaje(personaje);

            Console.WriteLine(miTablero);

            Console.ReadKey();
        }
Пример #34
0
        public void TestMueveToroidePacmanIzquierdaMuro()
        {
            //Arrange
            Tablero t = new Tablero(3, 3);

            t.setPersonaje(0, 2, 0, 0, -1);
            t.cambiaCasilla(2, 2, Tablero.Casilla.Muro);
            ListaPares l;
            int        cont;

            //Act
            t.muevePacman();
            t.posiblesDirs(0, out l, out cont);
            //Assert
            Assert.AreEqual(2, t.getPersonaje(0).posX, "Posicion X incorrecta de Pacman");
            Assert.AreEqual(0, t.getPersonaje(0).posY, "Posicion Y incorrecta de Pacman");
        }
Пример #35
0
        public void NoCambiaAAbajo()
        {
            //Arrange
            Tablero tab = new Tablero(3, 3);

            tab.setPersonaje(0, 1, 1, 0, 1);//dir original hacia arriba
            tab.cambiaCasilla(2, 0, Tablero.Casilla.Muro);
            tab.cambiaCasilla(2, 1, Tablero.Casilla.Muro);
            tab.cambiaCasilla(2, 2, Tablero.Casilla.Muro);

            //Act
            bool HaCambiado = tab.cambiaDir('d');

            //Arrange
            Assert.IsFalse(HaCambiado, "Error, no debería haberse cambiado la dir");
            Assert.IsTrue(tab.pers[0].dirX == 0 && tab.pers[0].dirY == 1, "Error, debería seguir moviendose hacia la derecha");
        }
Пример #36
0
        public void SiguienteVacioRight()
        {
            //Arrange
            //Nuevo tablero de 3x3
            Tablero tab = new Tablero(3, 3);
            int     posX = 1;
            int     posY = 1;
            int     nx, ny;

            //Act
            bool puedeMover = tab.siguiente(posX, posY, 0, 1, out nx, out ny);

            //Assert
            Assert.IsTrue(puedeMover, "Error: Tendria que poder mover derecha");
            Assert.AreEqual(nx, 1, "Error, tendria que moverse a la pos X 1");
            Assert.AreEqual(ny, 2, "Error, tendria que moverse a la pos Y 2");
        }
Пример #37
0
        static void Main(string[] args)
        {
            /*  Console.WriteLine("(alt+177) ");
             * Console.WriteLine("|--");
             * Console.WriteLine("--|");
             * Console.WriteLine("--|");
             */
            Tablero juego_delavida = new Tablero(10, 5);

            juego_delavida.inserta(new Celula(Estado.viva, juego_delavida, 3, 3));
            juego_delavida.inserta(new Celula(Estado.viva, juego_delavida, 3, 2));
            juego_delavida.inserta(new Celula(Estado.viva, juego_delavida, 3, 1));

            juego_delavida.print();
            console.WriteLine(juego_delavida.inserta(new Celula(Estado.viva, juego_delavida, 0, 0));
                              juego_delavida.grid[1][1].num_vecinas());
        }
Пример #38
0
        public void poetry_mode()
        {
            //Arrange
            var tablero = new Tablero();
            var turno = new Turno();
            var ficha = turno.GetFichaActual();
            const byte fila = 0;
            const byte columna = 0;
            var posicion = new Posicion(fila,columna);

            //Action
            tablero.
                Add(ficha).
                En(posicion);

            //Assert
            Assert.Equal(ficha, tablero.GetFicha(posicion));
        }
Пример #39
0
        /**
         * Esta función nos devuelve el nombre del jugador que más fichas tiene en el tablero, o tablas.
         * @param tablero en el que contaremos las fichas para determinar al ganador.
         * @return nombre del ganador.
         */
        public String consultarGanador(Tablero tablero)
        {
            int contador = 0;
            //Vamos contando las fichas del tablero
            for (int a = 0; a < tablero.getTamaño(); a++)
                for (int b = 0; b < tablero.getTamaño(); b++)
                    if (tablero.getCelda(a, b).getFicha() == 'X')
                        contador++;
                    else if (tablero.getCelda(a, b).getFicha() == 'O')
                        contador--;

            //Devolvemos el resultado
            if (contador > 0)
                return jug1;
            else if (contador < 0)
                return jug2;
            return "tttablas";
        }
Пример #40
0
    //devuelve true si se expande correctamente, false en caso contrario, incrementa el tamaño
    public bool expandir(Tablero tablero)
    {
        bool exito = false;
        //obtener listado de posiciones posibles para la expansion
        //clasificadas en funcion de expansion libre o combate
        //seleccionar una
        //si es expansion libre, exito=true
        //si es combate, realizar combate y aplicar valor a exito

        // movimientosPosibles valors: 0 -> no se puede llegar. 1 -> vacio. 2 -> Ciudad enemiga
        int[,] movimientosPosibles = new int[Constants.TAMAÑO, Constants.TAMAÑO];

        // Crear funcion ponerCosoACeros si eso
        for (int i = 0; i < Constants.TAMAÑO; i++) {
            for (int j = 0; j < Constants.TAMAÑO; j++) {
                movimientosPosibles[i, j] = 0;
            }
        }
        for (int i = 0; i < Constants.TAMAÑO; i++) {
            for (int j = 0; j < Constants.TAMAÑO; j++) {
                // TODO: Este color hay que inicializarlo
                if (tablero.getTablero()[i, j] == this.color) {
                    // Sacar esto a una funcion para comprobar los 4 casos, cada uno con una llamada
                    // Le pasamos el movimientosPosibles y que lo devuelva modificado, a no ser que
                    // consigamos pasarle un puntero
                    evaluarPosicion(tablero.getTablero(), i + 1, j, movimientosPosibles);
                    evaluarPosicion(tablero.getTablero(), i - 1, j, movimientosPosibles);
                    evaluarPosicion(tablero.getTablero(), i, j + 1, movimientosPosibles);
                    evaluarPosicion(tablero.getTablero(), i, j - 1, movimientosPosibles);
                }
            }
        }
        //hacemos una lista de posiciones libres y de posiciones ocupadas
        Coordenadas[] arrLibres = posicionesCoincidentes(1, movimientosPosibles);
        Coordenadas[] arrOcupadas = posicionesCoincidentes(2, movimientosPosibles);

        if (valentia > Random.Range(0, 100)) {
            //Debug.Log("Tenemos un valiente. Valentia: " + valentia);
            if (arrOcupadas.Length > 0) {

                Coordenadas posExpansion = arrOcupadas[Random.Range(0, arrOcupadas.Length)];
                Ciudad ciudadAtacada;
                switch (tablero.getTablero()[posExpansion.getI(), posExpansion.getJ()]) {
                    case 1:
                        ciudadAtacada = tablero.ciudad1;
                        break;
                    case 2:
                        ciudadAtacada = tablero.ciudad2;
                        break;
                    case 3:
                        ciudadAtacada = tablero.ciudad3;
                        break;
                    case 4:
                        ciudadAtacada = tablero.ciudad4;
                        break;
                    default:
                        ciudadAtacada = new Ciudad();
                        break;
                }

                if (this.calcularValorDeAtaque() > ciudadAtacada.calcularValorDeAtaque()) {
                    //ganamos nosotros
                    tablero.getTablero()[posExpansion.getI(), posExpansion.getJ()] = this.color;
                    ciudadAtacada.tamaño--;
                    //Perdida de puntos a la enemiga
                    ciudadAtacada.fitness -= 3;
                    ciudadAtacada.setPoblacion(ciudadAtacada.getPoblacion() - 5);
                    exito = true;
                    //Bonus por ataque completado con exito
                    this.fitness += 5;
                }
                else {
                    //Bonus por defensa
                    ciudadAtacada.fitness += 5;
                    exito = false;
                }

            }
            else if (arrLibres.Length > 0) {
                // Se puede hacer un movimiento a un espacio libre
                // Debug.Log("Hay una opcion de desplazamiento. La long del arrLibres es " + arrLibres.Length);
                //seleccionar posicion a random
                exito = true;
                Coordenadas posExpansion = arrLibres[Random.Range(0, arrLibres.Length)];
                tablero.getTablero()[posExpansion.getI(), posExpansion.getJ()] = this.color;

            }
        }

        else {
            //Debug.Log("Tenemos un cobarde. Valentia: " + valentia);
            // Falta elegir una random
            if (arrLibres.Length > 0) {
                // Se puede hacer un movimiento a un espacio libre
                //Debug.Log("Hay una opcion de desplazamiento. La long del arrLibres es " + arrLibres.Length);
                //seleccionar posicion a random
                exito = true;
                Coordenadas posExpansion = arrLibres[Random.Range(0, arrLibres.Length)];
                tablero.getTablero()[posExpansion.getI(), posExpansion.getJ()] = this.color;

            }
            else if (arrOcupadas.Length > 0) {
                Coordenadas posExpansion = arrOcupadas[Random.Range(0, arrOcupadas.Length)];
                Ciudad ciudadAtacada;
                switch (tablero.getTablero()[posExpansion.getI(), posExpansion.getJ()]) {
                    case 1:
                        ciudadAtacada = tablero.ciudad1;
                        break;
                    case 2:
                        ciudadAtacada = tablero.ciudad2;
                        break;
                    case 3:
                        ciudadAtacada = tablero.ciudad3;
                        break;
                    case 4:
                        ciudadAtacada = tablero.ciudad4;
                        break;
                    default:
                        ciudadAtacada = new Ciudad();
                        break;
                }

                if (this.calcularValorDeAtaque() > ciudadAtacada.calcularValorDeAtaque()) {
                    //ganamos nosotros
                    tablero.getTablero()[posExpansion.getI(), posExpansion.getJ()] = this.color;
                    ciudadAtacada.setPoblacion(ciudadAtacada.getPoblacion() - 5);
                    ciudadAtacada.tamaño--;
                    //perdida de puntos
                    ciudadAtacada.fitness -= 3;
                    exito = true;
                    //Bonus por ataque completado con exito
                    this.fitness += 5;
                }
                else {
                    //Bonus por defensa
                    ciudadAtacada.fitness += 5;
                    exito = false;
                }

            }
        }

        if (exito) {
            tamaño++;
            fitness += 5;
        }

        return exito;
    }
Пример #41
0
 public Juego()
 {
     Turno = new Turno();
     Tablero = new Tablero();
 }
Пример #42
0
 public void NuevaPartida()
 {
     Turno.ReiniciarPartida();
     Tablero = new Tablero();
 }
Пример #43
0
 public void si_existe_una_ficha_en_una_posicion_no_se_puede_poner_otra()
 {
     var tablero = new Tablero();
     tablero.AddFicha(Fichas.Aspa, new Posicion(0,0));
     Assert.Throws<InvalidOperationException>(() => tablero.AddFicha(Fichas.Circulo, new Posicion(0, 0)));
 }
Пример #44
0
 public Combate(Ciudad ciudad1, Ciudad ciudad2, Ciudad ciudad3, Ciudad ciudad4)
 {
     tablero = new Tablero(Constants.TAMAÑO, ciudad1, ciudad2, ciudad3, ciudad4);
 }
Пример #45
0
 public void si_inicio_el_tablero_este_no_tiene_fichas()
 {
     Tablero tablero = new Tablero();
     Assert.Equal(0, tablero.GetNumeroFichas());
 }