chrisbra / Colorizer

color hex codes and color names
547 stars 30 forks source link

does not display ANSI colors #99

Closed Cris-lml007 closed 2 years ago

Cris-lml007 commented 2 years ago

the plugin has not been working with ANSI colors since the last update, before it was giving normal, because this is due?

chrisbra commented 2 years ago

oh, did not notice yet. Which commit broke it?

Cris-lml007 commented 2 years ago

I can't color ANSI-type data when I perform the command: :ColorHightlinght.
before it was normal but now it is no longer.

chrisbra commented 2 years ago

I found an error and fixed it. Please try again. If this doesn't work, please send me an example that reproduces this problem. Thanks

Cris-lml007 commented 2 years ago

I just updated it again and it doesn't work with ANSI colors yet .
I am testing with this code:

#include <stdio.h>
#include <stdlib.h>

int main()
{
  printf("\033[1;41m ________________                                 \n");
  printf("|           |    |                                \n");
  printf("|           |____|________                        \n");
  printf("|                         |                       \n");
  printf("|_________________________|                       \n");
  printf(" /  \\             /  \\                            \n");
  printf("|    |           |    |                           \n");
  printf("_\\__/_____________\\__/__________________________  \n");
  printf("________________________________________________  \033[0m\n ");
  getchar();
  system("clear");

  printf("\033[1;44m          _________________               \n");
  printf("        |    |            |               \n");
  printf(" _______|____|            |               \n");
  printf("|                         |               \n");
  printf("|_________________________|               \n");
  printf("    /  \\             /  \\                 \n");
  printf("   |    |           |    |                \n");
  printf("____\\__/_____________\\__/_________________\n");
  printf("__________________________________________\033[0m\n ");
getchar();
    return 0;
}

and this:

#include <iostream>
#include <cstring>
#define crojo "\x1b[1;41m"
#define cnegro "\x1b[1;40m"
#define cnormal "\x1b[1;0m"
#define saluda "hola como estas"

using namespace std;
string tablero[8][8],copia[8][8],turno;
int mov[4];

//piezas de ajedrez y tablero
string torre_n=" ♜ ",torre_b=" ♖ ";
string caballo_n=" ♞ ",caballo_b=" ♘ ";
string alfil_n=" ♝ ",alfil_b=" ♗ ";
string reyna_n=" ♛ ",reyna_b=" ♕ ";
string rey_n=" ♚ ",rey_b=" ♔ ";
string peon_n=" ♟ ",peon_b=" ♙ ";
string cuadro="   ";
bool prey_n=true;
bool prey_b=true;
int puntaje[6][2];

void table(){
    for(int i=0;i<8;i++){
        for(int ii=0;ii<8;ii++){
            if(i==0){
                if(ii==0 || ii==7) tablero[ii][i]=torre_n;
                if(ii==1 || ii==6) tablero[ii][i]=caballo_n;
                if(ii==2 || ii==5) tablero[ii][i]=alfil_n;
                if(ii==3) tablero[ii][i]=reyna_n;
                if(ii==4) tablero[ii][i]=rey_n;
            }else if(i==1)tablero[ii][i]=peon_n;
            else if(i==7){
                if(ii==0 || ii==7) tablero[ii][i]=torre_b;
                if(ii==1 || ii==6) tablero[ii][i]=caballo_b;
                if(ii==2 || ii==5) tablero[ii][i]=alfil_b;
                if(ii==3) tablero[ii][i]=reyna_b;
                if(ii==4) tablero[ii][i]=rey_b;
            }else if(i==6) tablero[ii][i]=peon_b;
            else tablero[ii][i]=cuadro;
        }
    }
}

void  mostrar(){
    bool verificacion;
    cout<<"\n    \x1b[1;40m\x1b[1;37m+ a  b  c  d  e  f  g  h +\x1b[1;0m"<<"    "<<cnegro<<"\x1b[1;37m+-----------------+"<<cnormal<<endl;
    for(int i=0;i<8;i++){
        cout<<"    "<<cnegro<<"\x1b[1;37m"<<i+1<<"\x1b[1;37m";
        if(i%2==0){
            cout<<cnegro;
            verificacion=true;
        }else{
            cout<<crojo;
            verificacion=false;
        }
        for(int ii=0;ii<8;ii++){
            cout<<tablero[ii][i];
            if(verificacion==true){
                cout<<crojo;
                verificacion=false;
            }else{
                cout<<cnegro;
                verificacion=true;
            }
        }
        cout<<cnormal<<"\x1b[1;40m\x1b[1;37m"<<i+1<<cnormal<<"\x1b[1;37m";
        if(i==0) cout<<"    "<<cnegro<<"| "<<torre_n<<": "<<puntaje[4][0]<<" | "<<torre_b<<": "<<puntaje[4][1]<<" |"<<cnormal<<endl;
        else if(i==1) cout<<"    "<<cnegro<<"| "<<caballo_n<<": "<<puntaje[3][0]<<" | "<<caballo_b<<": "<<puntaje[3][1]<<" |"<<cnormal<<endl;
        else if(i==2) cout<<"    "<<cnegro<<"| "<<alfil_n<<": "<<puntaje[2][0]<<" | "<<alfil_b<<": "<<puntaje[2][1]<<" |"<<cnormal<<endl;
        else if(i==3) cout<<"    "<<cnegro<<"| "<<reyna_n<<": "<<puntaje[1][0]<<" | "<<reyna_b<<": "<<puntaje[1][1]<<" |"<<cnormal<<endl;
        else if(i==4) cout<<"    "<<cnegro<<"| "<<rey_n<<": "<<puntaje[0][0]<<" | "<<rey_b<<": "<<puntaje[0][1]<<" |"<<cnormal<<endl;
        else if(i==5) cout<<"    "<<cnegro<<"| "<<peon_n<<": "<<puntaje[5][0]<<" | "<<peon_b<<": "<<puntaje[5][1]<<" |"<<cnormal<<endl;
        else if(i==6) cout<<"    "<<cnegro<<"\x1b[1;37m+-----------------+"<<cnormal<<endl;
        else if(i==7) cout<<"    "<<cnegro<<"\x1b[1;37m|"<<turno<<"|"<<cnormal<<endl;
        else cout<<endl;
    }
    cout<<"    "<<cnegro<<"\x1b[1;37m+ a  b  c  d  e  f  g  h +"<<cnormal<<"    "<<cnegro<<"\x1b[1;37m+-----------------+"<<cnormal<<endl;
}

void puntajes(){
    int rey=0,reyna=0,alfil=0,caballo=0,torre=0,peon=0;
    int rey1=0,reyna1=0,alfil1=0,caballo1=0,torre1=0,peon1=0;
    string npieza;
    for(int a=0;a<2;a++){
        for(int b=0;b<6;b++){
            puntaje[b][a]=0;
        }
    }
    for(int i=0;i<8;i++){
        for(int ii=0;ii<8;ii++){
            npieza=tablero[ii][i];
            if(npieza==rey_n){
                rey++;
                puntaje[0][0]=rey;
            }else if(npieza==reyna_n){
                reyna++;
                puntaje[1][0]=reyna;
            }else if(npieza==alfil_n){
                alfil++;
                puntaje[2][0]=alfil;
            }else if(npieza==caballo_n){
                caballo++;
                puntaje[3][0]=caballo;
            }else if(npieza==torre_n){
                torre++;
                puntaje[4][0]=torre;
            }else if(npieza==peon_n){
                peon++;
                puntaje[5][0]=peon;
            }else if(npieza==rey_b){
                rey1++;
                puntaje[0][1]=rey1;
            }else if(npieza==reyna_b){
                reyna1++;
                puntaje[1][1]=reyna1;
            }else if(npieza==alfil_b){
                alfil1++;
                puntaje[2][1]=alfil1;
            }else if(npieza==caballo_b){
                caballo1++;
                puntaje[3][1]=caballo1;
            }else if(npieza==torre_b){
                torre1++;
                puntaje[4][1]=torre1;
            }else if(npieza==peon_b){
                peon1++;
                puntaje[5][1]=peon1;
            }
        }
    }
}

