C sharp - No sumar caracteres borrados en la cadena a mostrar

 
Vista:
sin imagen de perfil

No sumar caracteres borrados en la cadena a mostrar

Publicado por Vidal (2 intervenciones) el 08/06/2018 18:26:16
Hola amigos, tengo este programa, y el problema radica en que cuando ingreso

la palabra a adivinar, por ejemplo: "palabra" al momento de dibujar las lineas por cada letra me muestra una al principio que esta vacía y cuando ya adivine toda la palabra sigue el juego hasta que pierdo.

palabra -> palabra a aivinar

------- -> lo que deberia mostrar

-------- -> lo que muestra

Si alguno me podría ayudar de antemano gracias, cualquiera de los dos que sea mas fácil de complementar.
Gracias.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
string jugador_1, jugador_2;
string palabra;
char[] entrada = new char[15];
ConsoleKeyInfo pal;
int i = 0;
int j = 0, tl = 0;
string palabra2 = "", palabra3 = "";
string lp, le;
bool exito;
bool invalido = false;
int intento = 0;
int[] ganar = new int[10];
int[] perder = new int[10];
int p = 0;
int g = 0;
 
do
    {
        titulo_ahorcado();
 
        Console.WriteLine(" Ingrese el nombre del jugador 1 (Anfitrion)");
        jugador_1 = Console.ReadLine();
        Console.WriteLine(" Ingrese el nombre del jugador 2 (Adivinador)");
        jugador_2 = Console.ReadLine();
 
        Console.Clear();
 
        Console.WriteLine(" {0} Que Palabra va a ingresar", jugador_1);
        //aqui comenza a pedir la palabra 
        for (; ; )
        {
            i++;
            pal = Console.ReadKey(true);
 
            if(pal.Key == ConsoleKey.Enter)
            {
                break;
            }
            //esto ocurre cuando quiero borrar algo
            if (pal.Key == ConsoleKey.Backspace)
            {
                if (i > 0)
                {
                    Console.CursorLeft = Console.CursorLeft - 1;
                    Console.Write(" ");
                    Console.CursorLeft = Console.CursorLeft - 1;
                    entrada[i - 1] = '\0';
                    i = i - 2;
                }
            }
                //esto es para esconder la palabra
            else
            {
                entrada[i] = pal.KeyChar;
                Console.Write("*");
            }
 
 
        }
        //lo que se guardo en entrada[] se asgina a palabra
        palabra = new string(entrada);
 
        Console.WriteLine(palabra);
        tl = i-1;
        Console.WriteLine(tl);
        Console.ReadKey();
    //aqui valida que la palabra ingresada no contenga numeros
        foreach (char valido in palabra)
        {
 
            if (char.IsDigit(valido))
            {
                Console.Clear();
                Console.WriteLine(" La palabra no es valida");
                invalido = true;
            }
            else
            {
 
                invalido = false;
            }
        }
    } while (invalido == true);
 
palabra2 = palabra;
palabra2 = palabra2.ToUpper();
 
tl = i - 1;
 
Console.Clear();
 
tablero(intento);
//aqui es donde dibuja las lneas
Console.Write(" {0} La palabra tiene {1} letras\t\t[",jugador_2, tl);
for (j = 0; j <= tl; j++)
{
    if (palabra2.Substring(j, 1) != "  ")
    {
        palabra3 = palabra3 + "_";
    }
    else
    {
        Console.Write("{0}]", palabra3);
    }
}
 
Console.WriteLine(palabra3);
 
intento = 0;
 
do
{
    lp = "";
    le = "";
    exito = false;
 
    Console.Write(" {0} Introuzca una letra y presione enter: [   ]\b\b\b", jugador_2);
    lp = Console.ReadLine();
    lp = lp.ToUpper();
 
    for (j = 0; j <= tl; j++)
    {
        le = palabra2.Substring(j, 1);
        if (le.Equals(lp))
        {
            palabra3 = palabra3.Remove(j, 1);
            palabra3 = palabra3.Insert(j, lp);
            exito = true;
 
        }
 
    }
    if (exito)
    {
        Console.Clear();
        tablero(intento);
        Console.WriteLine(" ¡¡Correcto!! \t\t\t\t[{0}]", palabra3);
    }
    else
    {
        Console.Clear();
        intento++;
        Console.WriteLine(" Letra no existe lleva {0} intento ", intento);
        tablero(intento);
    }
    if (intento == 6)
    {
        Console.WriteLine("\t\t\t*************************\n");
        Console.WriteLine("\t\t\t¡¡¡   P E R D I S T E  !!!\n");
        Console.WriteLine("\t\t\t*************************");
        Console.WriteLine(" La palabra correcta era {0}", palabra2);
        p++;
        perder[p] = p;
    }
    if (palabra2 == palabra3)
    {
        Console.WriteLine("Felicidades {0}, ganaste", jugador_2);
        g++;
        ganar[g] = g;
        break;
    }
 
} while (intento < 6);

En este otro programa que es casi el mismo de arriba, el problema es que cuando ingreso la palabra SIN BORRAR todo bien pero cuando borro algo, lo que borre se suma a la palabra que se va a adivinar
Ejemplo: ingreso la palabra -> "PALABRS" y borro la 'S' y pongo la 'A' y cuando comenza el juego la palabra que tendré que adivinar sera -> "PALABRSA"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Console.WriteLine(" {0} Que Palabra va a ingresar", jugador_1);
//aqui leo letra por letra que palabra se va a adivinar pero sin arreglos como arriba
for (; ; )
{
    pal = Console.ReadKey(true);
 
    if(pal.Key == ConsoleKey.Enter)
    {
        break;
    }
    if (pal.Key == ConsoleKey.Backspace)
    {
        Console.CursorLeft = Console.CursorLeft - 1;
        Console.Write(" ");
        Console.CursorLeft = Console.CursorLeft - 1;
    }
    else if(pal.Key != ConsoleKey.Backspace)
    {
        palabra = palabra + pal.KeyChar;
        Console.Write("*");
    }
 
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder