Пример #1
0
        static bool Calcular(int[,] tabla, Celda[] l, int n, int[,] r) {
            if(l.Length == n) {
                return true;
            } else {
                bool aux; int k;
                foreach(int v in l[n].libres) {
                    //***************************************************
                    // Prueba del candidato
                    //***************************************************
                    aux = true;
                    for(k = n - 1; k >= 0 && aux; k--) {
                        if((l[k].i == l[n].i || l[k].j == l[n].j || Zona(l[k]) == Zona(l[n])) &&
                           r[l[k].i, l[k].j] == v) {
                               aux = false;
                        }
                    }

                    //***************************************************
                    // Prueba de los candidatos
                    //***************************************************
                    if(aux) {
                        // Meter número
                        r[l[n].i, l[n].j] = v;
                        // Siguiente casilla
                        if(Calcular(tabla, l, n + 1, r)) {
                            return true;
                        }
                    }
                }
                return false;
            }
        }
Пример #2
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());
 }
Пример #3
0
        public bool get_Cambiar_Mapa(MapaTeleportCeldas direccion, Celda celda)
        {
            if (cuenta.esta_ocupado)
            {
                return(false);
            }

            if (!get_Puede_Cambiar_Mapa(direccion, celda))
            {
                return(false);
            }

            return(get_Mover_Para_Cambiar_mapa(celda));
        }
Пример #4
0
        public bool get_Cambiar_Mapa(MapaTeleportCeldas direccion, Celda celda)
        {
            if (cuenta.esta_ocupado() || personaje.inventario.porcentaje_pods >= 100)
            {
                return(false);
            }

            if (!get_Puede_Cambiar_Mapa(direccion, celda))
            {
                return(false);
            }

            return(get_Mover_Para_Cambiar_mapa(celda));
        }
Пример #5
0
        public List <Celda> get_Celdas_Adyecentes(Celda nodo, bool utilizar_diagonales)
        {
            List <Celda> celdas_adyecentes = new List <Celda>();

            Celda celda_derecha   = celdas.FirstOrDefault(nodec => nodec.x == nodo.x + 1 && nodec.y == nodo.y);
            Celda celda_izquierda = celdas.FirstOrDefault(nodec => nodec.x == nodo.x - 1 && nodec.y == nodo.y);
            Celda celda_inferior  = celdas.FirstOrDefault(nodec => nodec.x == nodo.x && nodec.y == nodo.y + 1);
            Celda celda_superior  = celdas.FirstOrDefault(nodec => nodec.x == nodo.x && nodec.y == nodo.y - 1);

            if (celda_derecha != null)
            {
                celdas_adyecentes.Add(celda_derecha);
            }
            if (celda_izquierda != null)
            {
                celdas_adyecentes.Add(celda_izquierda);
            }
            if (celda_inferior != null)
            {
                celdas_adyecentes.Add(celda_inferior);
            }
            if (celda_superior != null)
            {
                celdas_adyecentes.Add(celda_superior);
            }

            Celda superior_izquierda = celdas.FirstOrDefault(nodec => nodec.x == nodo.x - 1 && nodec.y == nodo.y - 1);
            Celda inferior_derecha   = celdas.FirstOrDefault(nodec => nodec.x == nodo.x + 1 && nodec.y == nodo.y + 1);
            Celda inferior_izquierda = celdas.FirstOrDefault(nodec => nodec.x == nodo.x - 1 && nodec.y == nodo.y + 1);
            Celda superior_derecha   = celdas.FirstOrDefault(nodec => nodec.x == nodo.x + 1 && nodec.y == nodo.y - 1);

            if (superior_izquierda != null)
            {
                celdas_adyecentes.Add(superior_izquierda);
            }
            if (superior_derecha != null)
            {
                celdas_adyecentes.Add(superior_derecha);
            }
            if (inferior_derecha != null)
            {
                celdas_adyecentes.Add(inferior_derecha);
            }
            if (inferior_izquierda != null)
            {
                celdas_adyecentes.Add(inferior_izquierda);
            }

            return(celdas_adyecentes);
        }
Пример #6
0
 /*
  *	Funcion: renderCelda()
  *
  *	Si <celda> ya ha sido rendered, y <celda> esta vacia (saturacion = 0), ejecuta la operacion de unrender para <celda>.
  *	Si <celda> no esta vacia (saturacion > 0), ejecuta la operacion de actualizacion de render para <celda>.
  */
 public void renderCelda(Celda celda, int act_index)
 {
     if (celda.rendered)
     {
         if (celda.estaVacia())
         {
             unrenderCelda(celda, act_index);
         }
         else
         {
             actualizarCelda(celda);
         }
     }
 }