void mover(string a,int ver){
    int A,B;
    if(ver==1){
        A=0;
        B=1;
    }else{
        A=2;
        B=3;
    }
    if(a[0]=='a') mov[A]=0;
    else if(a[0]=='b') mov[A]=1;
    else if(a[0]=='c') mov[A]=2;
    else if(a[0]=='d') mov[A]=3;
    else if(a[0]=='e') mov[A]=4;
    else if(a[0]=='f') mov[A]=5;
    else if(a[0]=='g') mov[A]=6;
    else if(a[0]=='h') mov[A]=7;
    if(a[1]=='1') mov[B]=0;
    else if(a[1]=='2') mov[B]=1;
    else if(a[1]=='3') mov[B]=2;
    else if(a[1]=='4') mov[B]=3;
    else if(a[1]=='5') mov[B]=4;
    else if(a[1]=='6') mov[B]=5;
    else if(a[1]=='7') mov[B]=6;
    else if(a[1]=='8') mov[B]=7;
}

class pieza{
    private:
        string PIE;
    public:
        pieza(string);
        bool  movimiento();
        void torre();
        void caballo();
        void peon();
        void alfil();
        void reyna();
        void rey();
        string PIEZA();
};

string pieza::PIEZA(){
    string ver=PIE;
    return ver;
}

void moverse(){
    tablero[mov[2]][mov[3]]=tablero[mov[0]][mov[1]];
    tablero[mov[0]][mov[1]]=cuadro;
}

pieza::pieza(string pie){
    PIE=pie;
}

string posicion(){
    string pos=tablero[mov[2]][mov[3]];
    return pos;
}

bool aliado_n(){
    bool ver;
    if(posicion()==peon_n || posicion()==torre_n || posicion()==caballo_n || posicion()==alfil_n || posicion()==reyna_n || posicion()==reyna_n){
        ver=false;
    }else ver=true;
    return ver;
}

bool aliado_b(){
    bool ver;
    if(posicion()==peon_b || posicion()==torre_b || posicion()==caballo_b || posicion()==alfil_b || posicion()==rey_b || posicion()==reyna_b){
        ver=false;
    }else ver=true;
    return ver;
}

void delay(int seg){
    for(int i=time(NULL)+seg;time(NULL)!=i;time(NULL));
}

void error(){
        system("clear");
        cout<<"\x1b[5;37mLA POSICION A LA QUE DESEA AVANZAR ES ERRONEA\n\tINTENTE NUEVAMENTE EN 3 SEG\n"<<cnormal;
        mostrar();
        delay(3);
}

void pieza::torre(){
    bool selector;
    if(PIE==torre_n || PIE==reyna_n) selector=aliado_n();
    else if(PIE==torre_b || PIE==reyna_b) selector=aliado_b();
    //movimiento de columna
    if(mov[3]==mov[1]){
        bool ver=true,ver1=true,ver2=true;
        //validacion de espacios vacios a recorrer hacia la derecha
        if(mov[2]>mov[0]){
            for(int i=mov[0]+1;i<mov[2];i++){
                if(tablero[i][mov[3]]!=cuadro){
                    i=mov[2]+1;
                    ver=false;
                }else ver=true;
            }
            //validacion si recorrera un espacio
            if(mov[2]==mov[0]+1){
                if(selector==false){
                    ver2=false;
                }else ver2=true;
            }
        }else{
            //validacion de espacios vacios hacia la izquierda
            for(int i=mov[0]-1;i>mov[2];i--){
                if(tablero[i][mov[3]]!=cuadro){
                    i=mov[2]-1;
                    ver=false;
                }else ver=true;
            }
            //validacion de la casilla a mover si esta vacia o con pieza enemiga
            if(mov[2]==mov[0]-1){
                if(selector==false){
                    ver2=false;
                }else ver2=true;
            }
        }
        //movimiento de la pieza si cumple las 3 reglas anteriores
        if(selector==false){
            ver1=false;
        }else ver1=true;
        if(ver==true && ver1==true && ver2==true){
            moverse();
        }else error();
        //movimiento de fila
    }else if(mov[2]==mov[0]){
        bool ver=true,ver1=true,ver2=true;
        //movimiento hacia adelante
        if(mov[3]>mov[1]){
            //movimiento de espacios vacios a recorrer
            for(int i=mov[1]+1;i<mov[3];i++){
                if(tablero[mov[2]][i]!=cuadro){
                    i=mov[3]+1;
                    ver=false;
                }else ver=true;
            }
            //validacion si recorrera un espacio
            if(mov[3]==mov[1]+1){
                if(selector==false){
                    ver2=false;
                }else ver2=true;
            }
            //movimiento hacia atras
        }else{
            //validacion de espacios vacios a recorrer
            for(int i=mov[1]-1;i>mov[3];i--){
                if(tablero[mov[2]][i]!=cuadro){
                    i=mov[3]-1;
                    ver=false;
                }else ver=true;
            }
            //validacion si recorrera un espacio
            if(mov[3]==mov[1]-1){
                if(selector==false){
                    ver2=false;
                }else ver2=true;
            }
        }
        //validacion del espacio a mover si esta vacio o con enemigo
        if(selector==false){
            ver1=false;
        }else ver1=true;
        //movimiento si se cumple las 3 reglas anteriores
        if(ver==true && ver1==true && ver2==true){
            moverse();
        }else error();
    }else error();
}

