1 00:00:03,250 --> 00:00:31,710 Vale, nos vamos a la pestaña diseño, que mal se me ve aquí todo, así mejor, vale, y ahora ya, vamos a trabajar solamente con un panel, el panel por defecto, pues este mismo, botón para arrancar el juego, pues venga, nos vamos a componentes, botón para arrancar, bueno, primero que no se nos olvide en el panel ponerle como gestor de ubicación absoluto. 2 00:00:31,710 --> 00:00:35,229 si tú quieres colocar 3 00:00:35,229 --> 00:00:37,009 los componentes donde te dé la gana 4 00:00:37,009 --> 00:00:38,469 y darles el tamaño que tú quieras, sí 5 00:00:38,469 --> 00:00:40,890 porque si pones otro gestor de ubicación 6 00:00:40,890 --> 00:00:42,289 imagínate que pones el de grid 7 00:00:42,289 --> 00:00:44,770 te va a obligar 8 00:00:44,770 --> 00:00:47,109 a colocarlos en una 9 00:00:47,109 --> 00:00:49,130 posición de rejilla, no te va a dejar en cualquier 10 00:00:49,130 --> 00:00:49,789 sitio, ves 11 00:00:49,789 --> 00:00:53,250 te obliga aquí porque es la primera posición de la rejilla 12 00:00:53,250 --> 00:00:54,250 entonces tú no quieres ahí 13 00:00:54,250 --> 00:00:57,329 entonces, absoluto 14 00:00:57,329 --> 00:00:59,189 vale, pues entonces 15 00:00:59,189 --> 00:01:01,310 como ya lo tenemos absoluto, queremos colocarlo a mano 16 00:01:01,310 --> 00:01:03,369 venga, botoncito de jugar, pues el botoncito 17 00:01:03,369 --> 00:01:03,990 de jugar 18 00:01:03,990 --> 00:01:05,909 en medio 19 00:01:05,909 --> 00:01:09,269 vale 20 00:01:09,269 --> 00:01:13,430 el nombre de variable que le ha dado es feísimo 21 00:01:13,430 --> 00:01:14,849 como veis a la izquierda 22 00:01:14,849 --> 00:01:16,890 le ha dado como nombre de variable 23 00:01:16,890 --> 00:01:18,829 btn new button, no nos gusta nada 24 00:01:18,829 --> 00:01:20,170 vamos a cambiárselo a 25 00:01:20,170 --> 00:01:22,530 botón jugar, por ejemplo 26 00:01:22,530 --> 00:01:27,069 y el texto que ha puesto arriba 27 00:01:27,069 --> 00:01:28,450 por defecto tampoco nos gusta 28 00:01:28,450 --> 00:01:31,170 pues vamos a cambiárselo aquí en propiedades 29 00:01:31,170 --> 00:01:33,590 a jugar 30 00:01:33,590 --> 00:01:39,299 bueno, pues este es el botón de jugar 31 00:01:39,299 --> 00:01:41,359 que no nos gusta el tipo de letra 32 00:01:41,359 --> 00:01:42,379 no nos gusta el borde 33 00:01:42,379 --> 00:01:45,260 pues se lo cambiaríamos 34 00:01:45,260 --> 00:01:47,219 vale 35 00:01:47,219 --> 00:01:49,079 ¿qué más tiene que tener esto? 36 00:01:51,079 --> 00:01:53,480 pues cuando se dé a jugar, cambiará jugando 37 00:01:53,480 --> 00:01:55,219 ahí no aparecerá, pero nos tiene que dar 38 00:01:55,219 --> 00:01:57,239 la opción de meter el número 39 00:01:57,239 --> 00:01:59,219 para adivinarlo, pues el número para 40 00:01:59,219 --> 00:02:00,760 adivinarlo en un área de texto 41 00:02:00,760 --> 00:02:10,379 Pues venga, en un área de texto, el número para adivinar 42 00:02:10,379 --> 00:02:14,120 Entonces vamos a ponerle una etiqueta para que sepa que ahí tiene que meter el número 43 00:02:14,120 --> 00:02:19,639 Y a esta etiqueta le ponemos el texto 44 00:02:19,639 --> 00:02:26,629 Introduzca número 45 00:02:26,629 --> 00:02:36,770 Introduzca número 46 00:02:36,770 --> 00:02:43,949 A ver, se me ha colado una 47 00:02:43,949 --> 00:02:56,419 No me deja ir a la derecha para cambiar eso 48 00:02:56,419 --> 00:02:58,520 Ahí, introduzcan 49 00:02:58,520 --> 00:03:02,419 Vale, ya está 50 00:03:02,419 --> 00:03:07,919 Entonces el usuario irá metiendo numeritos aquí 51 00:03:07,919 --> 00:03:09,479 Cuando acierte 52 00:03:09,479 --> 00:03:11,379 De alguna manera le tienen que avisar 53 00:03:11,379 --> 00:03:13,620 Entonces, en principio 54 00:03:13,620 --> 00:03:16,060 Con lo que hemos visto, pues pondríamos una etiqueta 55 00:03:16,060 --> 00:03:17,719 Para que avisara, has acertado 56 00:03:17,719 --> 00:03:19,780 Pero en lugar de con una etiqueta 57 00:03:19,780 --> 00:03:20,979 Lo vamos a hacer con 58 00:03:20,979 --> 00:03:23,699 Con una ventanita emergente 59 00:03:23,699 --> 00:03:25,120 Que quede más bonito, has terminado 60 00:03:25,120 --> 00:03:27,419 Entonces no ponemos la etiqueta 61 00:03:27,419 --> 00:03:29,500 ¿cómo haremos la ventana emergente? 62 00:03:29,580 --> 00:03:31,479 pues la ventana emergente no es un componente 63 00:03:31,479 --> 00:03:33,580 que se meta aquí, porque la ventana emergente 64 00:03:33,580 --> 00:03:34,780 es algo que se va a abrir 65 00:03:34,780 --> 00:03:36,919 solamente en un momento concreto 66 00:03:36,919 --> 00:03:38,280 ¿es más fácil que esa parte? 67 00:03:39,080 --> 00:03:40,800 no, es más fácil que eso 68 00:03:40,800 --> 00:03:43,039 la posibilidad de abrir una, no, porque 69 00:03:43,039 --> 00:03:45,099 si es otro JFrame estaría 70 00:03:45,099 --> 00:03:47,460 o sea, la aplicación tiene un único 71 00:03:47,460 --> 00:03:49,300 JFrame y a ese se asocia todo lo demás 72 00:03:49,300 --> 00:03:51,419 entonces, se le puede asociar una ventana 73 00:03:51,419 --> 00:03:53,460 emergente, no todas las ventanas tienen que ser 74 00:03:53,460 --> 00:03:55,319 frame, pueden estar, puede ser 75 00:03:55,319 --> 00:03:57,539 un jdialog, un j no sé qué, que están asociados 76 00:03:57,539 --> 00:03:59,280 a ese frame, pero lo que pasa es que 77 00:03:59,280 --> 00:04:01,560 nosotros queremos que aparezca 78 00:04:01,560 --> 00:04:03,680 solo en un momento concreto 79 00:04:03,680 --> 00:04:05,360 que es cuando ha acertado 80 00:04:05,360 --> 00:04:06,819 cuando se verifica que ha acertado 81 00:04:06,819 --> 00:04:11,479 se podría poner una ventana que esté siempre ahí 82 00:04:11,479 --> 00:04:12,539 se haga visible y no, pero 83 00:04:12,539 --> 00:04:14,939 hay una forma sencilla de hacerlo, que es 84 00:04:14,939 --> 00:04:17,459 en el momento en el que se verifique la condición 85 00:04:17,459 --> 00:04:19,319 de acierto, se instancia la 86 00:04:19,319 --> 00:04:20,560 ventana y ya está 87 00:04:20,560 --> 00:04:23,779 entonces como lo vamos a hacer así, que es más sencillo 88 00:04:23,779 --> 00:04:25,300 pues aquí ya no hay más componentes que poner 89 00:04:25,319 --> 00:04:28,100 ¿Vale? Entonces como no hay más componentes que poner 90 00:04:28,100 --> 00:04:30,160 Pues se ha quedado así solamente 91 00:04:30,160 --> 00:04:31,980 Jugar, se pondrá jugando 92 00:04:31,980 --> 00:04:34,040 Introduzca número, enter, enter, enter 93 00:04:34,040 --> 00:04:36,519 Y nos irá diciendo 94 00:04:36,519 --> 00:04:37,680 Si no, si no 95 00:04:37,680 --> 00:04:39,160 Y cuando se ha acertado, pues avisa 96 00:04:39,160 --> 00:04:42,100 ¡Hala! Como ya no vamos a poner más en la interfaz gráfica 97 00:04:43,360 --> 00:04:44,120 Pues 98 00:04:44,120 --> 00:04:46,019 Ahora ya vamos a hacer el 99 00:04:46,019 --> 00:04:46,699 Comportamiento 100 00:04:46,699 --> 00:04:49,720 ¿Qué necesita 101 00:04:49,720 --> 00:04:51,800 Tener respuesta? 102 00:04:52,480 --> 00:04:53,779 El hacer clic al botón jugar 103 00:04:53,779 --> 00:04:55,680 necesita respuesta, porque cuando hagamos clic 104 00:04:55,680 --> 00:04:58,139 al botón jugar, se tiene que crear 105 00:04:58,139 --> 00:04:59,899 un número aleatorio y además 106 00:04:59,899 --> 00:05:01,379 tiene que cambiar el texto del botón 107 00:05:01,379 --> 00:05:07,339 por ejemplo 108 00:05:07,339 --> 00:05:09,500 se puede poner este 109 00:05:09,500 --> 00:05:11,240 set visible aquí 110 00:05:11,240 --> 00:05:16,019 esto que esté en 111 00:05:16,019 --> 00:05:17,920 false y esta 112 00:05:17,920 --> 00:05:18,579 también 113 00:05:18,579 --> 00:05:20,779 que esté en false 114 00:05:20,779 --> 00:05:23,899 entonces se le habilite, se le haga visible 115 00:05:23,899 --> 00:05:25,040 después de haber dado a jugar 116 00:05:25,040 --> 00:05:27,540 entonces inicialmente esta interfaz 117 00:05:27,540 --> 00:05:29,860 bueno, no, la ha puesto 118 00:05:29,860 --> 00:05:30,819 habilitada, no visible 119 00:05:30,819 --> 00:05:33,620 pero bueno, lo podemos dejar así, para que vea el usuario 120 00:05:33,620 --> 00:05:35,480 que está inhabilitada, que no puede introducir número 121 00:05:35,480 --> 00:05:36,519 hasta que no estemos jugando 122 00:05:36,519 --> 00:05:39,579 vale, entonces esto 123 00:05:39,579 --> 00:05:41,720 efectivamente si nos vamos a la pestaña 124 00:05:41,720 --> 00:05:42,259 de fuente 125 00:05:42,259 --> 00:05:45,720 pues aquí al text fill le ha puesto 126 00:05:45,720 --> 00:05:46,240 un 127 00:05:46,240 --> 00:05:47,959 false 128 00:05:47,959 --> 00:05:50,800 entonces no tenemos que buscar el método 129 00:05:50,800 --> 00:05:52,439 que tampoco sería tan complicado 130 00:05:52,439 --> 00:05:53,240 buscar el método 131 00:05:53,240 --> 00:05:55,759 ya con el window builder lo tenemos más fácil 132 00:05:55,759 --> 00:05:58,360 nos viene aquí esto 133 00:05:58,360 --> 00:05:59,920 a recordar que el nombre de variable 134 00:05:59,920 --> 00:06:02,060 de este campo de texto es muy feo 135 00:06:02,060 --> 00:06:03,839 en este caso que es una aplicación tan pequeña 136 00:06:03,839 --> 00:06:04,639 pues no importa 137 00:06:04,639 --> 00:06:07,180 pero en una aplicación más grande sería un rollo 138 00:06:07,180 --> 00:06:08,459 entonces se lo podemos cambiar 139 00:06:08,459 --> 00:06:10,519 y en lugar de que se llame text field 140 00:06:10,519 --> 00:06:11,959 eso 141 00:06:11,959 --> 00:06:16,000 número, es el campo para meter el número 142 00:06:16,000 --> 00:06:18,019 Número del usuario, ya está 143 00:06:18,019 --> 00:06:20,240 Número usuario, yo que sé 144 00:06:20,240 --> 00:06:22,180 Lo que fuera, vale 145 00:06:22,180 --> 00:06:24,839 Bueno, pues entonces 146 00:06:24,839 --> 00:06:26,199 Evento del botón 147 00:06:26,199 --> 00:06:28,639 El botón, ¿cómo va a responder? 148 00:06:29,399 --> 00:06:30,519 Generando el número aleatorio 149 00:06:30,519 --> 00:06:32,420 Cambiando el texto a jugando 150 00:06:32,420 --> 00:06:35,279 Y habilitando estas dos cosas 151 00:06:35,279 --> 00:06:36,879 Para que ya sean accesibles 152 00:06:36,879 --> 00:06:39,000 Pues ahora ya que tenemos claro 153 00:06:39,000 --> 00:06:40,740 Lo que tiene que tener que jugar, solamente eso 154 00:06:40,740 --> 00:06:44,620 Pues venga, vamos a hacerle un 155 00:06:44,620 --> 00:06:46,180 añadirle un 156 00:06:46,180 --> 00:06:47,279 even handler 157 00:06:47,279 --> 00:07:08,259 es que 158 00:07:08,259 --> 00:07:09,860 igual está más abajo 159 00:07:09,860 --> 00:07:10,699 y como tengo el 160 00:07:10,699 --> 00:07:12,180 claro 161 00:07:12,180 --> 00:07:16,769 no es que 162 00:07:16,769 --> 00:07:18,269 donde está el even handler 163 00:07:18,269 --> 00:07:18,949 aquí 164 00:07:18,949 --> 00:07:23,509 que no, que no es 165 00:07:23,509 --> 00:07:26,430 Mira, sí, claro 166 00:07:26,430 --> 00:07:27,509 Pero yo es que lo quiero para el botón 167 00:07:27,509 --> 00:07:29,990 ¿Por qué no me sale para el botón at even hander? 168 00:07:30,110 --> 00:07:30,490 ¿En select? 169 00:07:32,170 --> 00:07:33,610 Que es que me tendría que salir 170 00:07:33,610 --> 00:07:34,949 De aquí directamente 171 00:07:34,949 --> 00:07:38,250 ¿Por qué no es un botón y ya por eso lo has aplicado? 172 00:07:38,850 --> 00:07:39,569 No, es que 173 00:07:39,569 --> 00:07:41,569 Pero si normalmente sale 174 00:07:41,569 --> 00:07:44,329 Claro, de toda la vida ha salido 175 00:07:44,329 --> 00:07:45,149 ¿Por qué no me sale? 176 00:07:46,009 --> 00:07:46,829 Está desconocido 177 00:07:46,829 --> 00:07:48,569 Está desconocido 178 00:07:48,569 --> 00:07:51,649 A lo mejor es por eso 179 00:07:51,649 --> 00:07:53,350 Porque está desconocido 180 00:07:53,350 --> 00:07:54,509 ¿Y por qué está desconocido? 181 00:07:56,410 --> 00:07:56,850 No sé 182 00:07:56,850 --> 00:08:00,990 ¿Por qué no sale? 183 00:08:02,990 --> 00:08:04,069 Lo tengo guardado 184 00:08:04,069 --> 00:08:06,610 Qué raro 185 00:08:06,610 --> 00:08:09,350 Si me salen todos los... 186 00:08:10,209 --> 00:08:11,430 A ver, no pasa nada 187 00:08:11,430 --> 00:08:13,110 Lo hacemos a mano y ya ves tú qué problema 188 00:08:13,110 --> 00:08:15,129 Pero no pasa nada 189 00:08:15,129 --> 00:08:15,930 Vamos a hacerlo a mano 190 00:08:15,930 --> 00:08:18,490 A ver, vámonos al botón 191 00:08:18,490 --> 00:08:20,170 Venga 192 00:08:20,790 --> 00:08:21,750 Botón jugar 193 00:08:21,750 --> 00:08:24,149 setEnableTrue 194 00:08:24,149 --> 00:08:25,629 que es por defecto la 195 00:08:25,629 --> 00:08:27,949 y vamos a añadirle el listener 196 00:08:27,949 --> 00:08:30,410 pues venga, a mi botón 197 00:08:30,410 --> 00:08:32,289 jugar le vamos a añadir 198 00:08:32,289 --> 00:08:34,110 una actionListener 199 00:08:34,110 --> 00:08:36,509 que sea una nueva instancia 200 00:08:36,509 --> 00:08:38,950 de este 201 00:08:38,950 --> 00:08:42,129 una nueva instancia de este 202 00:08:42,129 --> 00:08:44,370 entonces si va a ser una nueva instancia 203 00:08:44,370 --> 00:08:46,230 de actionListener pues tenemos que 204 00:08:46,230 --> 00:08:48,730 primero 205 00:08:48,730 --> 00:09:15,350 Pero, new action, eh, pero espérate, aquí está pasando algo un poco raro, jbutton value, java x swing, espera, se lo voy a poner a mano a ver si se calla, public void, 206 00:09:15,350 --> 00:09:33,149 Están pasando cosas extrañas 207 00:09:33,149 --> 00:09:34,809 Bueno, espera 208 00:09:34,809 --> 00:09:36,450 Espera, voy a importar a 209 00:09:36,450 --> 00:09:39,850 Ah, ya sé lo que me está pasando 210 00:09:39,850 --> 00:09:40,769 Eh 211 00:09:40,769 --> 00:09:47,470 No, a ver 212 00:09:47,470 --> 00:09:49,590 Esto, yo creo que me está pasando 213 00:09:49,590 --> 00:09:50,809 Por como he hecho el proyecto 214 00:09:50,809 --> 00:09:52,110 Porque como, vale 215 00:09:52,110 --> 00:10:01,570 Es que, acción lisa 216 00:10:01,570 --> 00:10:05,759 vale, entonces ahora ya me deja 217 00:10:05,759 --> 00:10:07,440 importar 218 00:10:07,440 --> 00:10:09,159 y ahora, acción 219 00:10:09,159 --> 00:10:13,940 más simplemente dije acción performance 220 00:10:13,940 --> 00:10:15,039 acción event 221 00:10:15,039 --> 00:10:17,279 public void, acción performance 222 00:10:17,279 --> 00:10:18,639 acción event, vale 223 00:10:18,639 --> 00:10:20,059 entonces 224 00:10:20,059 --> 00:10:24,100 yo juraría que lo he escrito igual 225 00:10:24,100 --> 00:10:24,960 pero bueno 226 00:10:24,960 --> 00:10:28,000 vale, ya está 227 00:10:28,000 --> 00:10:29,720 bueno, me obliga a hacer la mano 228 00:10:29,720 --> 00:10:30,759 pero 229 00:10:30,759 --> 00:10:34,500 enseñanza 230 00:10:34,500 --> 00:10:38,480 muchas veces 231 00:10:38,480 --> 00:10:41,100 entonces, no confiemos siempre 232 00:10:41,100 --> 00:10:42,840 en que, ah, implementame 233 00:10:42,840 --> 00:10:44,919 el método, no sé qué, importame, no, tenemos 234 00:10:44,919 --> 00:10:46,820 que saber dónde hacer las cosas 235 00:10:46,820 --> 00:10:49,159 bueno, pues nada, lo hemos añadido 236 00:10:49,159 --> 00:10:51,240 mucho a la clase, he tenido que hacer el import 237 00:10:51,240 --> 00:10:53,059 a mano, del ActionListener 238 00:10:53,059 --> 00:10:55,000 y ya está 239 00:10:55,000 --> 00:10:56,320 vale 240 00:10:56,320 --> 00:10:58,100 eh? 241 00:11:02,070 --> 00:11:05,409 Vale, pues entonces, ¿qué necesitábamos hacer en el botón? 242 00:11:05,990 --> 00:11:09,129 Ahora vamos a ver por curiosidad, a ver si aquí me apetece. 243 00:11:10,110 --> 00:11:11,190 Fijaos que listo. 244 00:11:11,610 --> 00:11:20,509 Ahora ya sí me aparece, ahora ya sí me aparece la Diven Handler y me aparece que aquí he añadido yo uno en la línea 55, que es este. 245 00:11:22,470 --> 00:11:24,429 No sé por qué antes no me aparecía, pero no pasa nada. 246 00:11:24,529 --> 00:11:25,389 Lo importante es que nosotros lo sabemos. 247 00:11:28,690 --> 00:11:30,850 Sí, tendría igual algo que ver con eso. 248 00:11:30,850 --> 00:11:34,230 Conclusión, menos mal que sabemos hacer las cosas 249 00:11:34,230 --> 00:11:41,110 ¿Seguro? A ver, dímela 250 00:11:41,110 --> 00:11:44,830 Bueno 251 00:11:44,830 --> 00:11:48,730 Vale, pues a ver, vámonos a lo que acabamos de hacer 252 00:11:48,730 --> 00:11:50,870 Ahora, ¿qué queríamos hacer aquí? 253 00:11:51,909 --> 00:11:54,610 Queríamos, primero, generar un número aleatorio 254 00:11:54,610 --> 00:11:57,929 Entonces, uno hace aquí 255 00:11:57,929 --> 00:11:59,490 Aleatorio 256 00:11:59,490 --> 00:12:03,139 Vale 257 00:12:03,139 --> 00:12:06,059 Para que el juego no nos estemos mil horas con él 258 00:12:06,059 --> 00:12:08,019 Vamos a 259 00:12:08,019 --> 00:12:09,740 Hacer un número aleatorio entre 1 y 10 260 00:12:09,740 --> 00:12:10,519 Solo, ¿verdad? 261 00:12:15,090 --> 00:12:15,529 ¿No? 262 00:12:15,669 --> 00:12:17,490 ¿Os parece un aleatorio entre 1 y 10? 263 00:12:18,669 --> 00:12:19,830 Sí, sería random 264 00:12:19,830 --> 00:12:21,750 Es que lo confundo con 265 00:12:21,750 --> 00:12:24,070 Con otros lenguajes 266 00:12:24,070 --> 00:12:25,190 Que esto lo cambia cada vez 267 00:12:25,190 --> 00:12:28,570 ¿Eh? 268 00:12:30,649 --> 00:12:32,389 Sí, para que esté entre 1 y 10 269 00:12:32,389 --> 00:12:34,690 ¿Vale? Entonces va a generar uno entre 1 y 10 270 00:12:34,690 --> 00:12:37,070 Si lo pones dentro del paréntesis de math random 271 00:12:37,070 --> 00:12:39,269 En plan, si pones 272 00:12:39,269 --> 00:12:40,509 El int 273 00:12:40,509 --> 00:12:42,490 No, no, dentro del math random del paréntesis 274 00:12:42,490 --> 00:12:44,210 Creo que ahí te deja meter el argumento 275 00:12:44,210 --> 00:12:44,870 ¿Sí? 276 00:12:44,870 --> 00:12:45,649 ¿Puede ser? 277 00:12:47,730 --> 00:12:49,169 Yo pensaba que lo ibas a entrar 278 00:12:49,169 --> 00:12:51,230 Igual hay otro método 279 00:12:51,230 --> 00:12:51,889 Pero no el random 280 00:12:51,889 --> 00:12:54,129 ¿Puedo ir aquí adentro? 281 00:12:54,429 --> 00:12:54,990 A lo mejor 282 00:12:54,990 --> 00:12:58,570 Pues 283 00:12:58,570 --> 00:13:02,210 El método random 284 00:13:02,210 --> 00:13:04,149 para math no se aplica para el argumento entero 285 00:13:04,149 --> 00:13:05,769 entre 0 y 286 00:13:05,769 --> 00:13:08,470 no, pero a ver, lo que me está diciendo es que el método random 287 00:13:08,470 --> 00:13:10,769 no aplica 288 00:13:10,769 --> 00:13:11,669 para el argumento entero 289 00:13:11,669 --> 00:13:14,370 pero a ver, que math tiene muchos más métodos para generar 290 00:13:14,370 --> 00:13:16,230 cosas aleatorias, igual tiene uno 291 00:13:16,230 --> 00:13:17,909 que si 292 00:13:17,909 --> 00:13:18,970 no lo sé 293 00:13:18,970 --> 00:13:21,649 bueno 294 00:13:21,649 --> 00:13:24,549 pero como le va a dejar, que no le puede dejar 295 00:13:24,549 --> 00:13:25,110 es imposible 296 00:13:25,110 --> 00:13:28,149 vale, entonces 297 00:13:28,149 --> 00:13:30,409 ¿qué más cosas había que hacer? poner el texto 298 00:13:30,409 --> 00:13:32,590 del botón a jugando, bueno pues el botón 299 00:13:32,590 --> 00:13:34,330 menos mal que le hemos puesto 300 00:13:34,330 --> 00:13:36,049 ya un nombre que entendemos 301 00:13:36,049 --> 00:13:37,009 con lo cual podemos 302 00:13:37,009 --> 00:13:41,549 jugando 303 00:13:41,549 --> 00:13:44,409 y estaría bien 304 00:13:44,409 --> 00:13:46,490 a este botón 305 00:13:46,490 --> 00:13:48,029 ahora ponerle en enable 306 00:13:48,029 --> 00:13:49,909 da false, porque a este botón 307 00:13:49,909 --> 00:13:52,210 no le queremos, el usuario ya no le tiene 308 00:13:52,210 --> 00:13:53,669 que dar más mientras se está jugando 309 00:13:53,669 --> 00:13:55,889 entonces pues aquí a lo mejor 310 00:13:55,889 --> 00:13:57,389 tendría sentido hacer 311 00:13:57,389 --> 00:14:02,309 Pues si quiere dejar de jugar 312 00:14:02,309 --> 00:14:04,549 Entonces el juego te lo tendrían que haber explicado de la manera 313 00:14:04,549 --> 00:14:06,309 Se hace otro botón de 314 00:14:06,309 --> 00:14:07,850 Me voy o lo que sea 315 00:14:07,850 --> 00:14:11,669 Vale, a jugando 316 00:14:11,669 --> 00:14:14,269 False y se habilitan los otros 317 00:14:14,269 --> 00:14:15,889 Componentes que estaban deshabilitados 318 00:14:15,889 --> 00:14:18,230 Que eran la etiqueta, que a la etiqueta no la habíamos 319 00:14:18,230 --> 00:14:18,909 Cambiado el nombre 320 00:14:18,909 --> 00:14:22,269 La etiqueta, veis aquí 321 00:14:22,269 --> 00:14:23,549 El botón 322 00:14:23,549 --> 00:14:26,269 Está local al método, no está como propiedad 323 00:14:26,269 --> 00:14:27,330 De la clase frame 324 00:14:27,330 --> 00:14:29,769 está local, pero 325 00:14:29,769 --> 00:14:31,889 al ser clase anónima y estar 326 00:14:31,889 --> 00:14:33,409 aquí dentro, tiene acceso 327 00:14:33,409 --> 00:14:34,950 porque la clase anónima 328 00:14:34,950 --> 00:14:38,169 tiene como ventaja, como truquito 329 00:14:38,169 --> 00:14:39,769 que está dentro del método 330 00:14:39,769 --> 00:14:41,789 la clase interna nunca puede estar dentro 331 00:14:41,789 --> 00:14:44,129 de un método, la clase interna está dentro de una clase 332 00:14:44,129 --> 00:14:45,970 entonces al estar dentro de una clase 333 00:14:45,970 --> 00:14:47,990 solamente puede acceder a las variables de la clase 334 00:14:47,990 --> 00:14:49,669 pero la clase anónima 335 00:14:49,669 --> 00:14:51,769 está dentro de un método, entonces puede 336 00:14:51,769 --> 00:14:53,029 acceder a lo que está en el método 337 00:14:53,029 --> 00:14:55,909 y botón jugar es accesible 338 00:14:55,909 --> 00:14:56,570 desde aquí 339 00:14:56,570 --> 00:14:58,889 no hemos tenido que sacarlo fuera 340 00:14:58,889 --> 00:15:02,200 vale, que lo podríamos haber sacado 341 00:15:02,200 --> 00:15:03,960 pero no ha hecho falta 342 00:15:03,960 --> 00:15:06,139 vale, la etiqueta del texto 343 00:15:06,139 --> 00:15:08,120 para habilitarla, pues la etiqueta 344 00:15:08,120 --> 00:15:09,740 del texto se llama 345 00:15:09,740 --> 00:15:12,320 un nombre raro 346 00:15:12,320 --> 00:15:13,480 porque no se lo hemos cambiado 347 00:15:13,480 --> 00:15:15,120 ¿dónde está la etiqueta? 348 00:15:16,179 --> 00:15:18,220 la etiqueta no se puede llamar text field 349 00:15:18,220 --> 00:15:19,340 se llamará, es esta 350 00:15:19,340 --> 00:15:21,159 label blue new label 351 00:15:21,159 --> 00:15:23,539 pero claro, esta etiqueta 352 00:15:23,539 --> 00:15:25,860 sí que está después 353 00:15:25,860 --> 00:15:27,460 entonces esta no la va a reconocer 354 00:15:27,460 --> 00:15:27,919 ¿veis? 355 00:15:29,200 --> 00:15:29,940 la etiqueta 356 00:15:29,940 --> 00:15:32,299 el window builder 357 00:15:32,299 --> 00:15:35,080 te la ha metido aquí después del botón 358 00:15:35,080 --> 00:15:37,139 con lo cual si yo me hago este action list 359 00:15:37,139 --> 00:15:38,580 como clase interna aquí dentro 360 00:15:38,580 --> 00:15:41,159 el compilador me va a decir ¿quién es? 361 00:15:42,240 --> 00:15:43,779 porque aún todavía 362 00:15:43,779 --> 00:15:45,519 el compilador es una regla muy estricta 363 00:15:45,519 --> 00:15:47,039 entonces dice 364 00:15:47,039 --> 00:15:48,860 a ver esto no sé todavía lo que es 365 00:15:48,860 --> 00:15:50,840 entonces no pasa nada pues todo esto 366 00:15:50,840 --> 00:15:52,019 lo ponemos delante 367 00:15:52,019 --> 00:15:54,419 y ya está 368 00:15:54,419 --> 00:15:56,480 lo ponemos aquí, por ejemplo 369 00:15:56,480 --> 00:15:59,470 vale 370 00:15:59,470 --> 00:16:02,409 bueno, porque cuando nosotros 371 00:16:02,409 --> 00:16:03,909 hemos construido, hemos ido, primero 372 00:16:03,909 --> 00:16:06,009 hemos añadido el botón, luego hemos añadido no sé qué 373 00:16:06,009 --> 00:16:08,389 vale, y ahora 374 00:16:08,389 --> 00:16:10,490 aquí, el sedenable de este 375 00:16:10,490 --> 00:16:11,309 pues a true 376 00:16:11,309 --> 00:16:16,309 y el texto que se llamaba 377 00:16:16,309 --> 00:16:17,570 número usuario 378 00:16:17,570 --> 00:16:22,669 el sedenable 379 00:16:22,669 --> 00:16:24,610 a true también 380 00:16:24,610 --> 00:16:28,659 entonces, este 381 00:16:28,659 --> 00:16:30,700 evento, esa parte la hace 382 00:16:30,700 --> 00:16:32,720 y funciona, pues si 383 00:16:32,720 --> 00:16:33,659 lo ponía jugando 384 00:16:33,659 --> 00:16:35,899 vale 385 00:16:35,899 --> 00:16:38,600 esa parte está, ahora 386 00:16:38,600 --> 00:16:40,559 necesitamos el action performance 387 00:16:40,559 --> 00:16:42,460 de este 388 00:16:42,460 --> 00:16:43,799 porque cada vez que el usuario 389 00:16:43,799 --> 00:16:46,399 meta un numerito, hay que verificar 390 00:16:46,399 --> 00:16:48,460 si es el número correcto 391 00:16:48,460 --> 00:16:50,600 sin avisarte si lo es 392 00:16:50,600 --> 00:16:52,500 o si no lo es, y si además lo fuera 393 00:16:52,500 --> 00:16:54,440 volver a reiniciar el juego 394 00:16:54,440 --> 00:16:56,679 bueno, pues aquí si que me ofrece 395 00:16:56,679 --> 00:16:57,500 el event handler 396 00:16:57,500 --> 00:17:02,279 ¿Qué evento queremos? 397 00:17:02,440 --> 00:17:04,059 El por defecto del text fill 398 00:17:04,059 --> 00:17:04,960 Que es darle al enter 399 00:17:04,960 --> 00:17:07,519 Pues venga, action performer 400 00:17:07,519 --> 00:17:09,180 ¿Qué tenemos que hacer aquí? 401 00:17:10,380 --> 00:17:10,940 Verificar 402 00:17:10,940 --> 00:17:13,200 Coger el numerito 403 00:17:13,200 --> 00:17:15,079 Que haya introducido el usuario 404 00:17:15,079 --> 00:17:18,039 El numerito que haya introducido el usuario 405 00:17:18,039 --> 00:17:19,660 Llamémosle en esta, en el área de texto 406 00:17:19,660 --> 00:17:21,940 Que se llama número usuario 407 00:17:21,940 --> 00:17:23,700 Pues entonces 408 00:17:23,700 --> 00:17:26,059 Número usuario 409 00:17:26,059 --> 00:17:28,259 vamos a coger el texto que tiene el metido 410 00:17:28,259 --> 00:17:30,059 get test, vale 411 00:17:30,059 --> 00:17:32,099 pero eso nos va a dar 412 00:17:32,099 --> 00:17:34,200 el número en formato texto, en formato cadena 413 00:17:34,200 --> 00:17:35,859 en formato cadena lo queremos 414 00:17:35,859 --> 00:17:38,279 pero sabemos como convertir un numerito 415 00:17:38,279 --> 00:17:39,579 que está en formato cadena 416 00:17:39,579 --> 00:17:42,099 al integer que representa 417 00:17:42,099 --> 00:17:44,000 que es esto 418 00:17:44,000 --> 00:17:51,710 usuario 419 00:17:51,710 --> 00:17:53,269 vale 420 00:17:53,269 --> 00:17:54,549 lo ponemos 421 00:17:54,549 --> 00:17:56,289 ahí abajo 422 00:17:56,289 --> 00:17:59,349 ala, pues ya hemos leído el número 423 00:17:59,349 --> 00:18:00,349 que ha metido el usuario 424 00:18:00,349 --> 00:18:03,329 lo hemos cogido del text fill y lo hemos convertido en t 425 00:18:03,329 --> 00:18:05,410 y ahora es cuando 426 00:18:05,410 --> 00:18:07,410 tenemos que compararlo con el número aleatorio 427 00:18:07,410 --> 00:18:08,190 que se generó 428 00:18:08,190 --> 00:18:10,049 pero 429 00:18:10,049 --> 00:18:13,450 tenemos un problema, ¿dónde está ese número aleatorio 430 00:18:13,450 --> 00:18:14,170 que se generó? 431 00:18:16,660 --> 00:18:17,119 está aquí 432 00:18:17,119 --> 00:18:21,240 ese número apareció y cuando el evento 433 00:18:21,240 --> 00:18:23,500 terminó desapareció, luego esto no tiene sentido 434 00:18:23,500 --> 00:18:25,339 ¿qué tenemos que hacer 435 00:18:25,339 --> 00:18:27,619 con esta variable? 436 00:18:29,279 --> 00:18:29,759 sacarla 437 00:18:29,759 --> 00:18:31,079 a un ámbito de variable 438 00:18:31,079 --> 00:18:33,119 que sea accesible tanto desde aquí 439 00:18:33,119 --> 00:18:34,259 como desde aquí 440 00:18:34,259 --> 00:18:37,140 entonces no será aquí donde lo tengamos que declarar 441 00:18:37,140 --> 00:18:38,700 aquí le damos valor, eso sí 442 00:18:38,700 --> 00:18:40,940 pero la declaración la hacemos 443 00:18:40,940 --> 00:18:42,940 en el ámbito superior a esas dos 444 00:18:42,940 --> 00:18:44,680 por ejemplo 445 00:18:44,680 --> 00:18:47,440 aquí al principio del método 446 00:18:47,440 --> 00:18:49,000 como variable de clase depende 447 00:18:49,000 --> 00:18:51,759 de nuestras necesidades 448 00:18:51,759 --> 00:18:59,319 uy, que tontería esa 449 00:18:59,319 --> 00:19:01,319 vale, quería darle un valor cualquiera 450 00:19:01,319 --> 00:19:03,299 para que no me dijeran 451 00:19:03,299 --> 00:19:04,680 podría estar sin inicializar 452 00:19:04,680 --> 00:19:06,859 Vale, entonces 453 00:19:06,859 --> 00:19:09,619 Como las dos clases que acceden a él 454 00:19:09,619 --> 00:19:10,559 Son internas 455 00:19:10,559 --> 00:19:11,960 A este método 456 00:19:11,960 --> 00:19:14,579 Son anónimas y que están dentro 457 00:19:14,579 --> 00:19:15,779 Podríamos meterlo aquí dentro 458 00:19:15,779 --> 00:19:18,400 Normalmente cuanto más local 459 00:19:18,400 --> 00:19:20,359 Sea una variable dentro de lo posible 460 00:19:20,359 --> 00:19:22,339 Mejor porque menos va a afectar al resto 461 00:19:22,339 --> 00:19:24,099 Vale 462 00:19:24,099 --> 00:19:26,740 Bueno, pues entonces 463 00:19:26,740 --> 00:19:29,980 Más bien 464 00:19:29,980 --> 00:19:31,700 Vale, vale 465 00:19:31,700 --> 00:19:34,339 Vale, sí 466 00:19:34,339 --> 00:19:36,319 No, pero en este caso no podemos declararla ahí 467 00:19:36,319 --> 00:19:37,359 Porque 468 00:19:37,359 --> 00:19:42,940 Sí, ya, ya 469 00:19:42,940 --> 00:19:44,960 Pero 470 00:19:44,960 --> 00:19:52,839 Claro, no, pero 471 00:19:52,839 --> 00:19:55,579 Tenemos que ponerla como variable de clase 472 00:19:55,579 --> 00:19:56,920 Porque 473 00:19:56,920 --> 00:20:05,119 No sabría 474 00:20:05,119 --> 00:20:07,259 Decírtelo con precisión 475 00:20:07,259 --> 00:20:07,640 ¿Por qué? 476 00:20:07,640 --> 00:20:10,359 ¿por qué el ámbito 477 00:20:10,359 --> 00:20:10,960 de aquí 478 00:20:10,960 --> 00:20:14,299 no se considera un ámbito 479 00:20:14,299 --> 00:20:15,160 interno a este? 480 00:20:17,480 --> 00:20:17,720 vale 481 00:20:17,720 --> 00:20:19,759 si abriéramos un if o un for 482 00:20:19,759 --> 00:20:20,900 ahí estaría claro 483 00:20:20,900 --> 00:20:23,940 pero este ámbito que hemos abierto es un ámbito especial 484 00:20:23,940 --> 00:20:26,359 porque es un ámbito de una clase interna 485 00:20:26,359 --> 00:20:27,319 una clase anónima 486 00:20:27,319 --> 00:20:33,160 sí, pero según eso 487 00:20:33,160 --> 00:20:35,880 tampoco nos tendría que haber dejado acceder 488 00:20:35,880 --> 00:20:37,220 a los botones 489 00:20:37,220 --> 00:20:38,640 y eso sí que nos deja 490 00:20:38,640 --> 00:20:40,099 entonces a esto sí que nos deja 491 00:20:40,099 --> 00:20:42,079 y no se ha dejado hacer el número aleatorio 492 00:20:42,079 --> 00:20:47,680 no sabría precisar 493 00:20:47,680 --> 00:20:48,619 exactamente por qué 494 00:20:48,619 --> 00:20:49,440 habría que 495 00:20:49,440 --> 00:20:52,619 en cualquier caso la solución está clara 496 00:20:52,619 --> 00:20:54,059 que es ponerlo como variable de clase 497 00:20:54,059 --> 00:20:55,119 y ya está 498 00:20:55,119 --> 00:20:57,539 lo ponemos como variable de clase 499 00:20:57,539 --> 00:20:59,880 y ahí siempre va a poder acceder 500 00:20:59,880 --> 00:21:01,140 vale 501 00:21:01,140 --> 00:21:05,839 ahora ya sí 502 00:21:05,839 --> 00:21:22,390 Ahora ya sí, lo que le faltaba al ActionPerformer del texto, que era si n es igual al número aleatorio, pues si es igual, entonces el juego ha terminado. 503 00:21:23,529 --> 00:21:25,490 ¿Y qué significa que el juego haya terminado? 504 00:21:25,549 --> 00:21:26,470 Primero avisamos. 505 00:21:27,150 --> 00:21:29,109 Avisamos con una ventanita emergente. 506 00:21:29,390 --> 00:21:33,250 ¿Cómo hacemos sacar una ventana emergente sencilla asociada al frame? 507 00:21:33,730 --> 00:21:34,789 Eso es muy fácil. 508 00:21:34,789 --> 00:21:37,269 sacar una ventana emergente 509 00:21:37,269 --> 00:21:39,269 asociada a un frame 510 00:21:39,269 --> 00:21:42,089 en una 511 00:21:42,089 --> 00:21:44,109 situación concreta 512 00:21:44,109 --> 00:21:46,089 se puede hacer a través de un método 513 00:21:46,089 --> 00:21:48,170 estático de la clase 514 00:21:48,170 --> 00:21:49,910 JOptionPanel 515 00:21:49,910 --> 00:21:55,400 vale 516 00:21:55,400 --> 00:21:57,160 la clase JOptionPanel 517 00:21:57,160 --> 00:21:59,740 esta clase que es otra clase de Java 518 00:21:59,740 --> 00:22:00,380 XSwing 519 00:22:00,380 --> 00:22:03,539 esta es una clase que tiene métodos estáticos 520 00:22:03,539 --> 00:22:05,140 para sacar ventanas aleatorias 521 00:22:05,140 --> 00:22:07,420 son todas estas que empiezan con el 522 00:22:07,420 --> 00:22:09,279 Show, Confirm, Dialog, Show Message. 523 00:22:09,660 --> 00:22:11,119 Son ventanitas aleatorias. 524 00:22:11,660 --> 00:22:13,779 Esta es la típica para confirmar la que te sale. 525 00:22:13,920 --> 00:22:15,079 Aceptar, cancelar. 526 00:22:16,039 --> 00:22:17,859 Las hay solamente para informar, 527 00:22:18,480 --> 00:22:20,539 como es la Show Message, que está más abajo. 528 00:22:21,380 --> 00:22:23,839 Las hay para que además te ofrezca un texto 529 00:22:23,839 --> 00:22:24,900 y tú le metas un texto. 530 00:22:25,200 --> 00:22:27,519 Y entonces vamos a simplemente elegir la de informar. 531 00:22:28,400 --> 00:22:30,759 Podéis explorar todas las otras para que sirven. 532 00:22:30,839 --> 00:22:33,559 Vamos a elegir la de informar, que es esta. 533 00:22:35,259 --> 00:22:35,740 Vale. 534 00:22:35,740 --> 00:22:39,420 pues esta te saca 535 00:22:39,420 --> 00:22:41,299 una ventanita de diálogo solamente para 536 00:22:41,299 --> 00:22:43,500 informar y que parámetro 537 00:22:43,500 --> 00:22:45,339 le pones, pues como primer 538 00:22:45,339 --> 00:22:45,880 parámetro 539 00:22:45,880 --> 00:22:48,140 como primer parámetro 540 00:22:48,140 --> 00:22:51,279 se le pone el frame al que esa ventana 541 00:22:51,279 --> 00:22:53,440 va asociado, si le ponemos null es el frame 542 00:22:53,440 --> 00:22:55,200 en el que está, ese método 543 00:22:55,200 --> 00:22:57,339 declarado, luego le ponemos null siempre y ya está 544 00:22:57,339 --> 00:22:59,160 y aquí el mensajito que 545 00:22:59,160 --> 00:23:01,740 queramos ponerle 546 00:23:01,740 --> 00:23:03,339 ala 547 00:23:03,339 --> 00:23:03,819 ya está 548 00:23:03,819 --> 00:23:06,819 Has ganado 549 00:23:06,819 --> 00:23:08,660 Como estamos en español 550 00:23:08,660 --> 00:23:11,859 Pues interrogación tanto antes como después 551 00:23:11,859 --> 00:23:15,319 Perdón, exclamación 552 00:23:15,319 --> 00:23:16,460 La niebla mental 553 00:23:16,460 --> 00:23:18,839 Vale, y ahora ya pues ya está 554 00:23:18,839 --> 00:23:21,019 Poner al botón, le volvemos a habilitar 555 00:23:21,019 --> 00:23:33,890 Le volvemos a cambiar el texto 556 00:23:33,890 --> 00:23:38,210 Para que ahora tenga 557 00:23:38,210 --> 00:23:39,990 Jugar 558 00:23:39,990 --> 00:23:44,769 Sí, claro 559 00:23:44,769 --> 00:23:46,589 Claro, vamos 560 00:23:46,589 --> 00:23:48,809 O a la forma que tú lo hicieras 561 00:23:48,809 --> 00:23:50,970 Pero tendría mucho sentido, efectivamente 562 00:23:50,970 --> 00:23:52,670 Claro, si has decidido 563 00:23:52,670 --> 00:23:53,730 Si no has definido los estados 564 00:23:53,730 --> 00:23:56,170 Pues efectivamente un estado 1 te construye el estado 1 565 00:23:56,170 --> 00:23:57,769 Y cuando tú has lanzado el evento 566 00:23:57,769 --> 00:23:59,650 Pues llamas al método que te lo construye 567 00:23:59,650 --> 00:24:01,210 Claro, efectivamente 568 00:24:01,210 --> 00:24:02,349 Vale 569 00:24:02,349 --> 00:24:05,430 Botón jugar, set test 570 00:24:05,430 --> 00:24:07,230 Y ahora hay que deshabilitar lo otro 571 00:24:07,230 --> 00:24:09,049 Que lo otro era 572 00:24:09,049 --> 00:24:10,589 la lbl 573 00:24:10,589 --> 00:24:12,910 newlajlabel 574 00:24:12,910 --> 00:24:13,549 tal vez 575 00:24:13,549 --> 00:24:17,750 pues no 576 00:24:17,750 --> 00:24:20,529 newlabel 577 00:24:20,529 --> 00:24:22,410 eso era lo siguiente que iba a probar 578 00:24:22,410 --> 00:24:25,980 vale, esta si era 579 00:24:25,980 --> 00:24:28,519 vale, pues set enablet 580 00:24:28,519 --> 00:24:29,240 false 581 00:24:29,240 --> 00:24:34,900 y el texto que este era 582 00:24:34,900 --> 00:24:35,460 número 583 00:24:35,460 --> 00:24:37,799 usuario 584 00:24:37,799 --> 00:24:42,759 enablet false 585 00:24:42,759 --> 00:24:43,519 otra vez 586 00:24:43,519 --> 00:24:50,069 Bueno, pues si el jugador ha ganado, bien 587 00:24:50,069 --> 00:24:56,009 Y si no, pues mostramos la ventanita emergente y nada más 588 00:24:56,009 --> 00:24:59,950 Pero diciendo que no ha acertado 589 00:24:59,950 --> 00:25:03,309 Bueno, lo comparas y le dices más alto o más bajo 590 00:25:03,309 --> 00:25:06,829 Sí 591 00:25:06,829 --> 00:25:10,509 Que era de hecho lo que decía denunciada 592 00:25:10,509 --> 00:25:12,430 Vale 593 00:25:12,430 --> 00:25:14,430 Pues el save 594 00:25:14,430 --> 00:25:22,839 Si el número es menor 595 00:25:22,839 --> 00:25:29,470 pues ala, se lo gritamos 596 00:25:29,470 --> 00:25:35,420 es mayor 597 00:25:35,420 --> 00:25:39,920 y en el único 598 00:25:39,920 --> 00:25:41,000 caso que resta 599 00:25:41,000 --> 00:25:42,539 pues lo otro 600 00:25:42,539 --> 00:25:56,000 y ya está, ya no hay nada más que hacer en este 601 00:25:56,000 --> 00:25:58,579 en este evento 602 00:25:58,579 --> 00:26:01,759 ya no hay nada más que hacer 603 00:26:01,759 --> 00:26:03,680 el numerador ya está 604 00:26:03,680 --> 00:26:04,819 3 605 00:26:04,819 --> 00:26:07,880 7 606 00:26:07,880 --> 00:26:09,119 37 no va a ser 607 00:26:09,119 --> 00:26:10,059 7 608 00:26:10,059 --> 00:26:13,160 5, a ver 609 00:26:13,160 --> 00:26:15,180 nos ha faltado una cosa 610 00:26:15,180 --> 00:26:16,940 que es volver a poner 611 00:26:16,940 --> 00:26:18,900 pues cuatro, no hay otra 612 00:26:18,900 --> 00:26:20,039 cuatro 613 00:26:20,039 --> 00:26:23,640 vale, entonces volver a poner 614 00:26:23,640 --> 00:26:25,660 el área de texto vacía para que no lo tenga que borrar 615 00:26:25,660 --> 00:26:26,759 todo el rato es un detalle 616 00:26:26,759 --> 00:26:28,200 entonces 617 00:26:28,200 --> 00:26:30,619 aquí cuando 618 00:26:30,619 --> 00:26:33,680 el set test 619 00:26:33,680 --> 00:26:35,880 volverlo a poner a cero pues directamente 620 00:26:35,880 --> 00:26:37,400 cuando acaba este 621 00:26:37,400 --> 00:26:39,720 if 622 00:26:39,720 --> 00:26:41,759 de aquí, en cualquiera de los casos 623 00:26:41,759 --> 00:26:43,759 Pues 624 00:26:43,759 --> 00:26:47,460 Número aleatorio 625 00:26:47,460 --> 00:26:48,400 Punto 626 00:26:48,400 --> 00:26:49,579 Sextest 627 00:26:49,579 --> 00:26:51,980 Uy, número aleatorio no, número usuario 628 00:26:51,980 --> 00:26:57,160 Sextest 629 00:26:57,160 --> 00:26:58,680 Vacío 630 00:26:58,680 --> 00:27:05,119 Es que está fuera de list 631 00:27:05,119 --> 00:27:06,000 O sea, en cualquiera de los casos 632 00:27:06,000 --> 00:27:08,640 En cualquiera de los casos 633 00:27:08,640 --> 00:27:09,500 Ya te lo va a poner 634 00:27:09,500 --> 00:27:11,559 Vale, y ya está 635 00:27:11,559 --> 00:27:13,059 Pues nada, así nos 636 00:27:13,059 --> 00:27:21,299 Lógicamente el procedimiento óptimo es empezar por la mitad 637 00:27:21,299 --> 00:27:22,779 ¿Verdad? Vas acotando 638 00:27:22,779 --> 00:27:23,519 Claro 639 00:27:23,519 --> 00:27:25,420 Siempre por mitad 640 00:27:25,420 --> 00:27:26,140 ¿Qué es eso? 641 00:27:27,420 --> 00:27:28,160 ¿Qué es lo que se llama? 642 00:27:29,259 --> 00:27:30,420 No para de ganar 643 00:27:30,420 --> 00:27:32,460 No para de ganar 644 00:27:32,460 --> 00:27:36,480 Jolín, pues 645 00:27:36,480 --> 00:27:39,019 Yo nunca puedo ir peor 646 00:27:39,019 --> 00:27:41,039 Siempre es por mitad 647 00:27:41,039 --> 00:27:41,980 Por mitad es 648 00:27:41,980 --> 00:27:47,349 Sí, lo que pasa es que si el número está justo 649 00:27:47,349 --> 00:27:50,049 en el extremo, si es 9 o 2 650 00:27:50,049 --> 00:27:51,750 es la peor 651 00:27:51,750 --> 00:27:53,769 sí, sí, sí, pero que en mi caso 652 00:27:53,769 --> 00:27:56,049 siempre me está generando como aleatorio o el 9 o el 2 653 00:27:56,049 --> 00:27:57,150 así que no hay una 654 00:27:57,150 --> 00:27:58,789 vale, pues ya está 655 00:27:58,789 --> 00:28:00,089 bueno 656 00:28:00,089 --> 00:28:03,109 pues ya está 657 00:28:03,109 --> 00:28:05,930 esto, una tontería 658 00:28:05,930 --> 00:28:07,109 porque es meter números 659 00:28:07,109 --> 00:28:10,269 e ir mostrando 660 00:28:10,269 --> 00:28:11,670 la media que llevas acumulada 661 00:28:11,670 --> 00:28:14,049 aquí lo único es que tendrás que tener una variable 662 00:28:14,049 --> 00:28:15,029 también de clase 663 00:28:15,029 --> 00:28:17,630 que cada vez que le das al enter 664 00:28:17,630 --> 00:28:19,269 pues te incorpora ese numerito 665 00:28:19,269 --> 00:28:21,230 a la media y ya está 666 00:28:21,230 --> 00:28:25,089 claro y aparte tienes que hacer un contador 667 00:28:25,089 --> 00:28:27,230 efectivamente y cada intento se incrementa 668 00:28:27,230 --> 00:28:28,910 divides, entonces este tampoco tiene 669 00:28:28,910 --> 00:28:31,250 y es que este nada, metes aquí 670 00:28:31,250 --> 00:28:33,329 a cada evento del botón, pues coges 671 00:28:33,329 --> 00:28:35,490 lo que hay en el text field, haces la operación 672 00:28:35,490 --> 00:28:37,109 que sea y la pones como resultado 673 00:28:37,109 --> 00:28:39,410 vale 674 00:28:39,410 --> 00:28:43,150 vale, pues a ver 675 00:28:43,150 --> 00:28:45,349 Vamos a plantear ahora el juego 676 00:28:45,349 --> 00:28:47,130 Ese del arcado, que está muy chulo 677 00:28:47,130 --> 00:28:47,690 Para que 678 00:28:47,690 --> 00:28:50,609 Se me ha ocurrido sobre la marcha 679 00:28:50,609 --> 00:28:54,289 ¿Qué vista podría tener? 680 00:28:54,430 --> 00:28:56,269 Y luego ya hacéis el comportamiento vosotros 681 00:28:56,269 --> 00:29:00,880 Claro, claro 682 00:29:00,880 --> 00:29:01,900 Es que si no es una locura 683 00:29:01,900 --> 00:29:03,480 La idea del juego es 684 00:29:03,480 --> 00:29:05,559 Hacer una raid string 685 00:29:05,559 --> 00:29:07,660 Una raid además, que a ti te encantará 686 00:29:07,660 --> 00:29:10,619 Y no pasa nada, le decimos a ChagPT 687 00:29:10,619 --> 00:29:13,039 Generanos una raid string 688 00:29:13,039 --> 00:29:14,619 Con 200 palabras 689 00:29:14,619 --> 00:29:16,259 con todas las palabras del diccionario español 690 00:29:16,259 --> 00:29:20,000 espérate 691 00:29:20,000 --> 00:29:22,200 no, con todas no sé si va a ser capaz de hacerlo 692 00:29:22,200 --> 00:29:23,180 a ver 693 00:29:23,180 --> 00:29:25,500 un par de palabritas 694 00:29:25,500 --> 00:29:32,440 a ver, es el mejor esclavo que he tenido nunca 695 00:29:32,440 --> 00:29:35,059 si te pide todas las palabras del diccionario español 696 00:29:35,059 --> 00:29:35,819 no te vas a echar 697 00:29:35,819 --> 00:29:37,880 prepárate 698 00:29:37,880 --> 00:29:40,440 pues no, claro que no 699 00:29:40,440 --> 00:29:47,460 a ver 700 00:29:47,460 --> 00:30:01,650 Uy, le estoy gritando 701 00:30:01,650 --> 00:30:03,029 Esto no le gusta, pero bueno, da igual 702 00:30:03,029 --> 00:30:05,289 No le gusta que le griten 703 00:30:05,289 --> 00:30:06,410 ¿A ti te gusta que te griten? 704 00:30:10,529 --> 00:30:12,089 Venga, todas las del diccionario 705 00:30:12,089 --> 00:30:13,930 No, es que me da miedo, porque voy a colgar el ordenador 706 00:30:13,930 --> 00:30:22,039 hala pues 707 00:30:22,039 --> 00:30:23,079 ya está 708 00:30:23,079 --> 00:30:26,359 van a ser 200 frutas 709 00:30:26,359 --> 00:30:27,299 no me lo puedo creer 710 00:30:27,299 --> 00:30:32,140 bueno pues 711 00:30:32,140 --> 00:30:33,759 papa 712 00:30:33,759 --> 00:30:35,779 papa 713 00:30:46,779 --> 00:30:47,539 claro claro 714 00:30:47,539 --> 00:30:49,160 pero tenemos que aprender a leer de ficheros 715 00:30:49,160 --> 00:30:50,500 que ese es el siguiente tema 716 00:30:50,500 --> 00:30:53,339 vale, pero bueno, ya vemos de qué 717 00:30:53,339 --> 00:30:55,460 coge a él, no, mira, ha cambiado 718 00:30:55,460 --> 00:30:57,579 a silla, mesa, periódico, cojín, manta 719 00:30:57,579 --> 00:30:59,880 colchón, estantería 720 00:30:59,880 --> 00:31:01,400 vale, pues bueno 721 00:31:01,400 --> 00:31:03,680 este array nos podría valer, para la aplicación 722 00:31:03,680 --> 00:31:05,539 en orden 723 00:31:05,539 --> 00:31:06,220 inmenso 724 00:31:06,220 --> 00:31:09,019 que no, que luego se cree que me río de él 725 00:31:09,019 --> 00:31:11,720 a ver, que yo me gusta tener contentos a los esclavos 726 00:31:11,720 --> 00:31:12,799 sí, sí, para que no sea 727 00:31:12,799 --> 00:31:15,519 no, pues por ética 728 00:31:15,519 --> 00:31:18,099 no se trata mal a nadie 729 00:31:18,099 --> 00:31:22,319 la ética es 730 00:31:22,319 --> 00:31:22,920 inteligencia artificial 731 00:31:22,920 --> 00:31:24,539 interesante pregunta 732 00:31:24,539 --> 00:31:28,519 pero según eso tampoco lo llames inteligencia artificial 733 00:31:28,519 --> 00:31:30,599 es que es complejo 734 00:31:30,599 --> 00:31:31,680 el concepto de inteligencia 735 00:31:31,680 --> 00:31:33,920 claro, porque es complejo 736 00:31:33,920 --> 00:31:35,799 el concepto de ser humano también 737 00:31:35,799 --> 00:31:37,279 ¿dónde está la frontera? 738 00:31:38,279 --> 00:31:39,819 vale, bueno, pues a ver, entonces 739 00:31:39,819 --> 00:31:42,079 ¿cómo nos podríamos plantear el juego del ahorcado? 740 00:31:42,180 --> 00:31:44,400 vamos a arrancarlo y luego lo seguís 741 00:31:44,400 --> 00:31:46,980 Por ejemplo, venga 742 00:31:46,980 --> 00:31:52,619 Ahorcado 743 00:31:52,619 --> 00:31:53,680 Vale 744 00:31:53,680 --> 00:31:57,119 Entonces tendrá un botoncito 745 00:31:57,119 --> 00:31:58,680 Arrancar juego 746 00:31:58,680 --> 00:32:01,240 Vale, eso está claro 747 00:32:01,240 --> 00:32:08,640 Vale 748 00:32:08,640 --> 00:32:10,579 Frame 749 00:32:10,579 --> 00:32:12,440 No sé que estoy haciendo 750 00:32:12,440 --> 00:32:14,599 Bueno, es una clasecita 751 00:32:14,599 --> 00:32:15,900 Entonces 752 00:32:15,900 --> 00:32:27,829 Vale 753 00:32:27,829 --> 00:32:30,630 entonces, ahora 754 00:32:30,630 --> 00:32:32,789 el botoncito de arrancar juego es el más sencillo 755 00:32:32,789 --> 00:32:33,450 de pensar 756 00:32:33,450 --> 00:32:36,089 pero 757 00:32:36,089 --> 00:32:38,069 luego nos viene ya la parte interesante 758 00:32:38,069 --> 00:32:40,349 botón 759 00:32:40,349 --> 00:32:45,839 el leyado que siempre se me 760 00:32:45,839 --> 00:32:46,539 olvida 761 00:32:46,539 --> 00:32:48,380 de verdad 762 00:32:48,380 --> 00:32:51,359 que estrés 763 00:32:51,359 --> 00:32:54,539 vale 764 00:32:54,539 --> 00:32:56,740 botoncito 765 00:32:56,740 --> 00:33:04,140 jugar, venga 766 00:33:04,140 --> 00:33:06,519 y ahora, ¿cómo se os 767 00:33:06,519 --> 00:33:08,440 ocurriría. La idea es que cuando 768 00:33:08,440 --> 00:33:10,680 le demos a jugar 769 00:33:10,680 --> 00:33:14,450 se selecciona aleatoriamente 770 00:33:14,450 --> 00:33:15,569 una palabra 771 00:33:15,569 --> 00:33:17,869 de esa bolsa de palabras que tiene la aplicación 772 00:33:17,869 --> 00:33:19,869 que efectivamente, como 773 00:33:19,869 --> 00:33:21,849 dice Pablo, sería mejor en lugar 774 00:33:21,849 --> 00:33:23,910 de tenerlas en una raíz de string así de largo 775 00:33:23,910 --> 00:33:26,009 tenerlas en un fichero y leer 776 00:33:26,009 --> 00:33:27,869 del fichero. Pero en realidad es una 777 00:33:27,869 --> 00:33:29,769 cuestión estética, porque 778 00:33:29,769 --> 00:33:31,910 tener una raíz de string así de largo 779 00:33:31,910 --> 00:33:33,490 en mi 780 00:33:33,490 --> 00:33:35,730 programa es 781 00:33:35,730 --> 00:33:37,809 mucho más eficiente que conectarme a un fichero 782 00:33:37,809 --> 00:33:39,549 y leer lo del fichero. Lo que pasa es que 783 00:33:39,549 --> 00:33:41,509 mi programa es así, pero eso a Java 784 00:33:41,509 --> 00:33:43,589 le da lo mismo. Las líneas de código. 785 00:33:48,609 --> 00:33:49,309 Claro, depende 786 00:33:49,309 --> 00:33:51,609 de cómo leas del fichero. Claro, si vas a 787 00:33:51,609 --> 00:33:53,549 volcar todo el fichero, le da igual. 788 00:33:53,710 --> 00:33:55,549 Si vas a ir leyendo de una en una, va a ser siempre 789 00:33:55,549 --> 00:33:57,509 mejor ir leyendo de una en una el fichero que tener todo 790 00:33:57,509 --> 00:33:59,670 el array en RAM. Pero en cualquier caso, 791 00:33:59,769 --> 00:34:00,609 como ahora no tenemos, 792 00:34:01,250 --> 00:34:03,529 no sabemos leer de ficheros, 793 00:34:03,650 --> 00:34:05,650 pues no tenemos esa opción, pero la tendremos en breve. 794 00:34:05,970 --> 00:34:07,730 ¿Vale? Bueno, pues entonces 795 00:34:07,730 --> 00:34:09,690 ahora que se os ocurre, cuando vemos al botón 796 00:34:09,690 --> 00:34:11,710 jugar, está claro que habrá 797 00:34:11,710 --> 00:34:13,869 que seleccionar una palabra aleatoria 798 00:34:13,869 --> 00:34:14,789 de todo ese stream 799 00:34:14,789 --> 00:34:17,710 y luego, esto debería 800 00:34:17,710 --> 00:34:19,849 hacer aparecer, debería hacer visible 801 00:34:19,849 --> 00:34:21,510 tantos huequitos 802 00:34:21,510 --> 00:34:23,949 como tantas 803 00:34:23,949 --> 00:34:25,190 letras tenga esa palabra 804 00:34:25,190 --> 00:34:27,530 cada huequito podría 805 00:34:27,530 --> 00:34:29,869 ser un text field de tamaño 1 806 00:34:29,869 --> 00:34:31,769 ¿verdad? un text field de tamaño 1 807 00:34:31,769 --> 00:34:33,469 luego, ahora 808 00:34:33,469 --> 00:34:35,389 pregunto yo, pregunto 809 00:34:35,389 --> 00:34:37,309 ¿cómo se os ocurriría eso? 810 00:34:37,730 --> 00:34:39,250 de conseguir 811 00:34:39,250 --> 00:34:40,869 Juanjo, escucha 812 00:34:40,869 --> 00:34:42,090 ahora 813 00:34:42,090 --> 00:34:47,789 que se las apañe con sus llaves 814 00:34:47,789 --> 00:34:49,250 tú tus llaves, controlalas 815 00:34:49,250 --> 00:34:51,130 ¿vale? pero en el examen has tenido que controlar 816 00:34:51,130 --> 00:34:51,630 solo las llaves 817 00:34:51,630 --> 00:34:55,329 entonces la pregunta es 818 00:34:55,329 --> 00:34:57,429 ¿cómo se os ocurriría a vosotros 819 00:34:57,429 --> 00:34:59,650 hacer que cuando le deis 820 00:34:59,650 --> 00:35:00,489 al botón jugar 821 00:35:00,489 --> 00:35:02,210 aparezcan aquí, pum 822 00:35:02,210 --> 00:35:04,650 tantos textfield con tamaño 1 823 00:35:04,650 --> 00:35:06,789 como sean necesarios 824 00:35:06,789 --> 00:35:08,730 para la palabra que aleatoriamente 825 00:35:08,730 --> 00:35:09,590 has seleccionado? 826 00:35:10,070 --> 00:35:10,929 Bueno, cuentas 827 00:35:10,929 --> 00:35:13,329 cuentas el tipo de 828 00:35:13,329 --> 00:35:16,030 sacas el número y el número ese 829 00:35:16,030 --> 00:35:18,449 lo utilizas para formar el número de 830 00:35:18,449 --> 00:35:20,449 habilitas, creas un 831 00:35:20,449 --> 00:35:21,610 y habilitas solo 832 00:35:21,610 --> 00:35:24,989 claro, no instanciarlo 833 00:35:24,989 --> 00:35:26,869 en ese momento, porque entonces se está convirtiendo 834 00:35:26,869 --> 00:35:28,130 en una variable local 835 00:35:28,130 --> 00:35:31,090 claro, esa es una buena opción 836 00:35:31,090 --> 00:35:32,909 tú piensas 837 00:35:32,909 --> 00:35:34,730 de mi bolsa de palabras, ¿cuál es 838 00:35:34,730 --> 00:35:37,010 la más larga, la palabra más larga 839 00:35:37,010 --> 00:35:39,110 tiene 12, pues me voy 840 00:35:39,110 --> 00:35:40,849 a hacer yo aquí 12 textfield 841 00:35:40,849 --> 00:35:42,949 pero los voy a dejar 842 00:35:42,949 --> 00:35:44,590 ocultos, los voy a dejar ocultos 843 00:35:44,590 --> 00:35:46,409 y ahora ya después del botón jugar 844 00:35:46,409 --> 00:35:48,429 selecciono la palabra aleatoriamente 845 00:35:48,429 --> 00:35:50,090 cuento cuantos caracteres tiene 846 00:35:50,090 --> 00:35:53,269 y hago visibles tantos textfield 847 00:35:53,269 --> 00:35:54,670 como necesite 848 00:35:54,670 --> 00:35:56,769 para eso lo mejor es que 849 00:35:56,769 --> 00:35:58,389 toda esa colección de textfield 850 00:35:58,389 --> 00:36:00,190 esté metida en una array de textfield 851 00:36:00,190 --> 00:36:01,829 para yo luego en un bloque 852 00:36:01,829 --> 00:36:03,789 ir haciendo set visible 853 00:36:03,789 --> 00:36:05,409 pa pa pa hasta que termine con eso 854 00:36:05,409 --> 00:36:06,070 ¿no? 855 00:36:07,130 --> 00:36:08,489 ¿no sería esa la mejor opción? 856 00:36:09,889 --> 00:36:11,710 entonces, eso si los queremos 857 00:36:11,710 --> 00:36:13,449 dejar aquí colocaditos, tampoco es trivial 858 00:36:13,449 --> 00:36:15,650 los dejaríamos primero colocaditos, él me los va a generar 859 00:36:15,650 --> 00:36:17,429 como variables separadas, pero luego lo retocas 860 00:36:17,429 --> 00:36:17,949 tú en el código 861 00:36:17,949 --> 00:36:21,690 claro, entonces una vez que 862 00:36:21,690 --> 00:36:23,230 ya está y luego ya 863 00:36:23,230 --> 00:36:25,909 el text field tiene que tener 864 00:36:25,909 --> 00:36:27,650 un evento cada vez que tú 865 00:36:27,650 --> 00:36:29,130 pones una 866 00:36:29,130 --> 00:36:31,369 bueno, luego tienes que tener una letra 867 00:36:31,369 --> 00:36:33,050 un espacio abajo para la letra 868 00:36:33,050 --> 00:36:35,869 entonces el espacio abajo para la letra 869 00:36:35,869 --> 00:36:38,389 cuando hayas puesto la letra 870 00:36:38,389 --> 00:36:39,949 él tiene que verificar 871 00:36:39,949 --> 00:36:41,329 en la palabra en cuanto está 872 00:36:41,329 --> 00:36:43,389 en la posición en que haya visto que está 873 00:36:43,389 --> 00:36:45,090 colocar esa letra en el text field 874 00:36:45,090 --> 00:36:46,170 ¿vale? 875 00:36:47,090 --> 00:36:49,730 bueno, pues os veis capaces de hacerlo 876 00:36:49,730 --> 00:36:50,250 si verdad 877 00:36:50,250 --> 00:36:54,510 tenéis claro lo que habría que hacer 878 00:36:54,510 --> 00:36:55,409 ¿no? que es la clave 879 00:36:55,409 --> 00:36:57,670 pues venga, arrancadlo 880 00:36:57,670 --> 00:36:58,750 a ver hasta donde llegamos 881 00:36:58,750 --> 00:37:01,349 en un rato vamos a ver por donde vamos 882 00:37:01,349 --> 00:37:03,829 venga, no seáis perezosos 883 00:37:03,829 --> 00:37:04,530 ni vagos 884 00:37:04,530 --> 00:37:07,210 ahora 885 00:37:07,210 --> 00:37:11,389 no, no, no, no, HGPT lo queremos 886 00:37:11,389 --> 00:37:13,489 yo solo puedo hablar 887 00:37:13,489 --> 00:37:14,150 con HGPT 888 00:37:14,150 --> 00:37:17,210 porque yo soy vuestra intermediaria 889 00:37:17,210 --> 00:37:18,690 con HGPT 890 00:37:18,690 --> 00:37:22,969 la verdad es que la palabra es imprescindible 891 00:37:22,969 --> 00:37:25,150 entonces, a ver 892 00:37:25,150 --> 00:37:27,309 vamos a, si queréis arrancarlo hasta llegar a la raíz 893 00:37:27,309 --> 00:37:29,110 de texto y luego ya vais siguiendo 894 00:37:29,110 --> 00:37:30,829 vosotros, vale 895 00:37:30,829 --> 00:37:32,329 A ver, se me está hablando sobre la marcha. 896 00:37:32,389 --> 00:37:33,849 Igual lo que yo hago aquí también son borradas. 897 00:37:35,329 --> 00:37:36,929 Vamos a colocar, por ejemplo, 898 00:37:37,949 --> 00:37:39,510 tantos text field como máximo. 899 00:37:40,329 --> 00:37:42,489 A ver, nos vamos a quedar con este array de chat GPT. 900 00:37:42,570 --> 00:37:43,050 ¿Nos ha gustado? 901 00:37:46,369 --> 00:37:48,590 ¿Se lo habéis pedido vosotros y os ha dado el mismo? 902 00:37:49,409 --> 00:37:50,030 No, ¿verdad? 903 00:37:50,809 --> 00:37:52,989 Bueno, pues poned vosotros el que os haya dado vosotros. 904 00:37:53,050 --> 00:37:53,369 Da igual. 905 00:37:54,030 --> 00:37:55,349 Yo voy a copiar el mío. 906 00:37:59,550 --> 00:38:01,630 Venga, yo voy a copiar mi array. 907 00:38:01,630 --> 00:38:04,789 y este array se va a quedar aquí 908 00:38:04,789 --> 00:38:06,989 en una clase 909 00:38:06,989 --> 00:38:08,849 aparte, para no emborronar 910 00:38:08,849 --> 00:38:10,809 esto, para no emborronarlo 911 00:38:10,809 --> 00:38:12,769 voy a ponerlo en una clase aparte 912 00:38:12,769 --> 00:38:14,650 palabras, y ahí pongo las palabras, porque es que 913 00:38:14,650 --> 00:38:16,710 si no, mi frame, mi vista, se queda 914 00:38:16,710 --> 00:38:18,250 ahí con un array horroroso 915 00:38:18,250 --> 00:38:20,849 entonces, vamos a hacer, vais a 916 00:38:20,849 --> 00:38:22,750 hacer una clase aparte 917 00:38:22,750 --> 00:38:23,510 para las palabras 918 00:38:23,510 --> 00:38:27,130 palabras 919 00:38:27,130 --> 00:38:33,219 y en esta clase aparte, palabras 920 00:38:33,219 --> 00:38:35,360 Como variable estática 921 00:38:35,360 --> 00:38:36,239 Está este string 922 00:38:36,239 --> 00:38:38,840 Y ya está 923 00:38:38,840 --> 00:38:40,900 Y yo cuando tenga que acceder a mi array de palabras 924 00:38:40,900 --> 00:38:43,460 Accedo aquí 925 00:38:43,460 --> 00:38:45,719 La verdad es que lo de la tilde 926 00:38:45,719 --> 00:38:47,219 Nos ha jodido un montón 927 00:38:47,219 --> 00:38:48,519 Con perdón 928 00:38:48,519 --> 00:38:50,219 Porque para hacer la comparación 929 00:38:50,219 --> 00:38:52,639 Entonces le voy a decir a hgpt que me las escriba sin tilde 930 00:38:52,639 --> 00:38:55,199 Porque es que luego para comprobar si está 931 00:38:55,199 --> 00:38:55,980 Tienes que ver 932 00:38:55,980 --> 00:38:59,280 No hay un método que te diga si es variable 933 00:38:59,280 --> 00:39:01,900 Es que eso es muy raro 934 00:39:01,900 --> 00:39:07,139 Claro, entonces vamos a decirle a CharGPT 935 00:39:07,139 --> 00:39:18,380 Pero sin las tildes 936 00:39:18,380 --> 00:39:23,039 Venga, pedíselo también vosotros sin las tildes 937 00:39:23,039 --> 00:39:26,639 No ha dicho claro, como siempre 938 00:39:26,639 --> 00:39:28,679 Porque no le gusta nada lo de hacer faltas de ortografía 939 00:39:28,679 --> 00:39:32,860 Vale 940 00:39:32,860 --> 00:39:41,110 Sería capaz, si le digo esto mismo 941 00:39:41,110 --> 00:39:43,969 Pero con palabrotas, sería capaz de pensar en 200 palabrotas 942 00:39:43,969 --> 00:39:48,829 O sea, existen estas palabrotas 943 00:39:48,829 --> 00:39:51,170 Venga, pues esto ya nos ha gustado más 944 00:39:51,170 --> 00:39:52,670 Prueba, prueba 945 00:39:52,670 --> 00:39:53,809 A ver qué te dice 946 00:39:53,809 --> 00:39:57,429 Venga 947 00:39:57,429 --> 00:40:00,469 Este stream ya me gusta más 948 00:40:11,480 --> 00:40:13,179 No nos leas las 200 949 00:40:13,179 --> 00:40:14,380 Por favor 950 00:40:14,380 --> 00:40:17,639 Vale, ahora ya tenemos palabras sin tilde 951 00:40:17,639 --> 00:40:38,800 Y palabras bonitas. Manta, micrófono, auriculares, genial. Vale. Ahora. Que se está grabando, claro que se está grabando. Vale, ahora. 952 00:40:38,800 --> 00:40:42,300 que es lo siguiente 953 00:40:42,300 --> 00:40:46,980 que es lo siguiente que necesitamos 954 00:40:46,980 --> 00:40:48,940 el tamaño de la palabra 955 00:40:48,940 --> 00:40:50,780 más larga, para los 3 fin 956 00:40:50,780 --> 00:40:51,179 dígame 957 00:40:51,179 --> 00:40:58,900 lo puse en una clase aparte como variable estática 958 00:40:58,900 --> 00:41:00,699 para que no esté en la misma 959 00:41:00,699 --> 00:41:02,659 porque es que si no, si tengo que poner todo 960 00:41:02,659 --> 00:41:04,699 esta array en mi aplicación 961 00:41:04,699 --> 00:41:06,420 me queda un código ahí horrible 962 00:41:06,420 --> 00:41:08,579 entonces lo pongo en una clase aparte 963 00:41:08,579 --> 00:41:10,659 como variable estática y accederé a ese string 964 00:41:10,659 --> 00:41:12,239 con palabras.palabras 965 00:41:12,239 --> 00:41:14,099 y ya está, ahora 966 00:41:14,099 --> 00:41:16,500 sería interesante saber 967 00:41:16,500 --> 00:41:17,500 cuál es la más larga 968 00:41:17,500 --> 00:41:20,320 pero pedirse la char gpt 969 00:41:20,320 --> 00:41:22,019 ya es el colmo de la vaguería 970 00:41:22,019 --> 00:41:26,360 a ver, hombre 971 00:41:26,360 --> 00:41:28,539 ¿no haríais rápidamente aquí un código 972 00:41:28,539 --> 00:41:30,300 rapidísimo 973 00:41:30,300 --> 00:41:32,559 para devolver la más 974 00:41:32,559 --> 00:41:33,000 larga? 975 00:41:41,150 --> 00:41:43,329 venga, los que estén flojos 976 00:41:43,329 --> 00:41:44,030 programando 977 00:41:44,030 --> 00:41:45,769 Que aproveche 978 00:41:45,769 --> 00:41:47,429 ¿Cómo harían esto? 979 00:41:51,969 --> 00:41:53,110 Pues la más larga es 980 00:41:53,110 --> 00:41:54,750 Pues ya está, claro, efectivamente 981 00:41:54,750 --> 00:41:56,210 El código de toda la vida 982 00:41:56,210 --> 00:42:03,090 La más larga inicialmente es la primera 983 00:42:03,090 --> 00:42:06,489 Que es palabras de cero 984 00:42:06,489 --> 00:42:08,429 Inicialmente esta es la más larga 985 00:42:08,429 --> 00:42:10,750 Y ahora ya recorremos 986 00:42:10,750 --> 00:42:25,139 no creo que es una fobia 987 00:42:25,139 --> 00:42:26,159 la fobia de las palabras largas 988 00:42:26,159 --> 00:42:27,539 si 989 00:42:27,539 --> 00:42:30,539 palabras de i 990 00:42:30,539 --> 00:42:32,420 punto len 991 00:42:32,420 --> 00:42:34,099 es mayor 992 00:42:34,099 --> 00:42:37,860 que la más larga 993 00:42:37,860 --> 00:42:43,900 entonces 994 00:42:43,900 --> 00:42:45,239 menos i 995 00:42:45,239 --> 00:42:47,320 perdón, menos i, perdón 996 00:42:47,320 --> 00:42:49,960 palabras punto len, Dios mío 997 00:42:49,960 --> 00:42:50,699 supenso 998 00:42:50,699 --> 00:42:52,139 vale 999 00:42:52,139 --> 00:42:54,539 entonces pues ya está 1000 00:42:54,539 --> 00:43:09,579 que más larga 1001 00:43:09,579 --> 00:43:10,539 punto led 1002 00:43:10,539 --> 00:43:14,340 y ahora ya cuando este fuera terminado 1003 00:43:14,340 --> 00:43:18,320 ala todo el mundo 1004 00:43:18,320 --> 00:43:20,300 habría sabido hacer este 1005 00:43:20,300 --> 00:43:22,260 este 1006 00:43:22,260 --> 00:43:23,719 pequeño programita ¿no? 1007 00:43:23,940 --> 00:43:25,539 de la primera evaluación 1008 00:43:25,539 --> 00:43:28,300 se supone que ya esta parte la tenemos 1009 00:43:28,300 --> 00:43:30,019 recuperada. Todo el mundo habría sabido hacer esto, ¿no? 1010 00:43:30,980 --> 00:43:32,239 Vale, vamos a hacernos un main 1011 00:43:32,239 --> 00:43:33,619 rápido para que nos lo diga. 1012 00:43:53,119 --> 00:43:54,320 Venga, vamos a ejecutar 1013 00:43:54,320 --> 00:43:56,440 este main a ver cuál es la más larga de todas. 1014 00:44:00,300 --> 00:44:00,820 La más 1015 00:44:00,820 --> 00:44:02,579 larga de las que ha seleccionado ChadGPT 1016 00:44:02,579 --> 00:44:03,400 es Enciclopedia. 1017 00:44:05,340 --> 00:44:05,980 A ver. 1018 00:44:08,019 --> 00:44:08,639 ¿Cuál es 1019 00:44:08,639 --> 00:44:11,000 la más larga de las 1020 00:44:11,000 --> 00:44:12,480 que me has dicho? 1021 00:44:12,480 --> 00:44:19,360 Electrodoméstico 1022 00:44:19,360 --> 00:44:20,219 Pero no está en la lista 1023 00:44:20,219 --> 00:44:24,699 De las palabras que existen 1024 00:44:24,699 --> 00:44:25,760 Auriculares y micrófono 1025 00:44:25,760 --> 00:44:28,880 Ah, puede ser que enciclopedia 1026 00:44:28,880 --> 00:44:29,920 Tenga más que auriculares 1027 00:44:29,920 --> 00:44:33,239 Vale, bueno, pues ya está 1028 00:44:33,239 --> 00:44:37,900 Pues pídele más 1029 00:44:37,900 --> 00:44:38,699 De hecho enciclopedia 1030 00:44:38,699 --> 00:44:40,059 Tiene una más 1031 00:44:40,059 --> 00:44:43,420 enciclopedia tiene más que auriculares 1032 00:44:43,420 --> 00:44:45,000 no lo sé 1033 00:44:45,000 --> 00:44:49,460 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 y 11 1034 00:44:49,460 --> 00:44:51,099 y enciclopedia 1035 00:44:51,099 --> 00:44:52,840 que está en mi array claramente 1036 00:44:52,840 --> 00:44:55,659 tiene 4, 4 y 4 1037 00:44:55,659 --> 00:44:57,119 bueno pues efectivamente la intuición 1038 00:44:57,119 --> 00:44:57,659 se ha equivocado 1039 00:44:57,659 --> 00:45:00,519 y si lo decimos, pues no es enciclopedia 1040 00:45:00,519 --> 00:45:01,280 a ver que me dice 1041 00:45:01,280 --> 00:45:05,920 pues no, es enciclopedia 1042 00:45:05,920 --> 00:45:12,320 Vale, pues ya está 1043 00:45:12,320 --> 00:45:13,719 Entonces, ¿para qué te pregunto? 1044 00:45:14,659 --> 00:45:16,079 Vale, enciclopedia 1045 00:45:16,079 --> 00:45:16,559 ¿Veis? 1046 00:45:17,440 --> 00:45:19,960 No ha sido casual 1047 00:45:19,960 --> 00:45:21,500 No ha sido casual 1048 00:45:21,500 --> 00:45:27,980 ChatGPT, como bien sabéis, se equivoca muchísimo 1049 00:45:27,980 --> 00:45:28,840 Una barbaridad 1050 00:45:28,840 --> 00:45:30,199 Entonces 1051 00:45:30,199 --> 00:45:31,980 Aquí 1052 00:45:31,980 --> 00:45:35,539 Yo no quería preguntárselo, porque vete a saber 1053 00:45:35,539 --> 00:45:38,159 Siempre que algo lo podéis hacer vosotros 1054 00:45:38,159 --> 00:45:39,320 De forma sencilla, hacedlo 1055 00:45:39,320 --> 00:45:40,440 No confiéis tanto en él 1056 00:45:40,440 --> 00:45:42,900 Bueno, pues ya está 1057 00:45:42,900 --> 00:45:44,579 La más larga es Enciclopedia, que tiene 12 1058 00:45:44,579 --> 00:45:45,820 Pues ya está 1059 00:45:45,820 --> 00:45:48,760 Lo único que queríamos saber era cuál era efectivamente 1060 00:45:48,760 --> 00:45:49,699 La más larga de todas 1061 00:45:49,699 --> 00:45:52,099 Para ahora poner aquí 1062 00:45:52,099 --> 00:45:54,460 En nuestra aplicación 1063 00:45:54,460 --> 00:45:58,659 Tantos textfield 1064 00:45:58,659 --> 00:46:00,340 Como necesitamos 1065 00:46:00,340 --> 00:46:01,800 12, pues ala, venga 1066 00:46:01,800 --> 00:46:04,099 A poner 12 de tamaño 1 1067 00:46:04,099 --> 00:46:06,219 Ala, con paciencia 1068 00:46:06,219 --> 00:46:10,420 Ya tenemos aquí uno 1069 00:46:10,420 --> 00:46:12,780 Hay que poner doce 1070 00:46:12,780 --> 00:46:17,059 Otro 1071 00:46:32,320 --> 00:46:33,440 No lo sé 1072 00:46:33,440 --> 00:46:37,880 Venga 1073 00:46:37,880 --> 00:47:02,630 3, 4, 5, 6, 7, 8 1074 00:47:02,630 --> 00:47:05,730 9 1075 00:47:11,730 --> 00:47:12,489 ¿Cuántas y? 1076 00:47:12,750 --> 00:47:17,530 Yo, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez, once, una. 1077 00:47:20,389 --> 00:47:20,789 ¡Hala! 1078 00:47:22,449 --> 00:47:26,530 Vale, aquí yo sé de uno que va a necesitar un valium. 1079 00:47:27,869 --> 00:47:32,650 Sí, Pablo de la Plaza, hasta que consiga que estén todos simétricamente distribuidas. 1080 00:47:33,289 --> 00:47:37,030 Entonces, a las doce de la noche que él habrá conseguido que estén todas simétricamente distribuidas, 1081 00:47:37,150 --> 00:47:38,530 ya podemos continuar la clase. 1082 00:47:38,530 --> 00:47:40,170 Una que te guste, control-t y control-v. 1083 00:47:40,170 --> 00:47:42,949 Sí, no es tan fácil 1084 00:47:42,949 --> 00:47:43,949 No es tan fácil 1085 00:47:43,949 --> 00:47:46,130 Vale, pues entonces 1086 00:47:46,130 --> 00:47:50,829 Ahora, nos gustaría 1087 00:47:50,829 --> 00:47:52,769 Trabajar con todas estas en modo array 1088 00:47:52,769 --> 00:47:54,389 Para poder 1089 00:47:54,389 --> 00:47:56,389 Habilitar, pues 1090 00:47:56,389 --> 00:47:58,690 Si tengo que habilitar tres, pues recorrer la array 1091 00:47:58,690 --> 00:48:00,550 Hasta tres y habilitar las tres primeras 1092 00:48:00,550 --> 00:48:01,690 Si tengo que 1093 00:48:01,690 --> 00:48:02,690 ¿Qué te pasa? 1094 00:48:03,449 --> 00:48:04,349 Dime, dime, ¿qué pondrías? 1095 00:48:04,349 --> 00:48:06,030 En vez de poner textil para mostrar las palabras 1096 00:48:06,030 --> 00:48:06,969 Podría label 1097 00:48:06,969 --> 00:48:09,730 Y luego lo sustituiría por la letra 1098 00:48:09,730 --> 00:48:14,329 Ah, bueno 1099 00:48:14,329 --> 00:48:18,889 Vale, pero no 1100 00:48:18,889 --> 00:48:21,130 Es que a mí estos agujericos me gustan 1101 00:48:21,130 --> 00:48:23,710 Pero bueno, lo puedes hacer con un label 1102 00:48:23,710 --> 00:48:25,489 Pero a este agujero le puedes poner 1103 00:48:25,489 --> 00:48:27,690 A todos ellos que te aparezca un asterisco 1104 00:48:27,690 --> 00:48:31,349 Bueno, yo con lo que me ha costado ponerlo 1105 00:48:31,349 --> 00:48:33,230 Yo no lo voy a cambiar, pero tú pon lo que quieras 1106 00:48:33,230 --> 00:48:35,730 ¿Vale? Entonces estaría bien 1107 00:48:35,730 --> 00:48:37,050 Si nos pudiéramos poner un array 1108 00:48:37,050 --> 00:48:39,789 vámonos al código fuente 1109 00:48:39,789 --> 00:48:43,710 el código, a ver 1110 00:48:43,710 --> 00:48:43,929 para 1111 00:48:43,929 --> 00:48:47,769 fijaos 1112 00:48:47,769 --> 00:48:48,670 que horrible esto 1113 00:48:48,670 --> 00:48:49,710 vale 1114 00:48:49,710 --> 00:48:55,730 entonces, aquí lo ideal sería 1115 00:48:55,730 --> 00:48:56,570 meterlo en un array 1116 00:48:56,570 --> 00:48:59,670 y ahora, habría que ir a cada una 1117 00:48:59,670 --> 00:49:01,489 de estas y cuando estés bien, sustituirlo 1118 00:49:01,489 --> 00:49:03,090 por la T1 1119 00:49:03,090 --> 00:49:04,949 la T0, la T1, vale 1120 00:49:04,949 --> 00:49:07,710 bueno, todo el mundo está situado 1121 00:49:07,710 --> 00:49:11,469 a ver, ahora querríamos 1122 00:49:11,469 --> 00:49:13,670 sustituir todo esto 1123 00:49:13,670 --> 00:49:14,789 por un array, ¿verdad? 1124 00:49:15,329 --> 00:49:15,969 por un array 1125 00:49:15,969 --> 00:49:19,170 bueno, porque yo he añadido 12 1126 00:49:19,170 --> 00:49:20,210 pues me aparecen 12 1127 00:49:20,210 --> 00:49:23,650 no, no, no 1128 00:49:23,650 --> 00:49:24,510 no te disculpo 1129 00:49:24,510 --> 00:49:26,690 las cosas no son tan fáciles 1130 00:49:26,690 --> 00:49:29,469 en la vida no es así todo 1131 00:49:29,469 --> 00:49:31,010 perdóname, ya estás perdonado 1132 00:49:31,010 --> 00:49:32,949 letras 1133 00:49:32,949 --> 00:49:33,909 venga 1134 00:49:33,909 --> 00:49:36,889 new 1135 00:49:36,889 --> 00:49:37,690 j 1136 00:49:37,690 --> 00:49:40,929 text 1137 00:49:40,929 --> 00:49:41,909 field 1138 00:49:41,909 --> 00:49:46,500 de 12 1139 00:49:46,500 --> 00:49:50,619 vale, pues entonces 1140 00:49:50,619 --> 00:49:52,840 ¿hay que meter 1141 00:49:52,840 --> 00:49:53,360 todo eso? 1142 00:49:54,360 --> 00:49:56,420 no, hay que meterlos no, ahora hay que instanciarlos 1143 00:49:56,420 --> 00:49:58,420 pero eso es fácil, y luego, que ahora 1144 00:49:58,420 --> 00:50:00,460 sí que viene lo jodido, es 1145 00:50:00,460 --> 00:50:02,619 sustituir, no, bueno, no es tan difícil 1146 00:50:02,619 --> 00:50:03,960 porque lo podemos hacer con un 1147 00:50:03,960 --> 00:50:06,559 sustituir cada operación de textfield 1148 00:50:06,559 --> 00:50:08,739 por letras 0, cada aparición 1149 00:50:08,739 --> 00:50:10,280 de textfield 1 por letras 1 1150 00:50:10,280 --> 00:50:12,719 ¿vale? que no es tantas veces 1151 00:50:12,719 --> 00:50:14,699 porque es solamente cuando se pone el código 1152 00:50:14,699 --> 00:50:16,619 no es tan complicado, pero primero 1153 00:50:16,619 --> 00:50:18,460 vamos a hacer el 1154 00:50:18,460 --> 00:50:20,119 for para instanciarlo 1155 00:50:20,119 --> 00:50:22,519 dentro de mi app, vamos a hacer primero un for 1156 00:50:22,519 --> 00:50:23,820 para instanciar cada textfield 1157 00:50:23,820 --> 00:50:26,659 pues venga, vamos a recorrernos 1158 00:50:26,659 --> 00:50:28,519 para cada 1159 00:50:28,519 --> 00:50:30,840 cuidado con el for each, estamos instanciando 1160 00:50:30,840 --> 00:50:32,300 nunca jamás lo haríamos con un for each 1161 00:50:32,300 --> 00:50:33,380 con un for de índice 1162 00:50:33,380 --> 00:50:36,860 Está claro eso, ¿no? 1163 00:50:45,250 --> 00:50:46,190 Pues, ¿qué hacemos? 1164 00:50:47,429 --> 00:50:48,349 Ahora, ¿qué está pasando? 1165 00:50:48,469 --> 00:50:50,489 Que estamos instanciando todos y cada uno 1166 00:50:50,489 --> 00:50:51,670 de los text field de mi array. 1167 00:51:01,639 --> 00:51:03,320 Y lo ponemos con tamaño 1. 1168 00:51:03,840 --> 00:51:05,360 Lo ponemos con tamaño 1. 1169 00:51:05,780 --> 00:51:07,880 Uy, perdón, que le he puesto corchetes, paréntesis. 1170 00:51:09,460 --> 00:51:11,320 Ya están instanciados. 1171 00:51:11,739 --> 00:51:13,500 Ya tenemos letras 0, letras 1, letras 2. 1172 00:51:13,960 --> 00:51:15,000 Y ahora hay que colocarlos. 1173 00:51:15,000 --> 00:51:17,179 Vale, pues ya está 1174 00:51:17,179 --> 00:51:19,639 Donde estaba textfield, ponemos letras 0 1175 00:51:19,639 --> 00:51:22,159 Donde estaba textfield 1, letras 1 1176 00:51:22,159 --> 00:51:24,539 Donde estaba textfield 2, letras 2 1177 00:51:24,539 --> 00:51:25,280 Y así todo el rato 1178 00:51:25,280 --> 00:51:30,239 Bueno, porque este constructor 1179 00:51:30,239 --> 00:51:31,820 Si tú le das un parámetro 1180 00:51:31,820 --> 00:51:33,760 Lo que te fijas es el tamaño de ese textfield 1181 00:51:33,760 --> 00:51:35,480 Como solo va a haber una letra, pues le pongo 1 1182 00:51:35,480 --> 00:51:36,400 Para que solo quepa una letra 1183 00:51:36,400 --> 00:51:38,840 Y ahora, vamos a sustituir 1184 00:51:38,840 --> 00:51:41,340 Cada aparición de textfield 1185 00:51:41,340 --> 00:51:43,159 Esto 1186 00:51:43,159 --> 00:51:44,139 Refactor 1187 00:51:44,139 --> 00:51:45,880 rename 1188 00:51:45,880 --> 00:51:47,980 y luego la quitamos. 1189 00:51:48,059 --> 00:51:49,280 La vamos a llamar letras cero. 1190 00:51:50,440 --> 00:51:51,820 A ver si... 1191 00:51:51,820 --> 00:51:55,380 Letras cero. 1192 00:51:55,440 --> 00:51:58,099 A ver si me deja... 1193 00:51:58,099 --> 00:51:59,579 Claro, no me lo deja porque 1194 00:51:59,579 --> 00:52:01,320 no es un identificador válido. 1195 00:52:01,320 --> 00:52:01,760 Pues claro. 1196 00:52:03,599 --> 00:52:05,420 Yo no puedo declarar una variable así. 1197 00:52:05,519 --> 00:52:05,960 No me deja. 1198 00:52:06,880 --> 00:52:08,780 No pasa nada. Vamos a mano. 1199 00:52:08,880 --> 00:52:09,420 Sí son tres. 1200 00:52:09,420 --> 00:52:16,820 O sea, son estas cuatro solo 1201 00:52:16,820 --> 00:52:19,519 Pues aquí en estas cuatro hay que poner letras cero 1202 00:52:19,519 --> 00:52:20,019 Y ya está 1203 00:52:20,019 --> 00:52:21,400 Pues venga 1204 00:52:21,400 --> 00:52:25,820 Letras cero 1205 00:52:25,820 --> 00:52:31,519 Y ahora este letras cero 1206 00:52:31,519 --> 00:52:33,840 Seguramente hay una forma más eficiente de hacerlo 1207 00:52:33,840 --> 00:52:34,920 Pero vosotros que 1208 00:52:34,920 --> 00:52:37,280 Sois los que os gustan 1209 00:52:37,280 --> 00:52:39,679 Los atajos 1210 00:52:39,679 --> 00:52:41,260 Pues lo ponéis en práctica 1211 00:52:41,260 --> 00:52:42,679 Letras 0 y ya está 1212 00:52:42,679 --> 00:52:44,340 Vamos con letras 1 1213 00:52:44,340 --> 00:52:49,099 No pasa nada, tú puedes 1214 00:52:49,099 --> 00:52:51,639 Letras 1, vamos con letras 1 1215 00:52:51,639 --> 00:52:58,380 Que no, hombre, que no 1216 00:52:58,380 --> 00:53:01,599 Que hasta yo que voy en plan a lo lento 1217 00:53:01,599 --> 00:53:06,159 Vamos a ver 1218 00:53:06,159 --> 00:53:10,469 No sé cómo referíais 1219 00:53:10,469 --> 00:53:11,050 Pero a mí no me lo han hecho 1220 00:53:11,050 --> 00:53:15,969 Pero te admite 1221 00:53:15,969 --> 00:53:16,969 un... 1222 00:53:16,969 --> 00:53:19,250 No, es que no te lo admite porque no es un identificador válido. 1223 00:53:19,309 --> 00:53:20,349 Con corchetes no es válido. 1224 00:53:21,050 --> 00:53:23,070 Tiene que ser un nombre de variable válido, identificador. 1225 00:53:25,289 --> 00:53:26,190 Esto es mejor 1226 00:53:26,190 --> 00:53:28,829 yendo como editor de texto 1227 00:53:28,829 --> 00:53:29,789 un sustituir. 1228 00:53:30,469 --> 00:53:32,590 Usando esto como un editor de texto, sin más. 1229 00:53:32,710 --> 00:53:34,949 Lo copias a un blog de notas, lo usas como editor de texto 1230 00:53:34,949 --> 00:53:35,710 y lo vuelves a pegar. 1231 00:53:36,610 --> 00:53:38,630 Claro, y seguramente este propio editor 1232 00:53:38,630 --> 00:53:40,809 tenga también un sustituir que no esté asociado 1233 00:53:40,809 --> 00:53:41,889 al refactor a lo mejor 1234 00:53:41,889 --> 00:53:43,429 entonces 1235 00:53:43,429 --> 00:53:48,809 pero bueno, que ya llevamos 4 1236 00:53:48,809 --> 00:53:50,570 tampoco es tanto 1237 00:54:04,809 --> 00:54:05,989 letras 4 1238 00:54:05,989 --> 00:54:13,110 Vamos a ver qué pasa 1239 00:54:13,110 --> 00:54:15,809 Porque el builder nos da un poco igual 1240 00:54:15,809 --> 00:54:16,269 En realidad 1241 00:54:16,269 --> 00:54:18,210 Es solamente para construir 1242 00:54:18,210 --> 00:54:22,070 Si luego no nos aparece la pestaña de diseño 1243 00:54:22,070 --> 00:54:23,809 Porque no le gusta el nombre de identificador que hemos puesto 1244 00:54:23,809 --> 00:54:25,389 Pues que le den por saco 1245 00:54:25,389 --> 00:54:31,050 No sé 1246 00:54:31,050 --> 00:54:33,469 Tiene sentido que se vuelva loco 1247 00:54:33,469 --> 00:54:34,769 Y esa parte no nos la quiera mostrar 1248 00:54:34,769 --> 00:54:36,570 porque ese identificador no se ha válido para ella. 1249 00:55:04,539 --> 00:55:06,159 Sí, se hace un poco pesado, la verdad. 1250 00:55:08,739 --> 00:55:21,389 el que de arriba, los de arriba hay que quitarlos directamente 1251 00:55:21,389 --> 00:55:26,980 letras 1252 00:55:26,980 --> 00:55:31,739 la verdad es que si la palabra más larga hubiera sido más corta 1253 00:55:31,739 --> 00:55:34,519 pues habría sido todo más sencillo 1254 00:55:34,519 --> 00:55:39,000 pero esto es una prueba de fuego para vuestra 1255 00:55:39,000 --> 00:55:43,019 eso, para claro 1256 00:55:43,019 --> 00:55:47,500 para cuando tengáis que hacer algo 1257 00:55:47,500 --> 00:55:49,539 Absolutamente infumable y aburridísimo 1258 00:55:49,539 --> 00:55:55,880 Sí, sí, sí 1259 00:55:55,880 --> 00:55:57,619 Como te habías que hacer una migración 1260 00:55:57,619 --> 00:55:58,420 La has cagado 1261 00:55:58,420 --> 00:56:09,780 Eso nos pasa por improvisar 1262 00:56:09,780 --> 00:56:10,159 Venga 1263 00:56:10,159 --> 00:56:12,219 Letras 10 1264 00:56:12,219 --> 00:56:14,619 Ya casi, ya casi 1265 00:56:14,619 --> 00:56:16,059 Letras 11 es la última 1266 00:56:16,059 --> 00:56:24,199 pero a ver, vosotros que 1267 00:56:24,199 --> 00:56:26,599 sabéis hacer esos atajos 1268 00:56:26,599 --> 00:56:28,000 de que te seleccionan hasta el final 1269 00:56:28,000 --> 00:56:28,860 y esas cosas 1270 00:56:28,860 --> 00:56:35,199 han nacido mayor ya 1271 00:56:35,199 --> 00:56:36,300 tú naciste viejo 1272 00:56:46,059 --> 00:56:52,579 venga, a ver, lo que estamos es en una situación muy real 1273 00:56:52,579 --> 00:56:54,500 te han pedido hacer algo, lo estamos haciendo 1274 00:56:54,500 --> 00:56:56,800 sobre la marcha, a ver cómo vamos resolviendo 1275 00:56:56,800 --> 00:56:58,599 ala, ya tenemos 1276 00:56:58,599 --> 00:57:00,460 todos los textfield 1277 00:57:00,460 --> 00:57:02,039 y esto a la porra 1278 00:57:02,039 --> 00:57:04,920 hombre, claro 1279 00:57:04,920 --> 00:57:09,119 todo esto fuera, ya tenemos 10 letras 1280 00:57:09,119 --> 00:57:10,559 colocadas 1281 00:57:10,559 --> 00:57:12,000 en su sitio correspondiente 1282 00:57:12,000 --> 00:57:14,519 y ahora 1283 00:57:14,519 --> 00:57:16,639 Eso es que me está dando miedo, por eso estoy posponiendo 1284 00:57:16,639 --> 00:57:17,159 Un momento 1285 00:57:17,159 --> 00:57:20,679 ¿Ves? No las reconoce 1286 00:57:20,679 --> 00:57:21,920 No variable, no variable, no variable 1287 00:57:21,920 --> 00:57:22,900 Nos da lo mismo 1288 00:57:22,900 --> 00:57:25,139 Pero es que nos da igual 1289 00:57:25,139 --> 00:57:27,920 Sí, pero 1290 00:57:27,920 --> 00:57:30,260 No las veo, pero que me da igual 1291 00:57:30,260 --> 00:57:32,519 Que me aparezcan o no, si yo esto es para construir la interfaz 1292 00:57:32,519 --> 00:57:34,019 Ahora tengo que añadir el 1293 00:57:34,019 --> 00:57:35,780 Colocar el botoncito 1294 00:57:35,780 --> 00:57:38,039 Para que el usuario introduzca el texto 1295 00:57:38,039 --> 00:57:39,460 Que estas se vean o no aquí 1296 00:57:39,460 --> 00:57:40,480 Me da lo mismo 1297 00:57:40,480 --> 00:57:43,619 Bueno, ¿qué? ¿Cómo vais? 1298 00:57:43,619 --> 00:57:45,519 Amigos míos, ¿ya habéis terminado? 1299 00:58:00,519 --> 00:58:07,119 Lo que sí que estaría bien que comprobáramos, vamos a ejecutar la aplicación a ver si se ven los desfiles bien y están bien colocados, claro. 1300 00:58:07,119 --> 00:58:14,260 aquí están, mirad que array tan bonito 1301 00:58:14,260 --> 00:58:14,920 de textfield 1302 00:58:14,920 --> 00:58:20,519 magnífico 1303 00:58:20,519 --> 00:58:23,900 les voy a poner un asterisco 1304 00:58:23,900 --> 00:58:25,480 mientras vosotros 1305 00:58:25,480 --> 00:58:27,059 acabáis que sois lentitos 1306 00:58:27,059 --> 00:58:28,500 si 1307 00:58:28,500 --> 00:58:33,400 en el momento del array 1308 00:58:33,400 --> 00:58:35,500 le voy a poner que ponga un asterisco 1309 00:58:35,500 --> 00:58:36,380 para que 1310 00:58:36,380 --> 00:58:42,920 Letras de 1311 00:58:42,920 --> 00:58:44,539 Punto 1312 00:58:44,539 --> 00:58:45,840 Sextest 1313 00:58:45,840 --> 00:58:48,559 Asterisco 1314 00:58:48,559 --> 00:58:54,500 ¿Por qué no me pone asterisco? 1315 00:58:55,159 --> 00:58:56,360 Sextest asterisco 1316 00:58:56,360 --> 00:58:57,360 Letras de i 1317 00:58:57,360 --> 00:59:01,199 Ah, no, letras de i es el textfield 1318 00:59:01,199 --> 00:59:04,019 Un nuevo jtxtfield 1319 00:59:04,019 --> 00:59:05,320 ¿Y por qué no me pone el asterisco? 1320 00:59:05,519 --> 00:59:06,159 Sextest 1321 00:59:06,159 --> 00:59:10,730 Añadir 1322 00:59:10,730 --> 00:59:14,230 ¿Por qué no aparece el asterisco? 1323 00:59:20,289 --> 00:59:22,010 A ver, no estoy en la pestaña de diseño 1324 00:59:22,010 --> 00:59:22,869 En diseño no aparece 1325 00:59:22,869 --> 00:59:24,250 Pero es que se me da igual 1326 00:59:24,250 --> 00:59:26,150 La que me importa es mi aplicación 1327 00:59:26,150 --> 00:59:27,989 Esto es una ayuda para colocar 1328 00:59:27,989 --> 00:59:29,409 Pero no en la vida 1329 00:59:29,409 --> 00:59:31,630 Yo lo ejecuto 1330 00:59:31,630 --> 00:59:33,730 Lo que no entiendo es por qué no me los ha puesto 1331 00:59:33,730 --> 00:59:34,650 Con un asterisco ahí 1332 00:59:34,650 --> 00:59:47,190 No sé, ¿por qué no me pone el asterisco? 1333 00:59:50,429 --> 00:59:51,530 Ni el guión tampoco 1334 00:59:51,530 --> 00:59:57,170 Bueno, vale 1335 00:59:57,170 --> 00:59:57,989 ¿Estamos ya? 1336 00:59:57,989 --> 01:00:06,659 El array de las letras 1337 01:00:06,659 --> 01:00:08,219 Está en otra clase aparte 1338 01:00:08,219 --> 01:00:12,119 Ah, está como variable de la clase. 1339 01:00:12,340 --> 01:00:13,460 Es un array de TextField. 1340 01:00:14,400 --> 01:00:14,719 Este. 1341 01:00:17,800 --> 01:00:19,280 Tiene sus 12... 1342 01:00:23,719 --> 01:00:26,320 Esto es un array para tener 12 TextField. 1343 01:00:26,820 --> 01:00:29,019 Luego ya, cuando ya he entrado en mi aplicación, 1344 01:00:29,119 --> 01:00:29,739 en mi constructor, 1345 01:00:30,059 --> 01:00:32,840 he recorrido el array para instanciar los TextField. 1346 01:00:32,840 --> 01:00:35,840 Y ahora ya los he ido colocando en el... 1347 01:00:37,360 --> 01:00:38,760 Y ya está. 1348 01:00:38,760 --> 01:00:42,199 vale, pues nos vamos a 1349 01:00:42,199 --> 01:00:44,300 entonces verificamos ejecutando esto 1350 01:00:44,300 --> 01:00:46,179 que efectivamente están aquí mis 12 textfield 1351 01:00:46,179 --> 01:00:48,179 ahora con este truquito 1352 01:00:48,179 --> 01:00:50,559 tan tonto hemos conseguido ahora poder manejarlos 1353 01:00:50,559 --> 01:00:52,159 todos de golpe, con un array 1354 01:00:52,159 --> 01:00:54,539 recorrer, no que si estaban sueltos era un rollo 1355 01:00:54,539 --> 01:00:56,480 bueno, pues entonces 1356 01:00:56,480 --> 01:00:57,780 ¿qué más le falta a esta interfaz? 1357 01:00:58,619 --> 01:01:00,559 un área de texto para que el usuario 1358 01:01:00,559 --> 01:01:01,840 ponga la letra 1359 01:01:01,840 --> 01:01:04,219 con la que quiere probar, pues un área de texto 1360 01:01:04,219 --> 01:01:05,940 vámonos a diseño 1361 01:01:05,940 --> 01:01:08,719 y ese área de texto 1362 01:01:08,719 --> 01:01:11,059 se la vamos a poner aquí abajo por ejemplo 1363 01:01:11,059 --> 01:01:14,579 vale 1364 01:01:14,579 --> 01:01:16,900 vamos a llamarla 1365 01:01:16,900 --> 01:01:18,440 letra usuario por ejemplo 1366 01:01:18,440 --> 01:01:19,980 usuario 1367 01:01:19,980 --> 01:01:23,039 un poco más pequeñita 1368 01:01:23,039 --> 01:01:26,559 ahí letra usuario 1369 01:01:26,559 --> 01:01:30,900 y vamos a poner una etiqueta arriba que ponga 1370 01:01:30,900 --> 01:01:32,159 introduzca letra y ya está 1371 01:01:32,159 --> 01:01:35,340 vamos a poner una etiquetita 1372 01:01:35,340 --> 01:01:45,250 una etiqueta 1373 01:01:45,250 --> 01:01:46,210 con el texto 1374 01:01:46,210 --> 01:01:49,980 pruebe letra 1375 01:01:49,980 --> 01:01:59,940 vale, pues si ejecuto 1376 01:01:59,940 --> 01:02:01,300 vale, prueba letra 1377 01:02:01,300 --> 01:02:02,960 bueno, un poco feo pero da igual 1378 01:02:02,960 --> 01:02:07,079 entonces inicialmente estaría bien 1379 01:02:07,079 --> 01:02:09,139 hacer lo que esto fuera visible false 1380 01:02:09,139 --> 01:02:11,480 y que se hiciera visible true 1381 01:02:11,480 --> 01:02:13,239 cuando ya le hemos dado a jugar 1382 01:02:13,239 --> 01:02:14,239 y se ha seleccionado la palabra 1383 01:02:14,239 --> 01:02:16,539 vale 1384 01:02:16,539 --> 01:02:19,179 entonces desde el código 1385 01:02:19,179 --> 01:02:21,199 del prueba letra pues vamos a hacerle 1386 01:02:21,199 --> 01:02:22,900 aquí un set visible false 1387 01:02:22,900 --> 01:02:29,030 a la label new label 1388 01:02:29,030 --> 01:02:29,429 esta 1389 01:02:29,429 --> 01:02:37,619 un set visible 1390 01:02:37,619 --> 01:02:40,559 falso para que no me aparezca de partida 1391 01:02:40,559 --> 01:02:42,300 solo me aparezca cuando ya 1392 01:02:42,300 --> 01:02:44,219 he dado a jugar y también 1393 01:02:44,219 --> 01:02:45,940 un set visible falso de este 1394 01:02:45,940 --> 01:02:52,519 de este también un set visible falso 1395 01:02:52,519 --> 01:02:58,039 ahora ya cuando 1396 01:02:58,039 --> 01:02:59,480 arranquemos no lo vemos 1397 01:02:59,480 --> 01:03:02,059 y cuando le demos a jugar cuando hayamos hecho 1398 01:03:02,059 --> 01:03:03,840 el evento ya se aparecerá 1399 01:03:03,840 --> 01:03:05,219 está pero no está visible 1400 01:03:05,219 --> 01:03:07,500 Lo he puesto como no visible 1401 01:03:07,500 --> 01:03:10,079 Hasta que no se haya dado al botón de jugar 1402 01:03:10,079 --> 01:03:13,699 Bueno, pues nos va a hacer falta algo más 1403 01:03:13,699 --> 01:03:15,139 En la interfaz 1404 01:03:15,139 --> 01:03:17,119 No, no, jugar 1405 01:03:17,119 --> 01:03:18,980 Aparecerán tantos huequitos 1406 01:03:18,980 --> 01:03:20,659 Como letras tenga la palabra 1407 01:03:20,659 --> 01:03:23,059 Pruebe letra, damos letra 1408 01:03:23,059 --> 01:03:27,980 Y no necesita nada más en la interfaz gráfica 1409 01:03:27,980 --> 01:03:28,800 Este juego, ¿verdad? 1410 01:03:29,260 --> 01:03:31,880 El usuario pondrá letra, le aparecerán en los textfield 1411 01:03:31,880 --> 01:03:35,960 y cuando ya tenga la palabra completa 1412 01:03:35,960 --> 01:03:37,360 pues que le aparezca un 1413 01:03:37,360 --> 01:03:42,280 habría que añadir 1414 01:03:42,280 --> 01:03:44,460 entonces 1415 01:03:44,460 --> 01:03:47,880 de la interfaz ya no hay nada más que añadir 1416 01:03:47,880 --> 01:03:49,320 ya está, no hay nada más que poner 1417 01:03:49,320 --> 01:03:51,840 ahora, lo que tenéis que hacer 1418 01:03:51,840 --> 01:03:53,840 vosotros ahora, es añadirle 1419 01:03:53,840 --> 01:03:54,500 el comportamiento 1420 01:03:54,500 --> 01:03:57,760 vale, pues a ver, el botón 1421 01:03:57,760 --> 01:03:59,980 jugar, cuando se dé 1422 01:03:59,980 --> 01:04:02,219 al botón jugar. ¿Cómo responder 1423 01:04:02,219 --> 01:04:04,480 a ese clic? Seleccionando 1424 01:04:04,480 --> 01:04:05,820 aleatoriamente una palabra 1425 01:04:05,820 --> 01:04:08,039 de la bolsa de palabras. 1426 01:04:09,739 --> 01:04:10,420 Mirando 1427 01:04:10,420 --> 01:04:12,340 cuántos caracteres tiene y haciendo 1428 01:04:12,340 --> 01:04:13,119 visibles 1429 01:04:13,119 --> 01:04:15,980 tantos que inicialmente estarán 1430 01:04:15,980 --> 01:04:16,900 sin ser visibles. 1431 01:04:18,079 --> 01:04:20,719 Haciendo visibles tantos 1432 01:04:20,719 --> 01:04:22,260 textfield como sean necesarios 1433 01:04:22,260 --> 01:04:24,260 para la palabra. Entonces, yo ahora mismo 1434 01:04:24,260 --> 01:04:26,179 lo tengo puesto para que siempre 1435 01:04:26,179 --> 01:04:28,139 sean visibles 12. No, tendríamos que hacerlos 1436 01:04:28,139 --> 01:04:29,599 invisibles. Entonces, 1437 01:04:29,980 --> 01:04:32,800 no porque es un for 1438 01:04:32,800 --> 01:04:35,159 ventajas del for 1439 01:04:35,159 --> 01:04:36,840 entonces 1440 01:04:36,840 --> 01:04:39,239 ahora podemos poner 1441 01:04:39,239 --> 01:04:39,840 aquí 1442 01:04:39,840 --> 01:04:45,690 para cada j text 1443 01:04:45,690 --> 01:04:46,789 fill 1444 01:04:46,789 --> 01:04:51,150 text fill en letras 1445 01:04:51,150 --> 01:04:53,909 que hacemos 1446 01:04:53,909 --> 01:04:56,750 text fill punto set 1447 01:04:56,750 --> 01:04:57,630 visible 1448 01:04:57,630 --> 01:04:59,489 set visible 1449 01:04:59,489 --> 01:05:01,429 false para que arranque 1450 01:05:01,429 --> 01:05:02,369 sin que tu lo veas 1451 01:05:02,369 --> 01:05:05,170 ¿vale? o sea 1452 01:05:05,170 --> 01:05:06,710 esto arranca 1453 01:05:06,710 --> 01:05:13,150 sí, sí, sí, yo de hecho 1454 01:05:13,150 --> 01:05:15,469 lo tengo para que cuando arranca mi aplicación 1455 01:05:15,469 --> 01:05:16,389 solo se vea el botón jugar 1456 01:05:16,389 --> 01:05:18,849 entonces, cuando uno vea el botón jugar 1457 01:05:18,849 --> 01:05:21,650 ¿qué tendrá que ocurrir cuando uno vea el botón jugar? 1458 01:05:22,650 --> 01:05:23,349 habrá que 1459 01:05:23,349 --> 01:05:25,289 seleccionar aleatoriamente una palabra 1460 01:05:25,289 --> 01:05:27,329 de la bolsa de palabras 1461 01:05:27,329 --> 01:05:29,630 contar cuantos caracteres tiene 1462 01:05:29,630 --> 01:05:31,250 hacer visibles 1463 01:05:31,250 --> 01:05:33,969 tantos textfields de estos que están aquí ocultos 1464 01:05:33,969 --> 01:05:35,269 como sean necesarios 1465 01:05:35,269 --> 01:05:37,309 para cubrir la palabra. 1466 01:05:37,909 --> 01:05:39,869 Hacer visible la etiqueta y el textfield 1467 01:05:39,869 --> 01:05:40,590 para el usuario. 1468 01:05:42,050 --> 01:05:43,010 Y ya está. 1469 01:05:43,889 --> 01:05:45,849 Nada más. Eso es lo único que habrá 1470 01:05:45,849 --> 01:05:47,409 que hacer cuando sea el botón jugar. 1471 01:05:48,530 --> 01:05:49,789 ¿Qué otro componente 1472 01:05:49,789 --> 01:05:51,010 tiene que responder con evento? 1473 01:05:51,349 --> 01:05:53,949 El del enter del usuario, el textfield este. 1474 01:05:54,389 --> 01:05:54,590 ¿Vale? 1475 01:05:57,039 --> 01:05:59,380 Este de aquí. Ese también tendrá 1476 01:05:59,380 --> 01:06:01,019 que tener un evento. Este de aquí abajo. 1477 01:06:01,019 --> 01:06:02,940 ¿Cuál será el evento de este? 1478 01:06:03,059 --> 01:06:04,219 Pues cuando el usuario del enter 1479 01:06:04,219 --> 01:06:06,719 Que tendrá que hacer la aplicación 1480 01:06:06,719 --> 01:06:08,440 Coger la letra que hay ahí 1481 01:06:08,440 --> 01:06:11,099 En la palabra que tiene aleatoriamente seleccionada 1482 01:06:11,099 --> 01:06:13,559 Mirar en qué posiciones está la letra 1483 01:06:13,559 --> 01:06:15,539 En las que haya encontrado que está 1484 01:06:15,539 --> 01:06:17,219 Colocar esa letra 1485 01:06:17,219 --> 01:06:18,559 En el text field correspondiente 1486 01:06:18,559 --> 01:06:19,780 Y ya está 1487 01:06:19,780 --> 01:06:22,760 Y contar el intento 1488 01:06:22,760 --> 01:06:24,860 Porque vamos a hacerlo con un contador de intentos 1489 01:06:24,860 --> 01:06:25,960 Lo vamos a dejar hasta el infinito 1490 01:06:25,960 --> 01:06:28,039 Le vamos a decir 5 intentos 1491 01:06:28,039 --> 01:06:30,480 Entonces incorporar un contador de intentos 1492 01:06:30,480 --> 01:06:31,679 Eso es lo que tendrá que hacer el ente 1493 01:06:31,679 --> 01:06:34,340 Coger la letra, verificar en qué posición está 1494 01:06:34,340 --> 01:06:36,880 En las que esté, colocarla en el textfield 1495 01:06:36,880 --> 01:06:38,639 Y contar el intento 1496 01:06:38,639 --> 01:06:41,639 Si se ha pasado de intentos 1497 01:06:41,639 --> 01:06:42,679 Parar el juego 1498 01:06:42,679 --> 01:06:43,460 Y decir se acabó 1499 01:06:43,460 --> 01:06:45,360 Si se ha parado de intentos, decirle se acabó 1500 01:06:45,360 --> 01:06:47,760 Y si no se ha pasado de intentos 1501 01:06:47,760 --> 01:06:48,719 No tiene que hacer nada más 1502 01:06:48,719 --> 01:06:51,599 Bueno, en el caso de que haya completado ya todos los textfield 1503 01:06:51,599 --> 01:06:53,519 Tiene que avisar, has ganado, la palabra era esta 1504 01:06:53,519 --> 01:06:56,739 Eso, efectivamente 1505 01:06:56,739 --> 01:07:00,860 Venga 1506 01:07:00,860 --> 01:07:06,159 Vale, pues ese es el enter de aquí 1507 01:07:06,159 --> 01:07:08,219 Luego lo único que tenéis que hacer ahora vosotros 1508 01:07:08,219 --> 01:07:10,340 Es el evento del botoncito jugar 1509 01:07:10,340 --> 01:07:11,840 Que es el más sencillo 1510 01:07:11,840 --> 01:07:13,280 Y el evento de este de aquí 1511 01:07:13,280 --> 01:07:14,940 Y ya se acabó el ahorcado 1512 01:07:14,940 --> 01:07:20,630 Elige lo que tú quieras 1513 01:07:20,630 --> 01:07:22,670 Pues venga