Пример #7
0
        // Token: 0x060001CC RID: 460 RVA: 0x000083C8 File Offset: 0x000067C8
        public FallosLanzandoHechizo get_Puede_Lanzar_hechizo(short hechizo_id, Celda celda_actual, Celda celda_objetivo, Mapa mapa)
        {
            Hechizo hechizo = this.cuenta.juego.personaje.get_Hechizo(hechizo_id);
            bool    flag    = hechizo == null;
            FallosLanzandoHechizo result;

            if (flag)
            {
                result = FallosLanzandoHechizo.DESONOCIDO;
            }
            else
            {
                HechizoStats stats = hechizo.get_Stats();
                bool         flag2 = stats.lanzamientos_por_objetivo > 0 && this.total_hechizos_lanzados_en_celda.ContainsKey((int)hechizo_id) && this.total_hechizos_lanzados_en_celda[(int)hechizo_id].ContainsKey((int)celda_objetivo.id) && this.total_hechizos_lanzados_en_celda[(int)hechizo_id][(int)celda_objetivo.id] >= (int)stats.lanzamientos_por_objetivo;
                if (flag2)
                {
                    result = FallosLanzandoHechizo.DEMASIADOS_LANZAMIENTOS_POR_OBJETIVO;
                }
                else
                {
                    bool flag3 = stats.es_celda_vacia && !this.es_Celda_Libre(celda_objetivo);
                    if (flag3)
                    {
                        result = FallosLanzandoHechizo.NECESITA_CELDA_LIBRE;
                    }
                    else
                    {
                        bool flag4 = stats.es_lanzado_linea && !this.jugador_luchador.celda.get_Esta_En_Linea(celda_objetivo);
                        if (flag4)
                        {
                            result = FallosLanzandoHechizo.NO_ESTA_EN_LINEA;
                        }
                        else
                        {
                            bool flag5 = !this.get_Rango_hechizo(celda_actual, stats, mapa).Contains(celda_objetivo.id);
                            if (flag5)
                            {
                                result = FallosLanzandoHechizo.NO_ESTA_EN_RANGO;
                            }
                            else
                            {
                                result = FallosLanzandoHechizo.NINGUNO;
                            }
                        }
                    }
                }
            }
            return(result);
        }
Пример #8
0
 void Awake()
 {
     celda            = GetComponent <Celda>();
     spawnNumeroCelda = GetComponent <SpawnNumeroCelda>();
     spawnAux         = GetComponent <SpawnNumeroAux>();
     keys[0]          = KeyCode.Alpha1;
     keys[1]          = KeyCode.Alpha2;
     keys[2]          = KeyCode.Alpha3;
     keys[3]          = KeyCode.Alpha4;
     keys[4]          = KeyCode.Alpha5;
     keys[5]          = KeyCode.Alpha6;
     keys[6]          = KeyCode.Alpha7;
     keys[7]          = KeyCode.Alpha8;
     keys[8]          = KeyCode.Alpha9;
 }
Пример #9
0
        private bool get_Mover_Para_Cambiar_mapa(Celda celda)
        {
            ResultadoMovimientos resultado = get_Mover_A_Celda(celda, mapa.celdas_ocupadas());

            switch (resultado)
            {
            case ResultadoMovimientos.EXITO:
                cuenta.logger.log_informacion("MOVIMIENTO", $"Map Actuel: {mapa.id} changement de map via la cellule {celda.id} ");
                return(true);

            default:
                cuenta.logger.log_Error("MOVIMIENTO", $"Chemin vers {celda.id} résultat échoué ou bloqué : {resultado}");
                return(false);
            }
        }
Пример #10
0
        /// <summary>
        /// Identificar las denominaciones solicitadas.
        /// </summary>
        private void identificarDenominaciones(DocumentoExcel documento, Celda celda_a, Celda celda_b)
        {
            for (int columna = celda_a.Columna; columna <= celda_b.Columna; columna++)
            {
                Celda   celda_denominacion = documento.seleccionarCelda(celda_a.Fila, columna);
                decimal valor  = decimal.Parse(celda_denominacion.Valor);
                Monedas moneda = celda_denominacion.Texto.StartsWith("$") ?
                                 Monedas.Dolares : Monedas.Colones;
                Denominacion denominacion = new Denominacion(valor: valor, moneda: moneda);

                _mantenimiento.verificarDenominacion(ref denominacion);

                _denominaciones.Add(columna, denominacion);
            }
        }
Пример #11
0
        private bool get_Mover_Para_Cambiar_mapa(Celda celda)
        {
            ResultadoMovimientos resultado = get_Mover_A_Celda(celda, mapa.celdas_ocupadas().Where(c => c.tipo != TipoCelda.CELDA_TELEPORT).ToList());

            switch (resultado)
            {
            case ResultadoMovimientos.EXITO:
                cuenta.logger.log_informacion("MOUVEMENT", $"{mapa.coordenadas} changement de map via la cellule {celda.id} ");
                return(true);

            default:
                cuenta.logger.log_Error("MOUVEMENT", $"Chemin vers {celda.id} résultat échoué ou bloqué : {resultado}");
                return(false);
            }
        }
Пример #12
0
    private List <Celda> DevolverSolucion(Celda inicio, Celda final)
    {
        List <Celda> camino      = new List <Celda>();
        Celda        celdaActual = final;

        while (celdaActual != inicio)
        {
            camino.Add(celdaActual);
            celdaActual = celdaActual.m_QuienMeAgrego;
        }

        camino.Reverse();

        return(camino);
    }