void pieza::caballo(){
    bool selector;
    if(PIE==caballo_n) selector=aliado_n();
    else if(PIE==caballo_b) selector=aliado_b();
    if(mov[2]==mov[0]+2 || mov[2]==mov[0]-2){
        if(mov[3]==mov[1]-1 || mov[3]==mov[1]+1){
            if(selector==true){
                moverse();
            }else error();
        }
    }else if(mov[3]==mov[1]-2 || mov[3]==mov[1]+2){
        if(mov[2]==mov[0]-1 || mov[2]==mov[0]+1){
            if(selector==true){
                moverse();
            }else error();
        }
    }else error();
}

void pieza::peon(){
    bool selector;
    if(PIE==peon_n) selector=aliado_n();
    else if(PIE==peon_b) selector=aliado_b();
    if(PIE==peon_n){
        if(mov[2]==mov[0] && mov[3]>mov[1] && mov[3]<=mov[1]+1 && posicion()==cuadro){
            moverse();
        }else if(mov[2]==mov[0] && mov[3]>mov[1] && mov[1]==1 && mov[3]<=mov[1]+2 && posicion()==cuadro){
            moverse();
        }else if(mov[2]==mov[0]+1 || mov[2]==mov[0]-1){
            if(mov[3]>mov[1] && mov[3]<=mov[1]+1 && posicion()!=cuadro){
                if(selector==true){
                    moverse();
                }else error();
            }
        }
        if(mov[3]==7 && mov[1]+1==7){
            int selec;
            system("clear");
            do{
            cout<<cnegro<<"\x1b[1;37m"<<"+---------------+"<<endl;
            cout<<cnegro<<"\x1b[1;37m"<<"|"<<reyna_n<<"|"<<alfil_n<<"|"<<caballo_n<<"|"<<torre_n<<"|\n";
            cout<<"| 1 | 2 | 3 | 4 |"<<endl;
            cout<<"+---------------+"<<endl;
            cout<<"ingrese el numero de la pieza para cambiar: ";
            cin>>selec;
            if(selec==1) tablero[mov[2]][mov[3]]=reyna_n;
            else if(selec==2) tablero[mov[2]][mov[3]]=alfil_n;
            else if(selec==3) tablero[mov[2]][mov[3]]=caballo_n;
            else if(selec==4) tablero[mov[2]][mov[3]]=torre_n;
            else cout<<"pieza no encontrada"<<endl;
            }while(selec<1 || selec>5);
            tablero[mov[0]][mov[1]]=cuadro;
        }
    }else if(PIE==peon_b){
        if(mov[2]==mov[0] && mov[3]<mov[1] && mov[3]>=mov[1]-1 && posicion()==cuadro){
            moverse();
        }else if(mov[2]==mov[0] && mov[3]<mov[1] && mov[1]==6 && mov[3]>=mov[1]-2 && posicion()==cuadro){
            moverse();
        }else if(mov[3]<mov[1] && mov[3]>=mov[1]-1 && posicion()!=cuadro){
            if(selector==true){
                moverse();
            }else error();
        }
        if(mov[3]==0 && mov[1]-1==0){
            int selec;
            system("clear");
            do{
            cout<<cnegro<<"\x1b[1;37m"<<"+---------------+"<<endl;
            cout<<cnegro<<"\x1b[1;37m"<<"|"<<reyna_b<<"|"<<alfil_b<<"|"<<caballo_b<<"|"<<torre_b<<"|\n";
            cout<<"| 1 | 2 | 3 | 4 |"<<endl;
            cout<<"+---------------+"<<endl;
            cout<<"ingrese el numero de la pieza para cambiar: ";
            cin>>selec;
            if(selec==1) tablero[mov[2]][mov[3]]=reyna_b;
            else if(selec==2) tablero[mov[2]][mov[3]]=alfil_b;
            else if(selec==3) tablero[mov[2]][mov[3]]=caballo_b;
            else if(selec==4) tablero[mov[2]][mov[3]]=torre_b;
            else cout<<"pieza no encontrada"<<endl;
            }while(selec<1 || selec>5);
            tablero[mov[0]][mov[1]]=cuadro;
        }
    }else error();
}

