Ejemplo n.º 1
0
        private void CreateCells()
        {
            CellDetails cell;
            Point       cellLoc;
            //int rows = (picBoard.ClientSize.Height / cCellSize);
            //int cols = (picBoard.ClientSize.Width / cCellSize);
            int rows = 8, cols = 8, y = 0, x = 0;

            // Loop through the rows
            for (int row = 0; row < rows; row++)
            {
                // Loop through the columns
                for (int col = 0; col < cols; col++)
                {
                    cell    = new CellDetails();
                    cellLoc = new Point();
                    x       = col * cCellSize;
                    y       = row * cCellSize;
                    //cellLoc.Y = row + 1;
                    //cellLoc.X = col + 1;
                    cellLoc.X     = x;
                    cellLoc.Y     = y;
                    cell.Location = cellLoc;
                    //cell.Dimension = new Rectangle(col * cCellSize, row * cCellSize, cCellSize, cCellSize);
                    cell.Dimension = new Rectangle(x, y, cCellSize, cCellSize);
                    cells.Add(cell);
                }
            }
            lblDetails.Text = String.Format("Generated {0} cells.", cells.Count);
        }
Ejemplo n.º 2
0
        private CellDetails FindCell(MouseEventArgs e)
        {
            CellDetails ret = null;

            foreach (CellDetails cell in cells)
            {
                if (cell.Dimension.Contains(e.Location))
                {
                    ret = cell;
                    break;
                }
            }
            return(ret);
        }
Ejemplo n.º 3
0
        //int [,] tablero = new int[8,8];
        public Form1()
        {
            InitializeComponent();

            picTile.Size = new Size(cCellSize, cCellSize);

            //picBoard.MouseMove += PicBoard_MouseMove;
            picBoard.MouseClick += PicBoard_MouseClick;
            picBoard.Paint      += PicBoard_Paint;
            CreateCells();

            boardLeft       = picBoard.Location.X;
            boardTop        = picBoard.Location.Y;
            cNull           = new CellDetails();
            cNull.tipo      = -3; //-3 indica que es null
            cNull.Dimension = new Rectangle();
            cNull.Location  = new Point(-1, -1);
            cNull.ubicacion = -1;
        }
