Programa Mente Maestra

Hola, he estado intentando programar el juego de Mente Maestra pero no me deja terminar a pesar de que no me marca errores de inicio... alguien me podría ayudar?

Scanner entrada=new Scanner (System.in);
int dado,i,x,NumExactos=0,NumPresentes=0,usuariocol;
String maquina="",coloresusuario="",dos="",tres="",cuatro="",resultado="",uno="";
System.out.println("Juego Mental es un juego de destreza y de habilidad en el que la mente deberá dar todo de sí para cumplir con el objetivo.");
System.out.println("La maquina elegirá cuatro colores de entre Rojo[1], Verde[2], Azul[3], Blanco[4], Morado[5] o Negro[6] al azar. Estos colores podrán ser repetidos o no, en un determinado orden.\n" +
"El objetivo consiste en que el jugador debera acertar los colores en el orden exacto, si el primer color que eligio la máquina coincide con el primero del jugador, se mostrara un 1, si no coincide, pero el color del jugador está presente en uno de los tres colores restantes de la maquina, se mostrara un 0. Si nada de esto sucede, nada será mostrado.\n" +
"Así sucesivamente con el resto de colores.\n" +
"\n" +
"Por ejemplo,si la máquina eligió “N V A A”, y el usuario: “R R A N”, se mostrara: “1 0”, el 1 por la A que coincide, y el 0 por la N que está presente en la combinacion de la maquina.\n" +
"\n" +
"Otros ejemplos:\n" +
"\n" +
"La maquina elige “R R N V”:\n" +
"\n" +
"Usuario: Resultado: Significado:\n" +
"V N A R 0 0 0 Tres colores estan y uno no.\n" +
"R N A R 1 0 0 Uno coincide, dos estan y uno no.\n" +
"R A N N 1 1 Dos coinciden, dos no estan.\n" +
"R V N R 1 1 0 0 Dos coinciden, dos estan.\n" +
"R R N V 1 1 1 1 Los cuatro colores coinciden.");
System.out.println(".");
System.out.println(".");
System.out.println(".");
System.out.println(".");
System.out.println(".");
System.out.println("Si estás listo, presiona 1");
x=entrada.nextInt();
if(x==1){
for(i=0;i<4;i++){
dado=(int) Math.floor(Math.random()*4);
if(dado==1){
maquina="R";
}
if(dado==2){
maquina="V";

}
if(dado==3){
maquina="A";
}
if(dado==4){
maquina="B";
}
if(dado==5){
maquina="M";

}
if(dado==6){
maquina="N";
}
}
do{
for(i=0;i<12;i++){
System.out.println("Elija sus 4 colores escribiendo el número que representan:Rojo[1], Verde[2], Azul[3], Blanco[4], Morado[5] o Negro[6] ");
for(i=0;i<4;i++){
usuariocol=entrada.nextInt();
usuariocol++;
coloresusuario=coloresusuario+usuariocol;
}
if (maquina.charAt(0) == coloresusuario.charAt(0)){
uno = "1";
}
if (maquina.charAt(0) == coloresusuario.charAt(1)){
dos = "0";
}
if (maquina.charAt(0) == coloresusuario.charAt(2)){
tres = "0";
}
if (maquina.charAt(0) == coloresusuario.charAt(3)){
cuatro = "0";
}
if (maquina.charAt(1) == coloresusuario.charAt(1)){
dos = "1";
}
if (maquina.charAt(1) == coloresusuario.charAt(0)){
if(!"1".equals(uno)){
uno = "0";
}
}
if (maquina.charAt(1) == coloresusuario.charAt(2)){
if(!"1".equals(tres)){
tres = "0";
}
}
if (maquina.charAt(1) == coloresusuario.charAt(3)){
if(!"1".equals(cuatro)){
cuatro = "0";
}
}
if (maquina.charAt(2) == coloresusuario.charAt(2)){
tres = "1";
}
if (maquina.charAt(2) == coloresusuario.charAt(0)){
if(!"1".equals(uno)){
uno = "0";
}
}
if (maquina.charAt(2) == coloresusuario.charAt(1)){
if(!"1".equals(dos)){
dos = "0";
}
}
if (maquina.charAt(2) == coloresusuario.charAt(3)){
if(!"1".equals(cuatro)){
cuatro = "0";
}
}
if (maquina.charAt(3) == coloresusuario.charAt(3)){
cuatro = "1";
}
if (maquina.charAt(3) == coloresusuario.charAt(0)){
if(!"1".equals(uno)){
uno = "0";
}
}
if (maquina.charAt(3) == coloresusuario.charAt(1)){
if(!"1".equals(dos)){
dos = "0";
}
}
if (maquina.charAt(3) == coloresusuario.charAt(2)){
if(!"1".equals(tres)){
tres = "0";
}
}
if (uno.equals(Integer.toString(1))){
resultado = resultado + uno;
}
if (dos.equals(Integer.toString(1))){
resultado = resultado + dos;
}
if (tres.equals(Integer.toString(1))){
resultado = resultado + tres;
}
if (cuatro.equals(Integer.toString(1))){
resultado = resultado + cuatro;
}
if (uno.equals(Integer.toString(0))){
resultado = resultado + uno;
}
if (dos.equals(Integer.toString(0))){
resultado = resultado + dos;
}
if (tres.equals(Integer.toString(0))){
resultado = resultado + tres;
}
if (cuatro.equals(Integer.toString(0))){
resultado = resultado + cuatro;
}
for (i=0;i<4;i++){
if (resultado.equals("1")){
NumExactos++;}
if (resultado.equals("0")){
NumPresentes++;
}
}
}
}
while(!maquina.equals(coloresusuario));
if (maquina.equals(coloresusuario)){
System.out.println("Enhorabuena, ha ganado!!!\n\nLa maquina eligio: " + maquina + "\nY usted: " + coloresusuario);
}
else {
System.out.println("Pruebe de nuevo, su combinacion de colores no es exacta a la de la maquina:\n\nRecuerde, en esta ronda escribio la combinacion: \"" + coloresusuario + "\" con " + NumExactos + " colores que coinciden con los de la maquina y " + NumPresentes + " presentes.");
}
}
else{
System.out.println("Adios");
}
}
}