void pieza::alfil(){
    bool selector,orientacion1,orientacion2,veri1,veri2;
    int colum=mov[0],fil=mov[1],colum1=mov[0],fil1=mov[1];
    if(PIE==alfil_n || PIE==reyna_n) selector=aliado_n();
    else if(PIE==alfil_b || PIE==reyna_b) selector=aliado_b();
    //define si la casilla a avanzar es de caracter positivo o negativo
    if(mov[3]>mov[1]) orientacion1=true;
    else orientacion1=false;
    if(mov[2]>mov[0]) orientacion2=true;
    else orientacion2=false;
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //verificador
    //verifica si la posicion de salida es una posicion admitida
    if(fil<mov[3]){
        while(fil<mov[3]){
            if(orientacion1==true) fil++;
            else fil--;
            if(orientacion2==true) colum++;
            else colum--;
        }
    }else if(fil>mov[3]){
        while(fil>mov[3]){
            if(orientacion1==true) fil++;
            else fil--;
            if(orientacion2==true) colum++;
            else colum--;
        }
    }
    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    //
    //comprobador de espacios vacios
    //----------------------------------------------------------------
    //comprueba la diagonal derecha hacia abajo
    if(colum==mov[2] && fil==mov[3]){
        if(mov[2]>colum1 && mov[3]>fil1){
            if(fil1+1==mov[3]){
                veri1=true;
            }else if(fil1<mov[3]){
                while(fil1<mov[3]-1){
                    if(orientacion1==true) fil1++;
                    else fil1--;
                    if(orientacion2==true) colum1++;
                    else colum1--;
                    if(tablero[colum1][fil1]!=cuadro){
                        fil1=mov[3]+1;
                        veri1=false;
                    }else veri1=true;
                }
            }
        }
        //comprueba la diagonal izquierda abajo
        if(mov[2]<colum1 && mov[3]>fil1){
            if(fil1+1==mov[3]){
                veri1=true;
            }else if(fil1<mov[3]){
                while(fil1<mov[3]-1){
                    if(orientacion1==true) fil1++;
                    else fil1--;
                    if(orientacion2==true) colum1++;
                    else colum1--;
                    if(tablero[colum1][fil1]!=cuadro){
                        fil1=mov[3]+1;
                        veri1=false;
                    }else veri1=true;
                }
            }
        }
        //comprueba la diagonal arriba izquierda
        if(mov[2]<colum1 && mov[3]<fil1){
            if(fil1-1==mov[3]){
                veri1=true;
            }else if(fil1>mov[3]){
                while(fil1>mov[3]+1){
                    if(orientacion1==true) fil1++;
                    else fil1--;
                    if(orientacion2==true) colum1++;
                    else colum1--;
                    if(tablero[colum1][fil1]!=cuadro){
                        fil1=mov[3]+1;
                        veri1=false;
                    }else veri1=true;
                }
            }
        }
        //comprueba la diagonal derecha arriba
        if(mov[2]>colum1 && mov[3]<fil1){
            if(fil1-1==mov[3]){
                veri1=true;
            }else if(fil1>mov[3]){
                while(fil1>mov[3]+1){
                    if(orientacion1==true) fil1++;
                    else fil1--;
                    if(orientacion2==true) colum1++;
                    else colum1--;
                    if(tablero[colum1][fil1]!=cuadro){
                        fil1=mov[3]+1;
                        veri1=false;
                    }else veri1=true;
                }
            }
        }
    }
    //----------------------------------------------------------------
    //****************************************************************
    //comprobador de casilla posicion aliada o enemiga
    if(selector==true) veri2=true;
    else veri2=false;
    //****************************************************************
    //comprobante de seguridad para realizar el movimiento
    if(veri1==true && veri2==true){
        moverse();
    }else error();
}