Пример #13
0
        private bool get_Mover_Para_Cambiar_mapa(Celda celda)
        {
            ResultadoMovimientos resultado = get_Mover_A_Celda(celda, mapa.celdas_ocupadas());

            switch (resultado)
            {
            case ResultadoMovimientos.EXITO:
                cuenta.logger.log_informacion("MOVIMIENTOS", $"Mapa actual: {mapa.id} desplazando para cambiar el mapa a la casilla: {celda.id}");
                return(true);

            default:
                cuenta.logger.log_Error("MOVIMIENTOS", $"camino hacia {celda.id} fallado o bloqueado resultado: {resultado}");
                return(false);
            }
        }
Пример #14
0
        // Token: 0x060003FD RID: 1021 RVA: 0x0000EB54 File Offset: 0x0000CF54
        public static IEnumerable <Celda> Get_Lista_Celdas_Rango_Hechizo(Celda celda, HechizoStats spellLevel, Mapa mapa, int rango_adicional = 0)
        {
            int  radio_maximo     = (int)spellLevel.alcanze_maximo + (spellLevel.es_alcanze_modificable ? rango_adicional : 0);
            bool es_lanzado_linea = spellLevel.es_lanzado_linea;
            IEnumerable <Celda> result;

            if (es_lanzado_linea)
            {
                result = Shaper.Cruz(celda.x, celda.y, (int)spellLevel.alcanze_minimo, radio_maximo, mapa);
            }
            else
            {
                result = Shaper.Anillo(celda.x, celda.y, (int)spellLevel.alcanze_minimo, radio_maximo, mapa);
            }
            return(result);
        }
Пример #15
0
    /*
     *  Funcion: inicializarGrid()
     *
     *  Inicializa <grid>, la estructura de datos que contiene todas las celdas del entorno.
     *
     *  <grid> es una lista, donde cada entrada contiene una matriz bidimensional de celdas. Cada entrada de la lista representa
     *  un plano de celdas con el mismo <indice_y>. Estos son almacenados como matrices bidimensionales de celdas, donde las
     *  dimensiones representan el <indice_x> y el <indice_z> de cada celda.
     *
     *  Ejemplo:	grid[1][2,3] contiene la celda con <indice_y> = 1, <indice_x> = 2, <indice_z> = 3.
     */
    void inicializarGrid()
    {
        grid = new List <Celda[, ]>();

        for (int y = 0; y < tamano_y; ++y)
        {
            grid.Add(new Celda[tamano_x, tamano_z]);
            for (int x = 0; x < tamano_x; ++x)
            {
                for (int z = 0; z < tamano_z; ++z)
                {
                    grid[y][x, z] = new Celda(x, y, z);
                }
            }
        }
    }
Пример #16
0
        private List <short> get_Camino_Retroceso(Celda nodo_inicial, Celda nodo_final)
        {
            Celda        nodo_actual   = nodo_final;
            List <short> celdas_camino = new List <short>();

            while (nodo_actual != nodo_inicial)
            {
                celdas_camino.Add(nodo_actual.id);
                nodo_actual = nodo_actual.nodo_padre;
            }

            celdas_camino.Add(nodo_inicial.id);
            celdas_camino.Reverse();

            return(celdas_camino);
        }
Пример #17
0
        private NodoRango get_Nodo_Rango(Celda celda, MovimientoNodo node, PeleaHechizos hechizo_pelea, HechizoStats hechizo_stats)
        {
            Dictionary <short, byte> enemigos_golpeados = new Dictionary <short, byte>();
            List <short>             rango = pelea.get_Rango_Hechizo(celda, hechizo_stats, mapa);

            for (int i = 0; i < rango.Count; i++)
            {
                byte tec = get_Total_Enemigos_Atacados(celda, mapa.get_Celda_Id(rango[i]), hechizo_pelea, hechizo_stats);
                if (tec > 0)
                {
                    enemigos_golpeados.Add(rango[i], tec);
                }
            }

            return(new NodoRango(celda, enemigos_golpeados, node));
        }
Пример #18
0
    public void MoverTorreta(Celda celda)
    {
        GameObject torreta = torretas.Dequeue(); //desencolo primer elementeo

        TorretaSimple torretaActual = torreta.GetComponent <TorretaSimple>();

        torretaActual.m_CeldaActual.m_EsAliada = true;//tildo la celda de la torreta como aliada


        torreta.transform.position = celda.transform.position; //cambio posicion de la torreta a la nueva posicion

        torretaActual.m_CeldaActual = celda;

        torretas.Enqueue(torreta); //encolo nueva torreta
        celda.m_EsAliada = false;
    }
