示例#1
0
文件: Estado.cs 项目: Arthyom/C-Xmpls
        // mover una pieza, la barca y a homero del lado adecuado
        public static Estado GenerarNuevoEstado(Estado EstadoPadre, char Homero, int ObjetoMover)
        {
            Estado EstadoCopia = Estado.CopiarEstado(EstadoPadre);

            // mover a homero junto con algun obejto y la barca al aldo contrario
            if (EstadoPadre.LadoDer)
            {
                // mover a homero
                EstadoCopia.CosasLadoDer[0] = '0';
                EstadoCopia.CosasLadoIzq[0] = 'H';

                // mover alguna de las cosas de lado derecho al izquierdo
                if (EstadoCopia.CosasLadoDer[ObjetoMover] != '0')
                {
                    EstadoCopia.CosasLadoIzq[ObjetoMover] = EstadoCopia.CosasLadoDer[ObjetoMover];
                    EstadoCopia.CosasLadoDer[ObjetoMover] = '0';
                }
                else
                {
                    return(null);
                }


                // cambiar la bandera del estado
                EstadoCopia.CambiarEstado();
            }
            else
            {
                // mover a homero
                EstadoCopia.CosasLadoDer[0] = 'H';
                EstadoCopia.CosasLadoIzq[0] = '0';

                // mover alguna de las cosas de lado izquierdo al derecho
                // mover alguna de las cosas de lado derecho al izquierdo
                if (EstadoCopia.CosasLadoIzq[ObjetoMover] != '0')
                {
                    EstadoCopia.CosasLadoDer[ObjetoMover] = EstadoCopia.CosasLadoIzq[ObjetoMover];
                    EstadoCopia.CosasLadoIzq[ObjetoMover] = '0';
                }
                else
                {
                    return(null);
                }


                // cambiar la bandera del estado
                EstadoCopia.CambiarEstado();
            }

            return(EstadoCopia);
        }
示例#2
0
文件: Estado.cs 项目: Arthyom/C-Xmpls
        // construir un nuevo estado, moviendo a homero solo al lado indicado
        public static Estado CrearEstadoSimplo(char Homero, Estado EstadoPadre)
        {
            Estado NuevoEstado = Estado.CopiarEstado(EstadoPadre);

            // verificar de que lado esta el estado padre
            if (EstadoPadre.LadoDer)
            {
                // mover a homero al lado izquiero
                NuevoEstado.CosasLadoIzq[0] = 'H';
                NuevoEstado.CosasLadoDer[0] = '0';
                NuevoEstado.CambiarEstado();
            }
            else
            {
                // mover a homero al lado derecho
                NuevoEstado.CosasLadoIzq[0] = '0';
                NuevoEstado.CosasLadoDer[0] = 'H';
                NuevoEstado.CambiarEstado();
            }
            return(NuevoEstado);
        }