void pieza::reyna(){
    pieza reyna=pieza(tablero[mov[0]][mov[1]]);
    if(mov[2]==mov[0] && mov[3]!=mov[1]) reyna.torre();
    else if(mov[2]!=mov[0] && mov[3]==mov[1]) reyna.torre();
    else reyna.alfil();
}

void pieza::rey(){
    bool selector,ver=true,ver1=true;
    int srey,a,b;
    if(PIE==rey_n) selector=aliado_n();
    else if(PIE==rey_b) selector=aliado_b();
    if(PIE==rey_n) srey=0;
    else if(PIE==rey_b) srey=7;
    if(mov[3]==mov[1]+1 && mov[2]==mov[0]+1){
        if(selector==true){
            moverse();
            if(PIE==rey_n) prey_n=false;
            else if(PIE==rey_b) prey_b=false;
        }else error();
    }else if(mov[3]==mov[1]-1 && mov[2]==mov[0]-1){
        if(selector==true){
            moverse();
            if(PIE==rey_n) prey_n=false;
            else if(PIE==rey_b) prey_b=false;
        }else error();
    }else if(mov[3]==mov[1]-1 && mov[2]==mov[0]+1){
        if(selector==true){
            moverse();
            if(PIE==rey_n) prey_n=false;
            else if(PIE==rey_b) prey_b=false;
        }else error();
    }else if(mov[3]==mov[1]+1 && mov[2]==mov[0]-1){
        if(selector==true){
            moverse();
            if(PIE==rey_n) prey_n=false;
            else if(PIE==rey_b) prey_b=false;
        }else error();
    }else if(mov[3]==mov[1]+1 && mov[2]==mov[0]){
        if(selector==true){
            moverse();
            if(PIE==rey_n) prey_n=false;
            else if(PIE==rey_b) prey_b=false;
        }else error();
    }else if(mov[3]==mov[1]-1 && mov[2]==mov[0]){
        if(selector==true){
            moverse();
            if(PIE==rey_n) prey_n=false;
            else if(PIE==rey_b) prey_b=false;
        }else error();
    }else if(mov[3]==mov[1] && mov[2]==mov[0]+1){
        if(selector==true){
            moverse();
            if(PIE==rey_n) prey_n=false;
            else if(PIE==rey_b) prey_b=false;
        }else error();
    }else if(mov[3]==mov[1] && mov[2]==mov[0]-1){
        if(selector==true){
            moverse();
            if(PIE==rey_n) prey_n=false;
            else if(PIE==rey_b) prey_b=false;
        }else error();
    }else if(mov[0]==4 && mov[1]==srey){
        if((mov[2]==6 && mov[3]==srey) || (mov[2]==2 && mov[3]==srey)){
            if(mov[2]==2){
                for(int i=1;i<4;i++){
                    if(tablero[i][srey]!=cuadro){
                        ver=false;
                        i=4+1;
                    }else ver=true;
                }
            }else if(mov[2]==6){
                for(int i=5;i<6;i++){
                    if(tablero[i][srey]!=cuadro){
                        ver=false;
                        i=6+1;
                    }else ver=true;
                }
            }
            if(mov[2]==6 && srey==0){
                if(tablero[7][0]==torre_n){
                    ver1=true;
                    a=5;
                    b=7;
                }else ver1=false;
            }
            if(mov[2]==2 && srey==0){
                if(tablero[0][0]==torre_n){
                    ver1=true;
                    a=3;
                    b=0;
                }else ver1=false;
            }
            if(mov[2]==6 && srey==7){
                if(tablero[7][7]==torre_b){
                    ver1=true;
                    a=5;
                    b=7;
                }else ver1=false;
            }
            if(mov[2]==2 && srey==7){
                if(tablero[0][7]==torre_b){
                    ver1=true;
                    a=3;
                    b=0;
                }else ver1=false;
            }
            if(ver==true && ver1==true){
                if(srey==0 && prey_n==true){
                    moverse();
                    tablero[a][srey]=torre_n;
                    tablero[b][srey]=cuadro;
                    prey_n=false;
                }else if(srey==7 && prey_b==true){
                    moverse();
                    tablero[a][srey]=torre_b;
                    tablero[b][srey]=cuadro;
                    prey_b=false;
                }else error();
            }
        }
    }else error();
}

