예제 #1
0
        public static void Main(string[] args)
        {
            string peticion;

            string[] comandos;
            string   nombreComando;
            string   respuesta;

            while (true)
            {
                respuesta = "no respuesta";
                peticion  = Console.ReadLine();
                Dpr.Log("WINBOARD: " + peticion);
                comandos      = peticion.Split(' ');
                nombreComando = comandos[0];

                switch (nombreComando)
                {
                case "protover":
                    respuesta = Protocolo.Protover();
                    break;

                case "new":
                    WinboardSession.PtdActual = new Partida();
                    break;

                case "usermove":
                    respuesta = Protocolo.Usermove(comandos[1], WinboardSession.PtdActual);
                    break;

                case "force":
                    Protocolo.Force(WinboardSession.PtdActual);
                    break;

                case "go":
                    respuesta = Protocolo.Go(WinboardSession.PtdActual);
                    break;

                case "sd":
                    Protocolo.Sd(comandos[1], WinboardSession.PtdActual);
                    break;

                default:
                    break;
                }

                if (nombreComando == "quit")
                {
                    break;
                }
                else if (respuesta != "no respuesta")
                {
                    Console.WriteLine(respuesta);
                    Dpr.Log("ALEDREZ: " + respuesta);
                }
            }
        }
예제 #2
0
파일: lista.cs 프로젝트: sideral/aledrez
    public void VerLista()
    {
        Dpr.Log("LISTA");
        Dpr.Log("Inicio: " + this.inicio);
        Dpr.Log("Libre: " + this.libre);

        for (int i = 0; i < Items.Length; i++)
        {
            Dpr.Log("Escaque: " + Items[i].Escaque + " - Siguiente: " + Items[i].Siguiente);
        }
        Dpr.Log("FIN LISTA");
    }
예제 #3
0
    public override void EliminarMovimientos(int esq, Tablero tab)
    {
        for (int j = 0; j < BdMov[esq][0].Length; j++)
        {
            tab[BdMov[esq][0][j]].Movs[this.Color].Eliminar(esq);
            tab[BdMov[esq][0][j]].Bloqueados.Eliminar(esq);
        }

        for (int k = 1; k <= 2; k++)
        {
            if (BdMov[esq][k].Length > 0)
            {
                int posicion = tab[BdMov[esq][k][0]].Protectores[this.Color].Eliminar(esq);
                if (posicion == -1)
                {
                    tab[BdMov[esq][k][0]].Movs[this.Color].Eliminar(esq);
                }
            }
        }

        for (int i = 0; i < 64; i++)
        {
            if (tab[i].Movs[this.Color].Buscar(esq) != -1)
            {
                Dpr.Log("quedan Movs");
            }
            if (tab[i].Protectores[this.Color].Buscar(esq) != -1)
            {
                Dpr.Log("quedan Protectores");
            }
            if (tab[i].Bloqueados.Buscar(esq) != -1)
            {
                Dpr.Log("quedan Bloqueados");
                Dpr.Log(i + ", " + esq);
            }
        }
    }
예제 #4
0
파일: lista.cs 프로젝트: sideral/aledrez
    public bool Insertar(int escaque, Tablero tab)
    {
        if (this.libre == -1)
        {
            Dpr.Log("Mierda");
            return(false);
        }

        int lugar = ObtenerEspacio();

        if (lugar != -1)
        {
            this.Items[lugar].Escaque = escaque;
            //Dpr.Log("Insertado " + escaque);
            this.Cuenta++;
        }
        else
        {
            return(false);
        }

        if (this.inicio == -1)
        {
            this.Items[lugar].Siguiente = -1;
            this.inicio = lugar;
            return(true);
        }

        int anterior = -1;
        int actual   = this.inicio;

        while (actual != -1)
        {
            if (escaque == this.Items[actual].Escaque)
            {
                Liberar(lugar);
                this.Cuenta--;
                //	Dpr.Log("Borrado " + escaque);
                return(false);
            }

            if (tab[escaque].Tipo.Valor <= tab[this.Items[actual].Escaque].Tipo.Valor)
            {
                if (anterior == -1)
                {
                    this.Items[lugar].Siguiente = this.inicio;
                    this.inicio = lugar;
                }
                else
                {
                    this.Items[lugar].Siguiente    = this.Items[anterior].Siguiente;
                    this.Items[anterior].Siguiente = lugar;
                }
                return(true);
            }
            else if (tab[escaque].Tipo.Valor > tab[this.Items[actual].Escaque].Tipo.Valor)
            {
                anterior = actual;
                actual   = this.Items[actual].Siguiente;
            }

            if (actual == -1)
            {
                this.Items[anterior].Siguiente = lugar;
                this.Items[lugar].Siguiente    = -1;
            }
        }
        return(true);
    }