Ejemplo n.º 4
0
        private void PicBoard_MouseClick(object sender, MouseEventArgs e)
        {
            if (hooman)
            {
                clickCount++;
                CellDetails cell = FindCell(e);
                if (cell != null && cell.Location.X > -1 && cell.Location.Y > -1)
                {
                    if (((((cell.ubicacion / 8) % 2) != 0) && ((cell.ubicacion % 8) % 2 == 0)) || (((cell.ubicacion / 8) % 2 == 0) && ((cell.ubicacion % 8) % 2 != 0)))
                    {
                        if (clickCount % 2 != 0) //Primer clic del movimiento (elección de ficha a mover)
                        {
                            //picTile.Location = new Point(cell.Dimension.X + boardLeft, cell.Dimension.Y + boardTop);
                            //picTile.Visible = true;
                            inicio = cell;
                            //Console.WriteLine("Inicio " + inicio.Location.X + " " + inicio.Location.Y);
                        }
                        else //Segundo clic de movimiento (elección de a dónde se va a mover la ficha)
                        {
                            fin = cell;
                            //Console.Write("Fin " + fin.Location.X + " " + fin.Location.Y);

                            //encontrar posición en tablero
                            filaInicio    = inicio.ubicacion / 8;
                            columnaInicio = inicio.ubicacion % 8;
                            filaFin       = fin.ubicacion / 8;
                            columnaFin    = fin.ubicacion % 8;
                            tipo          = inicio.tipo;
                            // esta es la semi buena (funciona para movimientos simples -sin saltos) if (tablero[inicio.ubicacion % 8, inicio.ubicacion / 8] != 0 && tablero[fin.ubicacion % 8, fin.ubicacion / 8] == 0 && Math.Abs(distanciaX(inicio.ubicacion % 8, fin.ubicacion % 8)) == 1 && Math.Abs(distanciaY(inicio.ubicacion / 8, fin.ubicacion / 8)) == 1)
                            // segundo intento if (tablero[columnaInicio, filaInicio] != 0 && tablero[columnaFin, filaFin] == 0 /*&& distancia(columnaInicio,filaInicio,columnaFin,filaFin) == 1*/)

                            /*if(tablero[fin.ubicacion % 8,fin.ubicacion / 8] == 0 && ( (Math.Abs(distancia(inicio.ubicacion % 8, fin.ubicacion % 8)) == 1 && Math.Abs(distancia(inicio.ubicacion/8,fin.ubicacion/8)) == 1)
                            || (distancia(inicio.ubicacion%8,fin.ubicacion%8) == 2 && distancia(inicio.ubicacion/8,fin.ubicacion/8) == 2 && tablero[inicio.ubicacion%8 + 1, inicio.ubicacion/8 + 1] != 0)
                            || (distancia(inicio.ubicacion % 8, fin.ubicacion % 8) == -2 && distancia(inicio.ubicacion / 8, fin.ubicacion / 8) == -2 && tablero[inicio.ubicacion % 8 - 1, inicio.ubicacion / 8 - 1] != 0)
                            || (distancia(inicio.ubicacion % 8, fin.ubicacion % 8) == 2 && distancia(inicio.ubicacion / 8, fin.ubicacion / 8) == -2 && tablero[inicio.ubicacion % 8 + 1, inicio.ubicacion / 8 - 1] != 0)
                            || (distancia(inicio.ubicacion % 8, fin.ubicacion % 8) == -2 && distancia(inicio.ubicacion / 8, fin.ubicacion / 8) == 2 && tablero[inicio.ubicacion % 8 - 1, inicio.ubicacion / 8 + 1] != 0)
                            ||  ))*/
                            if (/*tablero[columnaInicio,filaInicio] < 0 &&*/ tablero[columnaFin, filaFin] == 0 && ((Math.Abs(distancia(columnaInicio, columnaFin)) == 1 && Math.Abs(distancia(filaInicio, filaFin)) == 1) ||
                                                                                                                   (distancia(columnaInicio, columnaFin) == 2 && distancia(filaInicio, filaFin) == 2 && tablero[columnaInicio + 1, filaInicio + 1] > 0) || //Abajo derecha
                                                                                                                   (distancia(columnaInicio, columnaFin) == -2 && distancia(filaInicio, filaFin) == -2 && tablero[columnaInicio - 1, filaInicio - 1] > 0) || //Arriba izquierda
                                                                                                                   (distancia(columnaInicio, columnaFin) == 2 && distancia(filaInicio, filaFin) == -2 && tablero[columnaInicio + 1, filaInicio - 1] > 0) || //Arriba derecha
                                                                                                                   (distancia(columnaInicio, columnaFin) == -2 && distancia(filaInicio, filaFin) == 2 && tablero[columnaInicio - 1, filaInicio + 1] > 0) //Abajo izquierda
                                                                                                                   ))
                            {
                                //intercambia imgs
                                auxtipo     = inicio.tipo;
                                inicio.tipo = fin.tipo;
                                fin.tipo    = auxtipo;
                                tablero[inicio.ubicacion % 8, inicio.ubicacion / 8] = inicio.tipo;
                                tablero[fin.ubicacion % 8, fin.ubicacion / 8]       = fin.tipo;
                                switch (distancia(columnaInicio, columnaFin))
                                {
                                case 2:
                                    if (distancia(filaInicio, filaFin) == 2)
                                    {
                                        tablero[columnaInicio + 1, filaInicio + 1] = 0;
                                    }
                                    else     //distancia(filaInicio, filaFin) == -2
                                    {
                                        tablero[columnaInicio + 1, filaInicio - 1] = 0;
                                    }
                                    break;

                                case -2:
                                    if (distancia(filaInicio, filaFin) == -2)
                                    {
                                        tablero[columnaInicio - 1, filaInicio - 1] = 0;
                                    }
                                    else     //distancia(filaInicio, filaFin) == -2
                                    {
                                        tablero[columnaInicio - 1, filaInicio + 1] = 0;
                                    }
                                    break;
                                }
                                Console.WriteLine("Tipo Inicio: " + inicio.tipo + "\nTipo fin: " + fin.tipo);
                                this.Refresh();
                                //hooman = false;

                                juega();
                            }
                            else
                            {
                                Console.WriteLine("Movimiento no válido");
                                MessageBox.Show("Movimiento no válido", "Error", MessageBoxButtons.OK);
                            }
                        }
                    }
                }
            }
        }