bool  pieza::movimiento(){
    pieza spieza=pieza(PIE);
    bool ver=true;
    //reglas de las piezas
    if(PIE==peon_n || PIE==peon_b) spieza.peon();
    else if(PIE==torre_n || PIE==torre_b) spieza.torre();
    else if(PIE==caballo_b || PIE==caballo_n) spieza.caballo();
    else if(PIE==alfil_n || PIE==alfil_b) spieza.alfil();
    else if(PIE==reyna_n || PIE==reyna_b) spieza.reyna();
    else if(PIE==rey_n || PIE==rey_b) spieza.rey();
    else{
        system("clear");
        cout<<"\t\x1b[5;37mPIEZA NO ENCONTRADA\n\tINTENTE NUEVAMENTE EN 3 SEG"<<cnormal;
        delay(3);
        ver=false;
    }
    return ver;
}

void copia_t(){
    for(int i=0;i<8;i++){
        for(int ii=0;ii<8;ii++){
            copia[ii][i]=tablero[ii][i];
        }
    }
}

bool comparar_t(){
    bool com;
    for(int i=0;i<8;i++){
        for(int ii=0;ii<8;ii++){
            if(copia[ii][i]==tablero[ii][i]){
                com=true;
            }else{
                com=false;
                ii=8+1;
                i=8+1;
            }
        }
    }
    return com;
}