Пример #19
0
        private static char get_Direccion_Dos_Celdas(short celda_1, short celda_2, bool es_pelea, Mapa mapa)
        {
            if (celda_1 == celda_2 || mapa == null)
            {
                return((char)0);
            }

            Celda celda1 = mapa.celdas[celda_1], celda2 = mapa.celdas[celda_2];

            if (!es_pelea)
            {
                byte  mapa_anchura = mapa.anchura;
                int[] _loc6_       = { 1, mapa_anchura, (mapa_anchura * 2) - 1, mapa_anchura - 1, -1, -mapa_anchura, (-mapa_anchura * 2) + 1, -(mapa_anchura - 1) };
                int   _loc7_       = celda_2 - celda_1;

                for (int i = 7; i >= 0; i += -1)
                {
                    if (_loc6_[i] == _loc7_)
                    {
                        return((char)(i + 'a'));
                    }
                }
            }

            int resultado_x = celda2.x - celda1.x;
            int resultado_y = celda2.y - celda1.y;

            if (resultado_x == 0)
            {
                if (resultado_y > 0)
                {
                    return((char)(3 + 'a'));
                }
                else
                {
                    return((char)(7 + 'a'));
                }
            }
            else if (resultado_x > 0)
            {
                return((char)(1 + 'a'));
            }
            else
            {
                return((char)(5 + 'a'));
            }
        }
Пример #20
0
        public static int get_Tiempo_Desplazamiento_Mapa(Celda casilla_actual, List <short> celdas_camino, Mapa _mapa)
        {
            int tiempo_desplazamiento        = 20;
            DuracionAnimacion tipo_animacion = celdas_camino.Count < 6 ? tiempo_tipo_animacion[TipoAnimacion.CAMINANDO] : tiempo_tipo_animacion[TipoAnimacion.CORRIENDO];
            Celda             siguiente_celda;

            for (int i = 0; i < celdas_camino.Count - 1; i++)
            {
                siguiente_celda = _mapa.celdas[celdas_camino[i + 1]];

                if (casilla_actual.y == siguiente_celda.y)
                {
                    tiempo_desplazamiento += tipo_animacion.horizontal;
                }
                else if (casilla_actual.x == siguiente_celda.y)
                {
                    tiempo_desplazamiento += tipo_animacion.vertical;
                }
                else
                {
                    tiempo_desplazamiento += tipo_animacion.lineal;
                }

                if (casilla_actual.layer_ground_nivel < siguiente_celda.layer_ground_nivel)
                {
                    tiempo_desplazamiento += 100;
                }
                else if (siguiente_celda.layer_ground_nivel > casilla_actual.layer_ground_nivel)
                {
                    tiempo_desplazamiento -= 100;
                }
                else if (casilla_actual.layer_ground_slope != siguiente_celda.layer_ground_slope)
                {
                    if (casilla_actual.layer_ground_slope == 1)
                    {
                        tiempo_desplazamiento += 100;
                    }
                    else if (siguiente_celda.layer_ground_slope == 1)
                    {
                        tiempo_desplazamiento -= 100;
                    }
                }
                casilla_actual = siguiente_celda;
            }

            return(tiempo_desplazamiento);
        }
Пример #21
0
    /*
     *	Funcion: spawnAtRandom()
     *
     *	Simula la introduccion de liquido en celdas aleatorias del entorno.
     */
    public void spawnAtRandom()
    {
        if (testDelay > 0)
        {
            testDelay = 0;

            float   min_height = 0.7f;
            Vector3 indexes    = new Vector3(UnityEngine.Random.Range(0, tamano_x), UnityEngine.Random.Range(tamano_y * min_height, tamano_y), UnityEngine.Random.Range(0, tamano_z));
            Celda   cell       = getCelda((int)indexes.x, (int)indexes.y, (int)indexes.z);
            if (cell.estaVacia() && !cell.esCeldaSolida())
            {
                cell.setSaturacion(1f);
            }
        }

        testDelay++;
    }
Пример #22
0
        // Token: 0x06000454 RID: 1108 RVA: 0x0000FC6C File Offset: 0x0000E06C
        public bool get_Cambiar_Mapa(MapaTeleportCeldas direccion, Celda celda)
        {
            bool flag = this.cuenta.esta_ocupado() || this.personaje.inventario.porcentaje_pods >= 100;
            bool result;

            if (flag)
            {
                result = false;
            }
            else
            {
                bool flag2 = this.get_Puede_Cambiar_Mapa(direccion, celda);
                bool flag3 = !flag2;
                result = (!flag3 && this.get_Mover_Para_Cambiar_mapa(celda));
            }
            return(result);
        }
Пример #23
0
        /// <summary>
        /// Leer los montos del archivo y generar las cargas.
        /// </summary>
        private void generarSucursales()
        {
            DocumentoExcel archivo = null;

            try
            {
                _filas_incorrectas.Clear();

                _sucursales.Clear();
                _denominaciones.Clear();

                archivo = new DocumentoExcel(_archivo, false);

                archivo.seleccionarHoja(1);

                Celda celda_sucursal       = archivo.seleccionarCelda(mtbSucursalCelda.Text);
                Celda celda_provincia      = archivo.seleccionarCelda(mtbProvinciaCelda.Text);
                Celda celda_ciudad         = archivo.seleccionarCelda(mtbCiudadCelda.Text);
                Celda celda_tipo           = archivo.seleccionarCelda(mtbceldaTipSucursal.Text);
                Celda celda_transportadora = archivo.seleccionarCelda(mtbTransportadoraCelda.Text);
                Celda celda_entidad        = archivo.seleccionarCelda(mtbEntidad.Text);


                this.generarSucursalesDatos(archivo, celda_sucursal, celda_provincia, celda_ciudad, celda_tipo, celda_transportadora, celda_entidad);


                dgvCargas.DataSource = _sucursales;

                archivo.mostrar();
                archivo.cerrar();

                // Dar formato a las cargas

                foreach (DataGridViewRow fila in dgvCargas.Rows)
                {
                    this.validarCarga(fila);
                }
            }
            catch (Exception ex)
            {
                archivo.mostrar();
                archivo.cerrar();

                throw ex;
            }
        }
Пример #24
0
        /// <summary>
        /// Lee el archivo a importar y genera las cargas
        /// </summary>
        private void generarPlanillas()
        {
            DocumentoExcel archivo = null;

            try
            {
                _planillas.Clear();

                archivo = new DocumentoExcel(_archivo, false);

                archivo.seleccionarHoja(1);

                Celda celda_Fecha          = archivo.seleccionarCelda(mtbCeldaFecha.Text);
                Celda celda_Manifiesto     = archivo.seleccionarCelda(mtbManifiestoCelda.Text);
                Celda celda_Transportadora = archivo.seleccionarCelda(mtbTransportadoraPlanillaCelda.Text);
                Celda celda_Tula           = archivo.seleccionarCelda(mtbTulaCelda.Text);
                Celda celda_Monto_Tula     = archivo.seleccionarCelda(mtbMonto_tula.Text);
                Celda celda_Monto_Planilla = archivo.seleccionarCelda(mtbMonto_Planilla.Text);
                Celda celda_ID_Punto_Venta = archivo.seleccionarCelda(mtbID_PDV.Text);
                Celda celda_Punto_Venta    = archivo.seleccionarCelda(mtbPDV.Text);
                Celda celda_Tarifa         = archivo.seleccionarCelda(mtbCeldaTarifa.Text);
                Celda celda_Recargo        = archivo.seleccionarCelda(mtbCeldaRecargo.Text);
                Celda celda_Total          = archivo.seleccionarCelda(mtbCeldaTotal.Text);

                this.generarPlanillasDatos(archivo, celda_Fecha, celda_Manifiesto, celda_Transportadora, celda_Tula, celda_Monto_Tula, celda_Monto_Planilla, celda_ID_Punto_Venta, celda_Punto_Venta, celda_Tarifa, celda_Recargo, celda_Total);


                dgvPlanillas.DataSource           = _planillas;
                dgvPlanillasProcesadas.DataSource = _planillaprocesados;

                //archivo.mostrar();
                archivo.cerrar();

                // Dar formato a las cargas

                //foreach (DataGridViewRow fila in dgvPlanillas.Rows)
                //    this.validarCarga(fila);
            }
            catch (Exception ex)
            {
                archivo.mostrar();
                archivo.cerrar();

                throw ex;
            }
        }
        /// <summary>
        /// Generar las cargas para una moneda específica.
        /// </summary>
        private void generarCargasCompass(DocumentoExcel archivo, Celda celda_codigo, Celda celda_cuenta, Celda celda_monto, Celda celda_referencia, Celda celda_puntoventa,
                                          Celda celda_identificacion, Celda celda_deposito, Celda celda_manifiesto, Celda celda_cliente, int variable)
        {
            // Leer las denominaciones


            while (!celda_codigo.Valor.Equals(string.Empty))
            {
                string  codigo         = celda_codigo.Valor;
                string  cuenta         = celda_cuenta.Valor;
                Decimal monto          = Convert.ToDecimal(celda_monto.Valor);
                string  referencia     = celda_referencia.Valor;
                string  puntoventa     = celda_puntoventa.Valor;
                string  identificacion = celda_identificacion.Valor;
                string  deposito       = celda_deposito.Valor;
                string  manifiesto     = celda_manifiesto.Valor;
                string  cliente        = celda_cliente.Valor;



                DepositoAcreditacion carga = new DepositoAcreditacion(codigo: codigo, cuenta: cuenta, referencia: referencia, puntoventa: puntoventa,
                                                                      identificacion: identificacion, deposito: deposito, manifiesto: manifiesto, cliente: cliente, monto: monto);



                celda_codigo         = archivo.seleccionarCelda(celda_codigo.Fila + 1, celda_codigo.Columna);
                celda_cuenta         = archivo.seleccionarCelda(celda_cuenta.Fila + 1, celda_cuenta.Columna);
                celda_monto          = archivo.seleccionarCelda(celda_monto.Fila + 1, celda_monto.Columna);
                celda_referencia     = archivo.seleccionarCelda(celda_referencia.Fila + 1, celda_referencia.Columna);
                celda_puntoventa     = archivo.seleccionarCelda(celda_puntoventa.Fila + 1, celda_puntoventa.Columna);
                celda_identificacion = archivo.seleccionarCelda(celda_identificacion.Fila + 1, celda_identificacion.Columna);
                celda_deposito       = archivo.seleccionarCelda(celda_deposito.Fila + 1, celda_deposito.Columna);
                celda_manifiesto     = archivo.seleccionarCelda(celda_manifiesto.Fila + 1, celda_manifiesto.Columna);
                celda_cliente        = archivo.seleccionarCelda(celda_cliente.Fila + 1, celda_cliente.Columna);

                if (variable == 1)
                {
                    _cargas.Add(carga);
                }
                else
                {
                    _cargas_transportadora.Add(carga);
                }
            }
        }