void juego(){
    string avanzar;
    turno="TURNO DE BLANCAS ";
    table();
    bool verificacion;
    do{
        copia_t();
        do{
            system("clear");
            puntajes();
            mostrar();
            cout<<endl<<"ingrese la pieza a mover: ";
            cin>>avanzar;
            mover(avanzar,1);
            pieza PIEZA=pieza(tablero[mov[0]][mov[1]]);
            if(turno=="TURNO DE BLANCAS "){
                if(PIEZA.PIEZA()==rey_b || PIEZA.PIEZA()==reyna_b || PIEZA.PIEZA()==alfil_b || PIEZA.PIEZA()==caballo_b || PIEZA.PIEZA()==torre_b || PIEZA.PIEZA()==peon_b){
                    cout<<"ingrese a donde desea mover: ";
                    cin>>avanzar;
                    mover(avanzar,3);
                    PIEZA.movimiento();
                    puntajes();
                    mostrar();
                }else turno="TURNO DE BLANCAS ";
            }else if(turno==" TURNO DE NEGRAS "){
                if(PIEZA.PIEZA()==rey_n || PIEZA.PIEZA()==reyna_n || PIEZA.PIEZA()==alfil_n || PIEZA.PIEZA()==caballo_n || PIEZA.PIEZA()==torre_n || PIEZA.PIEZA()==peon_n){
                    cout<<"ingrese a donde desea mover: ";
                    cin>>avanzar;
                    mover(avanzar,3);
                    PIEZA.movimiento();
                    puntajes();
                    mostrar();
                }else turno=" TURNO DE NEGRAS ";
            }
            if(avanzar=="rendirse"){
                if(turno=="TURNO DE BLANCAS ") puntaje[0][1]=0;
                else puntaje[0][0]=0;
            }
            if(comparar_t()==true && avanzar!="rendirse"){
                verificacion=true;
                error();
            }else verificacion=false;
        }while(verificacion==true);
        if(turno=="TURNO DE BLANCAS ") turno=" TURNO DE NEGRAS ";
        else turno="TURNO DE BLANCAS ";
        if(puntaje[0][0]==0 || puntaje[0][1]==0){
            avanzar="rendirse";
        }
    }while(avanzar!="rendirse");
    system("clear");
    string ganador[5];
    if(puntaje[0][0]==1){
        ganador[0]="██████  ██    ██████  █████  ██   ██\n";
        ganador[1]="██  ██  ██    ██  ██  ██     ██  ██\n";
        ganador[2]="█████   ██    ██████  ██     ████\n";
        ganador[3]="██  ██  ██    ██  ██  ██     ██  ██\n";
        ganador[4]="██████  ████  ██  ██  █████  ██   ██\n";
    }
    else if(puntaje[0][1]==1){
        ganador[0]="██      ██  ██  ██  ██ ████████  █████\n";
        ganador[1]="██  ██  ██  ██  ██  ██    ██     ██   \n";
        ganador[2]="██  ██  ██  ██████  ██    ██     █████\n";
        ganador[3]="██  ██  ██  ██  ██  ██    ██     ██   \n";
        ganador[4]="██████████  ██  ██  ██    ██     █████\n";
    };
    cout<<"\x1b[5;37m";
    cout<<"██      ██  ██  ██   ██  "<<ganador[0];
    cout<<"██  ██  ██  ██  ████ ██  "<<ganador[1];
    cout<<"██  ██  ██  ██  ██ ████  "<<ganador[2];
    cout<<"██  ██  ██  ██  ██  ███  "<<ganador[3];
    cout<<"██████████  ██  ██   ██  "<<ganador[4];
    cout<<cnormal;
    delay(5);
    system("clear");
}

int main(){
    int seleccion;
    do{
        cout<<cnegro<<"\x1b[1;31m";
        cout<<"\t\t******   ****** *****  ****    ****    *****  ***** \n";
        cout<<"\t\t**  **     **   **     **  **  **  *   **        *  \n";
        cout<<"\t\t******     **   *****  **  **  ****    *****  ***** \n";
        cout<<"\t\t**  **  ** **   **     **  **  **  *   **      *    \n";
        cout<<"\t\t**  **  *****   *****  ****    **   *  *****  ***** \n"<<cnormal;
        cout<<"\t\t\t\t   1)jugar\n\t\t\t\t   2)ayuda\n\t\t\t\t   3)salir\n\t\t\t\t      ";
        cin>>seleccion;
        if(seleccion==1) juego();
    }while(seleccion==1);
    cout<<"\x1b[5;31m"<<"\t\t\t\tby::Metallica "<<cnormal<<endl;
    return 0;
}
mostfunkyduck commented 10 months ago

@chrisbra Just letting you know that I'm encountering this. It's not a huge deal to me, just wanted to let you know. I only need this on flat text files, so I only debugged this a little bit, but it looks like it conflicts with syntax highlighting on my machine for ANSI escapes only.

I ran this:

echo -e "\033[35mtest\033[0m" > test

I then opened it in neovim and ran :ColorHighlight and it worked. I then ran :setf sh and it stopped working. Same thing with setf java, so it's not just one language. It works fine with hex colors in the same file. I'm using neovim, this is the configuration as of right before I installed and tested this plugin (i'm heavily experimenting with neovim, so I hope you can excuse the sloppiness): https://github.com/mostfunkyduck/bootstrap/tree/30ea1536aba44e7ea30f6730b8277b7de9c967c0/.config/nvim

Cris-lml007 commented 10 months ago

I just saw that testing the colors ansi scape in a plain text file and if you recognize the colors, there seems to be a problem when it is detected that the file has a sparse extension, hopefully @chrisbra it can be solved.

chrisbra commented 10 months ago

I made a small refactor. Please ues :ColorHighlight! (note the ! attribute). Then it should work. For performance reasons, it's disabled for non-empty filetyptes

Cris-lml007 commented 10 months ago

if it works thanks for giving us a solution