Пример #26
0
        /// <summary>
        /// Leer las rutas del archivo y generar las cargas.
        /// </summary>
        private void generarRutas()
        {
            DocumentoExcel archivo = null;

            try
            {
                _filas_incorrectas.Clear();

                _cargas.Clear();
                //_denominaciones.Clear();

                archivo = new DocumentoExcel(_archivo, false);

                archivo.seleccionarHoja(1);


                Celda    celda_a    = archivo.seleccionarCelda(mtbPrimeraCelda.Text);
                Celda    celda_atm  = archivo.seleccionarCelda(mtbatmcelda.Text);
                Celda    celda_ruta = archivo.seleccionarCelda(mtbRutaCelda.Text);
                Celda    celda_hora = archivo.seleccionarCelda(mtbHoraCelda.Text);
                DateTime fecha      = dtpFecha.Value;

                this.generarCargasATMs(archivo, fecha, celda_a, celda_atm, celda_ruta, celda_hora);


                dgvCargasSucursales.DataSource = _cargas;

                archivo.mostrar();
                archivo.cerrar();

                // Dar formato a las cargas

                foreach (DataGridViewRow fila in dgvCargasSucursales.Rows)
                {
                }
                //this.validarCarga(fila);
            }
            catch (Exception ex)
            {
                archivo.mostrar();
                archivo.cerrar();

                throw ex;
            }
        }
Пример #27
0
        public Mapa()
        {
            anchura        = 200;
            altura         = 200;
            celdas         = new Celda[anchura, altura];
            anchuraVentana = 41;
            alturaVentana  = 21;

            // Rellenamos el mapa con celdas vacias
            for (int x = 0; x < celdas.GetLength(0); x++)
            {
                for (int y = 0; y < celdas.GetLength(1); y++)
                {
                    celdas[x, y]        = new Celda();
                    celdas[x, y].estado = EstadoCelda.vacio;
                }
            }
        }
Пример #28
0
    //Dadas una posición x e y, hará que el puntero se mueva por la escena de 1 unidad en 1
    private void moverse(float x, float y)
    {
        if (!personajeMov)
        {
            //Nos moveremos
            transform.Translate(new Vector3(x, y, 0));

            //Nota: otra forma de moverse poniendo la posición absoluta
            //transform.position = new Vector3(x, y, transform.position.z);

            //Y luego cargaremos las estadísticas de la unidad seleccionada por pantalla (si la hay)
            CargarDatos();
        }
        else
        {
            /* En el caso de que haya un personaje moviéndose, el puntero sólo podrá moverse por las celdas que esten al alcance del personaje y nunca fuera de estas*/
            float xAbsoluta = transform.position.x;
            float yAbsoluta = transform.position.y;

            //Sumaremos la x e y absolutas a sus contrapartes relativas para obtener la posición absoluta de la celda
            Celda celda = new Celda((int)(xAbsoluta + x), (int)(yAbsoluta + y));

            //Comprobaremos si esta celda está dentro de la lista
            if (controlador.dentroLaLista(celda))
            {
                //Nos moveremos a esta celda
                transform.Translate(new Vector3(x, y, 0));
            }

            //Si hay una acción en curso
            if (controlador.getAccionEnCurso())
            {
                //Obtendremos la posición del objetivo seleccionado en la matriz del mapa
                Personaje objetivo = controlador.getPosMapa((int)(xAbsoluta + x), (int)(yAbsoluta + y));

                //Pasaremos al objetivo al controlador para que guarde su referencia
                controlador.set_Objetivo(objetivo);

                //Y mostraremos las previsiones del objetivo y de la unidad seleccionada
                controlador.mostrarPrevisionesObjetivo();
                controlador.mostrarPrevisionesUnidadSeleccionada();
            }
        }
    }
Пример #29
0
        public bool get_Puede_Cambiar_Mapa(MapaTeleportCeldas direccion, Celda celda)
        {
            switch (direccion)
            {
            case MapaTeleportCeldas.IZQUIERDA:
                return((celda.x - 1) == celda.y);

            case MapaTeleportCeldas.DERECHA:
                return((celda.x - 27) == celda.y);

            case MapaTeleportCeldas.ABAJO:
                return((celda.x + celda.y) == 31);

            case MapaTeleportCeldas.ARRIBA:
                return(celda.y < 0 && (celda.x - Math.Abs(celda.y)) == 1);
            }

            return(true); // direccion NINGUNA
        }
Пример #30
0
        public bool get_Puede_Cambiar_Mapa(MapaTeleportCeldas direccion, Celda celda)
        {
            switch (direccion)
            {
            case MapaTeleportCeldas.LEFT:
                return((celda.x - 1) == celda.y);

            case MapaTeleportCeldas.RIGHT:
                return((celda.x - 27) == celda.y);

            case MapaTeleportCeldas.BOTTOM:
                return((celda.x + celda.y) == 31);

            case MapaTeleportCeldas.TOP:
                return(celda.y < 0 && (celda.x - Math.Abs(celda.y)) == 1);
            }

            return(true); // direccion NINGUNA
        }
Пример #31
0
        private bool get_Mover_Para_Cambiar_mapa(Celda celda)
        {
            switch (get_Mover_A_Celda(celda, mapa.celdas_ocupadas))
            {
            case ResultadoMovimientos.EXITO:
                if (GlobalConf.mostrar_mensajes_debug)
                {
                    cuenta.logger.log_informacion("MOVIMIENTOS", $"Mapa actual: {mapa.id} desplazando para cambiar el mapa a la casilla: " + celda.id);
                }
                return(true);

            default:
                if (GlobalConf.mostrar_mensajes_debug)
                {
                    cuenta.logger.log_informacion("MOVIMIENTOS", $"camino hacia {celda.id} fallado o bloqueado");
                }
                return(false);
            }
        }
Пример #32
0
        public bool get_Verificar_Direccion_Correcta(MapaTeleportCeldas direccion, Celda celda)
        {
            switch (direccion)
            {
            case MapaTeleportCeldas.IZQUIERDA:
                return((celda.x - 1) == celda.y || (celda.x - 2) == celda.y);

            case MapaTeleportCeldas.DERECHA:
                return(celda.x - (mapa.anchura + mapa.altura - 5) == celda.y || celda.x - (mapa.anchura + mapa.altura - 5) == celda.y - 1);

            case MapaTeleportCeldas.ABAJO:
                return(celda.y + celda.x > (mapa.anchura + mapa.altura - 5));

            case MapaTeleportCeldas.ARRIBA:
                return(celda.y < 0 && (celda.x - Math.Abs(celda.y)) < 5);
            }

            return(direccion == MapaTeleportCeldas.NINGUNO); //direccion ninguna
        }
Пример #33
0
    private int tamañoMaximo = 10,tamañoMinimo=6; //dimensiones minimas y maximas del tablero

    #endregion Fields

    #region Constructors

    /**
     * Creamos el tablero y establecemos su tamaño.
     * @param tamaño del tablero.
     */
    public Tablero(int tamaño)
    {
        //Ajustamos el tamaño
        if (tamaño % 2 != 0) tamaño += 1;
        if (tamaño < tamañoMinimo || tamaño > tamañoMaximo) tamaño = 8;
        this.tamaño = tamaño;
        celdas = new Celda[tamaño, tamaño];

        int tmp = getTamaño() / 2 - 1; //Temporal para establecer las posiciones iniciales

        //Creamos las celdas
        for (int a = 0; a < getTamaño(); a++)
            for (int b = 0; b < getTamaño(); b++)
                getTablero()[a, b] = new Celda(a, b, '-');

        //Establecemos el contenido de las celdas centrales
        getCelda(tmp, tmp).setFicha('X');
        getCelda(tmp, tmp + 1).setFicha('O');
        getCelda(tmp + 1, tmp).setFicha('O');
        getCelda(tmp + 1, tmp + 1).setFicha('X');
    }
Пример #34
0
    /**
     * Esta función comprueba si hay celdas afectadas.
     * En ese caso, las pasa a una variable global pública.
     * @param celda de la jugada que vamos a comprobar.
     * @return boolean dependiendo de si hay celdas afectadas o no.
     */
    public bool comprobarSiHayCeldasAfectadas(Celda celda)
    {
        //Posibles celdas en donde buscará continuar
        //Son las colindantes con ficha del oponente
        List<Celda> viasTemporales = new List<Celda>();
        //Celdas que igual cambiamos o igual no.
        List<Celda> tmpCeldasFinales;
        //Rotaciones que debemos hacer para recorrer una fila, columna o diagonal
        int x_rotar, y_rotar, x_base_rotar, y_base_rotar;
        //Inicializamos outputceldas para que se vacie.
        outputCeldas = new List<Celda>();

        int[,] posiciones = new int[8, 2];
        posiciones[0, 0] = -1; posiciones[0, 1] = -1;
        posiciones[1, 0] = -1; posiciones[1, 1] = 0;
        posiciones[2, 0] = -1; posiciones[2, 1] = 1;
        posiciones[3, 0] = 0; posiciones[3, 1] = -1;
        posiciones[4, 0] = 0; posiciones[4, 1] = 1;
        posiciones[5, 0] = 1; posiciones[5, 1] = -1;
        posiciones[6, 0] = 1; posiciones[6, 1] = 0;
        posiciones[7, 0] = 1; posiciones[7, 1] = 1;

        //Visitamos todas las posibles posiciones en las que puede seguir la fila
        for(int a=0;a<8;a++)
            if (celda.getY() + posiciones[a, 0] >= 0 && celda.getY() + posiciones[a, 0] < tamaño
                && celda.getX() + posiciones[a, 1] >= 0 && celda.getX() + posiciones[a, 1] < tamaño
                && getCelda(celda.getY() + posiciones[a, 0], celda.getX() + posiciones[a, 1]).getFicha() == Jugador.fichaOponente(celda.getFicha()))
                viasTemporales.Add(new Celda(celda.getY() + posiciones[a, 0], celda.getX() + posiciones[a, 1],
                    getCelda(celda.getY() + posiciones[a, 0], celda.getX() + posiciones[a, 1]).getFicha()));

        //Hasta este momento hemos obtenido las direcciones de las celdas a las que podemos ir en busca de una ruta a voltear.
        foreach (Celda viatemporal in viasTemporales)
        {
            tmpCeldasFinales = new List<Celda>();
            //Obtenemos una base con la que iremos permutando
            x_base_rotar = viatemporal.getX() - celda.getX();
            y_base_rotar = viatemporal.getY() - celda.getY();
            x_rotar = x_base_rotar;
            y_rotar = y_base_rotar;

            //Por si no entramos en el while, hay que aumentarlas igualmente
            /*if (!(celda.getY() + y_rotar >= 0 && celda.getY() + y_rotar < tamaño && celda.getX() + x_rotar >= 0 && celda.getX() + x_rotar < tamaño &&
                getCelda(celda.getY() + y_rotar, celda.getX() + x_rotar).getFicha() == Jugador.fichaOponente(celda.getFicha())))
            {
                y_rotar += y_base_rotar;
                x_rotar += x_base_rotar;
            }*/

            //En este while vamos buscando rutas
            while (celda.getY() + y_rotar >= 0 && celda.getY() + y_rotar < tamaño && celda.getX() + x_rotar >= 0 && celda.getX() + x_rotar < tamaño &&
                getCelda(celda.getY() + y_rotar, celda.getX() + x_rotar).getFicha() == Jugador.fichaOponente(celda.getFicha()))
            {
                //Vamos añadiendo celdas y vamos rotando para hacernos con esa línea
                tmpCeldasFinales.Add(new Celda(celda.getY() + y_rotar, celda.getX() + x_rotar, celda.getFicha()));
                y_rotar += y_base_rotar;
                x_rotar += x_base_rotar;
            }

            //Una vez llegado al limite, comprobamos si la ficha que hemos encontrado es nuestra
            //En tal caso, volteamos todo
            if (celda.getX() + x_rotar >= 0 && celda.getX() + x_rotar < tamaño && celda.getY() + y_rotar >= 0 && celda.getY() + y_rotar < tamaño
                && (getCelda(celda.getY() + y_rotar, celda.getX() + x_rotar).getFicha() == celda.getFicha()))
            {
                //Añadimos la celda actual
                outputCeldas.Add(celda);
                //Y las celdas que hemos obtenido (su ruta)
                outputCeldas.AddRange(tmpCeldasFinales);
            }

        }  //foreach

        //Dependiendo de si tenemos algo en el output, devolvemos true o false.
        if (outputCeldas.Count != 0)
            return true;
        return false;
    }
Пример #35
0
 /**
  * Esta función nos devuelve si el movimiento pasado por parámetro es legal.
  * @param celda del movimiento que queremos realizar.
  * @return boolean dependiendo de si es legal o no el movimiento.
  */
 public Boolean esLegal(Celda celda)
 {
     //Para que sea un movimiento legal, la celda tiene que estar vacia, y tiene que haber casillas afectadas
     if (celda!=null && getCelda(celda.getY(),celda.getX()).getFicha()=='-' && comprobarSiHayCeldasAfectadas(celda))
         return true;
     return false;
 }
Пример #36
0
    /*
     * 	Funcion: inicializarGrid()
     *
     * 	Inicializa <grid>, la estructura de datos que contiene todas las celdas del entorno.
     *
     * 	<grid> es una lista, donde cada entrada contiene una matriz bidimensional de celdas. Cada entrada de la lista representa
     * 	un plano de celdas con el mismo <indice_y>. Estos son almacenados como matrices bidimensionales de celdas, donde las
     *  dimensiones representan el <indice_x> y el <indice_z> de cada celda.
     *
     * 	Ejemplo:	grid[1][2,3] contiene la celda con <indice_y> = 1, <indice_x> = 2, <indice_z> = 3.
     */
    void inicializarGrid()
    {
        grid = new List<Celda[,]>();

        for (int y = 0; y < tamano_y; ++y) {
            grid.Add (new Celda[tamano_x, tamano_z]);
            for (int x = 0; x < tamano_x; ++x) {
                for (int z = 0; z < tamano_z; ++z) {
                    grid[y][x, z] = new Celda(x, y, z);
                }
            }
        }
    }
Пример #37
0
 static int Zona(Celda x) {
     return M * (x.i / M) + x.j / M;
 }