1 00:00:00,880 --> 00:00:06,500 Vale, pues para ver, a ver, para el que esté un pelinín perdido sobre ese ejercicio. 2 00:00:08,500 --> 00:00:16,699 Cuando lo hicimos, lógicamente lo que primero hay que tener claro es lo que uno quiere conseguir, ¿vale? 3 00:00:18,500 --> 00:00:20,440 ¿Cuál es la vista que tiene que ver el usuario? 4 00:00:21,440 --> 00:00:26,519 Entonces, el usuario lo que tiene que ver es un botoncito de jugar, está claro, 5 00:00:26,519 --> 00:00:28,500 y además tiene que haber 6 00:00:28,500 --> 00:00:31,079 tantos text fill pequeñitos 7 00:00:31,079 --> 00:00:32,679 para que quepa una letra 8 00:00:32,679 --> 00:00:36,539 como letras sean necesarias 9 00:00:36,539 --> 00:00:37,600 como máximo 10 00:00:37,600 --> 00:00:40,640 a ver si acertamos aquí una de 12 11 00:00:40,640 --> 00:00:41,719 no es que hay pocas de 12 12 00:00:41,719 --> 00:00:45,060 vale, y luego aquí el text fill 13 00:00:45,060 --> 00:00:46,880 para poner la letra 14 00:00:46,880 --> 00:00:48,079 esto es lo que tiene que aparecer 15 00:00:48,079 --> 00:00:50,039 pero lo que dijimos es 16 00:00:50,039 --> 00:00:52,340 bueno, vamos a colocar esto 17 00:00:52,340 --> 00:00:55,219 en la interfaz gráfica, colocar esto es sencillo 18 00:00:55,219 --> 00:00:56,399 pero 19 00:00:56,399 --> 00:00:59,259 como text field 20 00:00:59,259 --> 00:01:00,299 ¿cuántos tienen que aparecer? 21 00:01:01,100 --> 00:01:02,600 seleccionamos que como mucho 12 22 00:01:02,600 --> 00:01:04,819 porque en nuestro conjunto de palabras 23 00:01:04,819 --> 00:01:06,879 la más larga tenía 12, es lo que dijimos 24 00:01:06,879 --> 00:01:09,000 pues entonces vamos a hacernos 25 00:01:09,000 --> 00:01:10,120 12 text field 26 00:01:10,120 --> 00:01:13,519 y según le demos al botón de jugar 27 00:01:13,519 --> 00:01:14,939 como es en ese momento 28 00:01:14,939 --> 00:01:16,659 en el que se crea la palabra aleatoria 29 00:01:16,659 --> 00:01:19,200 pues en ese momento contamos 30 00:01:19,200 --> 00:01:21,280 cuántos caracteres tiene esa palabra aleatoria 31 00:01:21,280 --> 00:01:22,340 y hacemos visible 32 00:01:22,340 --> 00:01:24,420 solo los que nos hagan falta 33 00:01:24,420 --> 00:01:27,540 ahora mismo cada vez que yo le estoy dando a jugar 34 00:01:27,540 --> 00:01:29,159 cambia mi palabra 35 00:01:29,159 --> 00:01:32,099 por eso en el evento del botón jugar 36 00:01:32,099 --> 00:01:33,780 cada vez que le doy 37 00:01:33,780 --> 00:01:35,180 está generando una palabra nueva 38 00:01:35,180 --> 00:01:37,319 contando cuantos espacios hay 39 00:01:37,319 --> 00:01:40,280 y haciendo visibles tantos textfield como espacios 40 00:01:40,280 --> 00:01:43,519 entonces el evento de jugar 41 00:01:43,519 --> 00:01:44,980 estaba claro lo que tenía que hacer 42 00:01:44,980 --> 00:01:47,780 hacer visibles tantos de estos 12 43 00:01:47,780 --> 00:01:49,340 que están aquí puestos fijos 44 00:01:49,340 --> 00:01:51,719 pero ocultos como hagan falta 45 00:01:51,719 --> 00:01:52,959 y luego hacer aparecer 46 00:01:52,959 --> 00:01:55,519 este text field para que el usuario 47 00:01:55,519 --> 00:01:57,319 ponga la letra, ¿vale? y ya está 48 00:01:57,319 --> 00:01:59,739 y luego teníamos otro evento 49 00:01:59,739 --> 00:02:01,180 que es el evento de este text field 50 00:02:01,180 --> 00:02:02,719 que es cuando le dábamos al enter 51 00:02:02,719 --> 00:02:05,799 pues nada, tenía que coger la letra 52 00:02:05,799 --> 00:02:07,439 verificar en 53 00:02:07,439 --> 00:02:09,759 qué posiciones de la palabra aleatoria 54 00:02:09,759 --> 00:02:11,259 elegida estaba esa letra 55 00:02:11,259 --> 00:02:13,259 y en las que lo 56 00:02:13,259 --> 00:02:15,280 encontrara, pues lo ponía en la misma 57 00:02:15,280 --> 00:02:17,879 posición idéntica del text field correspondiente 58 00:02:17,879 --> 00:02:19,180 ¿vale? 59 00:02:20,020 --> 00:02:20,960 y ya está 60 00:02:20,960 --> 00:02:26,219 ya que estamos vamos a adivinarlo 61 00:02:26,219 --> 00:02:30,060 No, tiene la B 62 00:02:30,060 --> 00:02:32,139 La M sí 63 00:02:32,139 --> 00:02:33,319 M 64 00:02:33,319 --> 00:02:39,080 Mada 65 00:02:39,080 --> 00:02:42,699 Aún la he puesto 66 00:02:42,699 --> 00:02:44,300 Justo, muy bien 67 00:02:44,300 --> 00:02:47,479 Esa sí que es 68 00:02:47,479 --> 00:02:50,180 Lo que pasa es que yo no lo completé el otro día 69 00:02:50,180 --> 00:02:51,939 Lo ideal sería que cuando 70 00:02:51,939 --> 00:02:54,219 La aplicación detecta que ya están 71 00:02:54,219 --> 00:02:56,180 Todos estos textfields 72 00:02:56,180 --> 00:02:57,800 Completos, pues que te salga el mensajito 73 00:02:57,800 --> 00:02:59,599 has ganado y reinicie el juego, ¿vale? 74 00:02:59,639 --> 00:03:01,800 pero bueno, eso no lo hice, entonces tú puedes seguir 75 00:03:01,800 --> 00:03:03,479 aquí poniendo letras hasta el infinito 76 00:03:03,479 --> 00:03:05,939 bueno, aquí como ya 77 00:03:05,939 --> 00:03:07,500 consumí los intentos, pues perdiste 78 00:03:07,500 --> 00:03:09,759 vale, entonces uno primero entiende lo que tiene que hacer 79 00:03:09,759 --> 00:03:11,939 está claro, vale, entonces lo más 80 00:03:11,939 --> 00:03:13,780 importante fue la clave 81 00:03:13,780 --> 00:03:15,979 para hacerlo todo, que a partir de ahí era sencillo 82 00:03:15,979 --> 00:03:17,680 lo más importante era 83 00:03:17,680 --> 00:03:18,379 identificar 84 00:03:18,379 --> 00:03:21,539 lo más importante era identificar 85 00:03:21,539 --> 00:03:23,719 que íbamos a necesitar 12 86 00:03:23,719 --> 00:03:25,780 de estos, 12 text fill, íbamos a 87 00:03:25,780 --> 00:03:27,599 necesitar 12 de estos, entonces 88 00:03:27,599 --> 00:03:30,139 ponerlos uno por uno, textfield 1, textfield 2 89 00:03:30,139 --> 00:03:32,080 textfield 3, era un poco locura 90 00:03:32,080 --> 00:03:34,099 porque luego en mi evento de jugar 91 00:03:34,099 --> 00:03:35,780 yo tengo que ir uno por uno 92 00:03:35,780 --> 00:03:37,360 haciéndolos visibles o no 93 00:03:37,360 --> 00:03:40,280 y tener que ir recorriéndolos 94 00:03:40,280 --> 00:03:41,599 como variables separadas 95 00:03:41,599 --> 00:03:43,900 sería un rollo, porque sería 96 00:03:43,900 --> 00:03:45,240 si la palabra es de una letra 97 00:03:45,240 --> 00:03:47,280 tendría que hacer un if, el save enorme 98 00:03:47,280 --> 00:03:49,699 que si la palabra es de una letra, textfield 1 99 00:03:49,699 --> 00:03:51,680 set visible true, el save 100 00:03:51,680 --> 00:03:53,060 la palabra es de dos letras 101 00:03:53,060 --> 00:03:55,599 textfield 1 set visible true, textfield 2 102 00:03:55,599 --> 00:03:57,719 set visible true, el save 103 00:03:57,719 --> 00:03:58,960 palabra de tres letras 104 00:03:58,960 --> 00:04:01,840 textfield1 set visible true, textfield2 105 00:04:01,840 --> 00:04:03,780 set visible true, textfield3 set visible 106 00:04:03,780 --> 00:04:05,659 true, un código horrible 107 00:04:05,659 --> 00:04:07,719 entonces mucho mejor si los tengo 108 00:04:07,719 --> 00:04:09,000 todos metidos en un array 109 00:04:09,000 --> 00:04:11,020 y me limito a recorrer el array 110 00:04:11,020 --> 00:04:13,340 bueno pues entonces 111 00:04:13,340 --> 00:04:15,620 ¿qué fue lo que hicimos? pues ya está, ahora si nos 112 00:04:15,620 --> 00:04:16,600 vamos a nuestro código 113 00:04:16,600 --> 00:04:19,379 en nuestro código 114 00:04:19,379 --> 00:04:21,680 dijimos, venga ¿qué variable vamos a necesitar? 115 00:04:22,180 --> 00:04:23,240 el panel, por supuesto 116 00:04:23,240 --> 00:04:26,079 y mi array de 12 textfield 117 00:04:26,079 --> 00:04:27,300 mi array de 12 118 00:04:27,300 --> 00:04:29,079 12 objetos textfield 119 00:04:29,079 --> 00:04:30,480 que son 120 00:04:30,480 --> 00:04:33,439 estos 12 que están aquí 121 00:04:33,439 --> 00:04:35,759 aquí hay 4 visibles pero hay otros 122 00:04:35,759 --> 00:04:39,060 8 escondidos 123 00:04:39,060 --> 00:04:41,800 estos son mis 12 textfield 124 00:04:41,800 --> 00:04:43,839 y este es el textfield de la letra de usuario 125 00:04:43,839 --> 00:04:45,899 vale, esta variable 126 00:04:45,899 --> 00:04:48,220 es para guardar la palabra seleccionada 127 00:04:48,220 --> 00:04:49,699 ya está 128 00:04:49,699 --> 00:04:52,079 este es para el número de intentos 129 00:04:52,079 --> 00:04:53,600 para que se vaya decrementando 130 00:04:53,600 --> 00:04:55,060 según se van haciendo intentos 131 00:04:55,060 --> 00:04:57,240 y esta es la etiqueta 132 00:04:57,240 --> 00:04:59,139 que he usado aquí simplemente 133 00:04:59,139 --> 00:05:01,040 para ir marcando las que he usado 134 00:05:01,040 --> 00:05:03,019 ¿vale? 135 00:05:03,180 --> 00:05:04,579 aquí abajo hay una etiqueta 136 00:05:04,579 --> 00:05:07,480 en las que voy marcando las que se han usado 137 00:05:07,480 --> 00:05:08,579 ¿vale? 138 00:05:10,040 --> 00:05:11,160 bueno, pues ya está 139 00:05:11,160 --> 00:05:13,620 y ahora, ¿qué es lo que hace el constructor 140 00:05:13,620 --> 00:05:15,060 de la interfaz gráfica? primero 141 00:05:15,060 --> 00:05:17,259 coloca las cosas, las coloca 142 00:05:17,259 --> 00:05:19,680 en su sitio y luego ya 143 00:05:19,680 --> 00:05:21,480 crea los eventos y se acabó 144 00:05:21,480 --> 00:05:23,939 vale, Adrián y Gonzalo 145 00:05:23,939 --> 00:05:26,439 primero coloca las cosas en su sitio 146 00:05:26,439 --> 00:05:28,399 y luego ya hace los eventos 147 00:05:28,399 --> 00:05:30,579 pues venga, vamos a colocar las cosas en su sitio 148 00:05:30,579 --> 00:05:32,579 primero, el array de 12 149 00:05:32,579 --> 00:05:33,120 textfield 150 00:05:33,120 --> 00:05:36,660 hay que instanciarlo 151 00:05:36,660 --> 00:05:38,379 porque ahora mismo yo tengo aquí creado 152 00:05:38,379 --> 00:05:39,899 como recordáis perfectamente los arrays 153 00:05:39,899 --> 00:05:42,439 porque nunca jamás deberíais 154 00:05:42,439 --> 00:05:44,600 olvidarlos, yo tengo aquí instanciado 155 00:05:44,600 --> 00:05:46,079 espacio para 12 textfield 156 00:05:46,079 --> 00:05:48,319 pero no están creados todavía, no están instanciados 157 00:05:48,319 --> 00:05:50,160 bueno, pues lo primero que hacemos 158 00:05:50,160 --> 00:05:54,620 Vamos a instanciar todos y cada uno de los textfields de este array. 159 00:05:55,379 --> 00:06:01,160 Pues recorro mi array de letras y voy instanciando cada uno de los textfields. 160 00:06:02,100 --> 00:06:08,220 Aquí en el constructor pongo 1 porque este 1 es para indicar cuántos espacios quiero que tenga ese textfield. 161 00:06:08,800 --> 00:06:11,699 Cuántos caracteres quiero que sean visibles. 162 00:06:12,019 --> 00:06:14,879 Si le pusiera 10 es que me quedarían unos textfields muy grandes. 163 00:06:14,879 --> 00:06:32,579 Ah, bueno, es que luego cuando lo hago aquí 164 00:06:32,579 --> 00:06:35,300 Ya le cambia, al fijar la letra ya le cambia el tamaño 165 00:06:35,300 --> 00:06:39,430 Sí, luego cuando lo 166 00:06:39,430 --> 00:06:40,970 Se construya ahí abajo 167 00:06:40,970 --> 00:06:43,189 ¿Vale? Pero bueno, inicialmente 168 00:06:43,189 --> 00:06:44,629 Yo le doy espacio 1 169 00:06:44,629 --> 00:06:47,389 O podría no darle ninguno, el constructor admite muchas variantes 170 00:06:47,389 --> 00:06:49,089 Uno va probando 171 00:06:49,089 --> 00:06:50,389 Ya está, ya los tengo instanciados 172 00:06:50,389 --> 00:06:53,209 Entonces ya tengo instanciados todos los textfield 173 00:06:53,209 --> 00:06:54,810 Tengo instanciados, por supuesto 174 00:06:54,810 --> 00:06:57,550 Bueno, la letra usuario no 175 00:06:57,550 --> 00:06:59,089 La instanciaré debajo, etc. 176 00:06:59,310 --> 00:07:01,430 vale, pues venga, ahora vamos a 177 00:07:01,430 --> 00:07:03,370 colocar, a construir 178 00:07:03,370 --> 00:07:05,410 la interfaz, esta ya 179 00:07:05,410 --> 00:07:07,350 sabemos que línea era, era la que hacía que 180 00:07:07,350 --> 00:07:09,389 se cerrara la interfaz cuando le dábamos a la X 181 00:07:09,389 --> 00:07:11,550 esta es la que fija el tamaño 182 00:07:11,550 --> 00:07:12,449 del panel 183 00:07:12,449 --> 00:07:15,449 vale, esta 184 00:07:15,449 --> 00:07:17,589 es la que da el borde del panel, todo esto 185 00:07:17,589 --> 00:07:19,029 lo ha generado el builder 186 00:07:19,029 --> 00:07:21,389 vale, todo esto lo ha generado el builder 187 00:07:21,389 --> 00:07:23,410 ahora ya le decíamos 188 00:07:23,410 --> 00:07:25,730 al frame, esto es como si pusiéramos 189 00:07:25,730 --> 00:07:27,529 dis, es lo mismo, le decíamos al frame 190 00:07:27,529 --> 00:07:30,009 que su panel fuera este que acabo de hacer 191 00:07:30,009 --> 00:07:31,709 y ahora 192 00:07:31,709 --> 00:07:34,050 al panel le decíamos que setLayout 193 00:07:34,050 --> 00:07:35,810 null, ningún layout, para poder 194 00:07:35,810 --> 00:07:38,050 colocar exactamente las coordenadas que yo quiera 195 00:07:38,050 --> 00:07:38,449 ¿vale? 196 00:07:39,310 --> 00:07:40,329 todo esto 197 00:07:40,329 --> 00:07:46,430 nos lo había generado ya el builder 198 00:07:46,430 --> 00:07:48,930 si yo aquí cambiara el tamaño del panel 199 00:07:48,930 --> 00:07:50,670 o cambiara algo 200 00:07:50,670 --> 00:07:53,110 pues ya me cambiaría todo en el código 201 00:07:53,110 --> 00:07:54,910 si cambiara el color de este panel 202 00:07:54,910 --> 00:07:57,269 o lo que fuera, pues ya me cambiaría todo 203 00:07:57,269 --> 00:07:59,129 vale 204 00:07:59,129 --> 00:08:00,910 pues nada, seguimos 205 00:08:00,910 --> 00:08:03,250 ahora ya, estamos 206 00:08:03,250 --> 00:08:05,230 colocando la letra de usuario, que es 207 00:08:05,230 --> 00:08:07,089 este, que es este de aquí 208 00:08:07,089 --> 00:08:09,170 este lo hicimos arrastrando 209 00:08:09,170 --> 00:08:11,149 a, tanto la etiqueta 210 00:08:11,149 --> 00:08:13,350 esta, prueba letra, como el text field, la letra de usuario 211 00:08:13,350 --> 00:08:15,209 lo hicimos arrastrando, bueno 212 00:08:15,209 --> 00:08:17,529 pues como consecuencia de arrastrar, se nos generó 213 00:08:17,529 --> 00:08:19,269 este código, letra de 214 00:08:19,269 --> 00:08:20,589 usuario en un j text field 215 00:08:20,589 --> 00:08:23,350 y aquí ya añadíamos 216 00:08:23,350 --> 00:08:25,170 el evento a dar la letra de usuario 217 00:08:25,170 --> 00:08:27,149 que ese le vemos luego, vale 218 00:08:27,149 --> 00:08:27,970 este es el evento 219 00:08:27,970 --> 00:08:31,250 que asociamos a AddActionListener. 220 00:08:31,589 --> 00:08:33,710 Se asocia a darle a la letra de usuario, 221 00:08:34,230 --> 00:08:35,169 se asocia a este código, 222 00:08:35,450 --> 00:08:36,789 que ya lo vemos luego, ¿vale? 223 00:08:37,850 --> 00:08:39,669 Este código es lo que saltará 224 00:08:39,669 --> 00:08:43,309 cuando se accione este componente 225 00:08:43,309 --> 00:08:45,549 y este componente, ¿qué componente es? 226 00:08:46,190 --> 00:08:48,970 Pues este, este JTESFIL de aquí, este. 227 00:08:49,750 --> 00:08:51,669 Por lo pronto lo hemos colocado, ¿vale? 228 00:08:52,929 --> 00:08:54,330 Lo estamos colocando aquí. 229 00:08:54,690 --> 00:08:56,149 Le fijamos dónde va a estar, 230 00:08:56,149 --> 00:08:58,370 posición X, posición Y y tamaño 231 00:08:58,370 --> 00:09:00,370 y lo agregamos 232 00:09:00,370 --> 00:09:02,129 al panel, le decimos que tenga 10 233 00:09:02,129 --> 00:09:04,070 columnas e inicialmente lo hacemos 234 00:09:04,070 --> 00:09:06,110 oculto, ocultado, se queda 235 00:09:06,110 --> 00:09:08,049 vale, ya tenemos la letra de usuario colocada 236 00:09:08,049 --> 00:09:10,129 entonces esto 237 00:09:10,129 --> 00:09:12,169 lo podemos cambiar y la letra 238 00:09:12,169 --> 00:09:13,990 de usuario se moverá de un sitio a otro, cambiará 239 00:09:13,990 --> 00:09:16,330 su tamaño, esto me lo generó 240 00:09:16,330 --> 00:09:18,370 directamente el builder cuando yo arrastré 241 00:09:18,370 --> 00:09:20,429 cuando yo arrastré 242 00:09:20,429 --> 00:09:22,250 y me lo generó, pero luego yo lo cambio desde aquí 243 00:09:22,250 --> 00:09:24,169 y se acabó, vale, esto es para 244 00:09:24,169 --> 00:09:26,149 la etiqueta de prueba de letra. La etiqueta 245 00:09:26,149 --> 00:09:27,450 de prueba de letra es esto de aquí. 246 00:09:28,350 --> 00:09:30,230 Bueno, pues la etiqueta de prueba de letra 247 00:09:30,230 --> 00:09:32,110 me creo la etiqueta con este texto. 248 00:09:33,129 --> 00:09:34,330 Se le fija su posición 249 00:09:34,330 --> 00:09:36,049 X, posición Y y tamaño. 250 00:09:36,769 --> 00:09:37,710 Se añade al panel 251 00:09:37,710 --> 00:09:40,129 y se la oculta para que de partida 252 00:09:40,129 --> 00:09:40,850 esté oculta. 253 00:09:42,049 --> 00:09:44,029 Este es el botón jugar. Seguimos 254 00:09:44,029 --> 00:09:46,129 construyendo la interfaz. Pues se instancia 255 00:09:46,129 --> 00:09:46,970 el botón jugar. 256 00:09:47,889 --> 00:09:50,210 Este sí que tiene evento. Cuando demos a jugar 257 00:09:50,210 --> 00:09:52,029 tiene que pasar algo. Pues como este sí que 258 00:09:52,029 --> 00:09:53,950 tiene evento, se le hace la acción 259 00:09:53,950 --> 00:09:56,110 listener y aquí se le pone 260 00:09:56,110 --> 00:09:58,029 su evento, que luego ya entramos a él 261 00:09:58,029 --> 00:09:59,990 vale, se le coloca en la 262 00:09:59,990 --> 00:10:02,110 interfaz, posición x, posición y 263 00:10:02,110 --> 00:10:05,389 ancho y alto 264 00:10:05,389 --> 00:10:06,690 y se añade al panel 265 00:10:06,690 --> 00:10:09,269 y ahora ya empezamos a colocar 266 00:10:09,269 --> 00:10:10,909 los 12 textfield 267 00:10:10,909 --> 00:10:13,789 pues venga, ahora los 12 textfield 268 00:10:13,789 --> 00:10:15,570 se llaman, como está en un mismo array 269 00:10:15,570 --> 00:10:18,289 se llaman letras 0, letras 1, letras 2 270 00:10:18,289 --> 00:10:20,870 así se llaman los textfield 271 00:10:20,870 --> 00:10:23,230 bueno, pues eso fue lo que empezamos a hacer 272 00:10:23,230 --> 00:10:25,470 empezamos a colocarnos, el primer text fill 273 00:10:25,470 --> 00:10:26,889 letras 0, lo instanciamos 274 00:10:26,889 --> 00:10:29,350 decidimos donde se colocaba 275 00:10:29,350 --> 00:10:31,070 lo añadimos al panel 276 00:10:31,070 --> 00:10:32,330 y le dijimos que 277 00:10:32,330 --> 00:10:35,049 letras 0, set columns 10 278 00:10:35,049 --> 00:10:39,289 ¿vale? es curioso porque 279 00:10:39,289 --> 00:10:41,370 me aparece como uno solo 280 00:10:41,370 --> 00:10:43,269 si aquí ese text fill tiene 10 281 00:10:43,269 --> 00:10:46,470 en algún sitio me ha generado 282 00:10:46,470 --> 00:10:47,470 o me habrá generado algo 283 00:10:47,470 --> 00:10:49,370 para no lo sé, yo le doy 284 00:10:49,370 --> 00:10:51,629 y me aparece 285 00:10:51,629 --> 00:10:54,429 solo con tamaño para 1. 286 00:10:54,809 --> 00:10:56,389 Ah, no, no, no, no, me aparece con tamaño 287 00:10:56,389 --> 00:10:57,490 para 10. Vale, vale. 288 00:11:00,700 --> 00:11:02,559 1, 2, 3, 4, 5, 6, 289 00:11:02,679 --> 00:11:03,340 7, 8. 290 00:11:04,240 --> 00:11:06,360 No, parece que solo se ven 8. Bueno, da igual. 291 00:11:07,820 --> 00:11:08,220 Vale. 292 00:11:09,500 --> 00:11:10,279 Vale, pues así 293 00:11:10,279 --> 00:11:11,679 uno por uno. Entonces, 294 00:11:13,580 --> 00:11:14,320 cada text field 295 00:11:14,320 --> 00:11:15,659 es un elemento del array. 296 00:11:17,559 --> 00:11:18,259 Aquí lo que 297 00:11:18,259 --> 00:11:20,399 pasa es, ¿de dónde sacamos estas coordenadas? 298 00:11:20,399 --> 00:11:22,820 ¿De dónde las sacamos? Bueno, pues inicialmente 299 00:11:22,820 --> 00:11:24,820 los habíamos arrastrado 300 00:11:24,820 --> 00:11:27,259 habíamos hecho unos text fill 301 00:11:27,259 --> 00:11:28,840 que habíamos arrastrado por aquí 302 00:11:28,840 --> 00:11:33,019 los habíamos hecho 303 00:11:33,019 --> 00:11:35,539 inicialmente así, los habíamos arrastrado 304 00:11:35,539 --> 00:11:37,580 y nos habíamos quedado 305 00:11:37,580 --> 00:11:39,220 con el código que había generado 306 00:11:39,220 --> 00:11:43,159 en este caso, por ejemplo 307 00:11:43,159 --> 00:11:44,820 lo que yo acabo de hacer 308 00:11:44,820 --> 00:11:46,960 es esto 309 00:11:46,960 --> 00:11:49,299 pues nos habíamos quedado 310 00:11:49,299 --> 00:11:51,200 con los 12 códigos 311 00:11:51,200 --> 00:11:53,320 que nos había generado para quedarnos con esto 312 00:11:53,320 --> 00:11:54,360 que era lo que nos interesaba 313 00:11:54,360 --> 00:12:05,580 Y una vez que teníamos esto, ahora ya cambiábamos el texto de esa etiqueta por la que nos interesaba, que era o letras 0, letras 1, letras 2, ¿vale? 314 00:12:08,019 --> 00:12:16,720 Entonces, aquí ya son los 12 text fill, letras 0 en esta posición y añadido, letras 1 en esta posición y añadido, letras 2, etc. 315 00:12:16,720 --> 00:12:47,549 Y ahora ya la etiqueta, esta es la etiqueta en la que me voy a poner las letras que ya he usado, que ya he marcado, esta es esa etiqueta, que esa etiqueta está aquí, esa etiqueta está aquí, esta es la etiqueta donde voy a poner las letras ya usadas, vale, es esa, vale. 316 00:12:47,549 --> 00:12:59,309 Y luego ya por último, lo último que hacía después de construir la interfaz, recorría todo mi array de textfield, todo mi array de letras, todo mi array de textfield, lo recorría para ocultarlos todos, ¿vale? 317 00:12:59,830 --> 00:13:11,750 Entonces, primera ventaja que nos encontramos de tenerlas todas en un array, que podemos ocultarlas todas recorriendo el array, no tenemos que ir letras 0, set visible, false, letras 1, set visible, false, recorremos el array y las ocultamos. 318 00:13:11,750 --> 00:13:14,529 vale, pues con esto la interfaz ya estaba construida 319 00:13:14,529 --> 00:13:16,370 aquí aunque no lo veamos 320 00:13:16,370 --> 00:13:18,409 están todos los componentes 321 00:13:18,409 --> 00:13:20,230 lo que pasa es que los 12 textfile están 322 00:13:20,230 --> 00:13:22,049 escondidos y 323 00:13:22,049 --> 00:13:24,629 el huequecito para el usuario está escondido 324 00:13:24,629 --> 00:13:26,309 vale, ahora ya solo falta 325 00:13:26,309 --> 00:13:27,690 hacer el evento, que es 326 00:13:27,690 --> 00:13:29,789 darle comportamiento al botón jugar 327 00:13:29,789 --> 00:13:31,590 y darle comportamiento al botón 328 00:13:31,590 --> 00:13:34,169 pruebe letra, ya está 329 00:13:34,169 --> 00:13:36,190 pues vamos 330 00:13:36,190 --> 00:13:37,629 con el evento del botón jugar 331 00:13:37,629 --> 00:13:39,970 primero hay que tener claro que queremos que pase 332 00:13:39,970 --> 00:13:41,129 cuando le demos al botón jugar. 333 00:13:41,230 --> 00:13:42,350 Lo que queremos que pase es 334 00:13:42,350 --> 00:13:44,950 que se genere una palabra aleatoria. 335 00:13:46,450 --> 00:13:47,570 Hacer visibles 336 00:13:47,570 --> 00:13:50,330 tantos text field de estos 337 00:13:50,330 --> 00:13:53,009 como letras tenga la palabra aleatoria. 338 00:13:53,950 --> 00:13:54,730 Y ya está. 339 00:13:55,210 --> 00:13:56,110 No hay que hacer nada más. 340 00:13:57,429 --> 00:13:58,950 Pues venga, vámonos al botón, 341 00:13:59,009 --> 00:14:00,070 al evento del botón jugar. 342 00:14:01,210 --> 00:14:03,269 Pues el evento del botón jugar está aquí. 343 00:14:04,169 --> 00:14:05,490 Vale, pues justo, ¿qué hacíamos? 344 00:14:06,110 --> 00:14:07,809 Generaba yo aquí un número aleatorio 345 00:14:07,809 --> 00:14:09,889 en principio entre 0 y 199 346 00:14:09,889 --> 00:14:11,909 aunque el 0 no va a salir nunca 347 00:14:11,909 --> 00:14:13,450 seguramente, pero bueno 348 00:14:13,450 --> 00:14:16,549 aquí genero un número aleatorio entre 0 y 199 349 00:14:16,549 --> 00:14:18,730 porque mis palabras 350 00:14:18,730 --> 00:14:20,070 ¿vale? 351 00:14:20,169 --> 00:14:21,570 aquí, en esta primera línea 352 00:14:21,570 --> 00:14:23,429 número aleatorio entre 0 y 199 353 00:14:23,429 --> 00:14:26,190 porque mis palabras, recuerdo que están aquí 354 00:14:26,190 --> 00:14:27,990 en este array estático 355 00:14:27,990 --> 00:14:29,230 de la clase palabras 356 00:14:29,230 --> 00:14:31,889 aquí están mis palabras y tenía 200 357 00:14:31,889 --> 00:14:34,669 bueno, pues entre 0 y 199 358 00:14:34,669 --> 00:14:36,470 pues genero un número 359 00:14:36,470 --> 00:14:43,289 aleatorio entre 0 y 199, vale, ahora ya selecciono esa palabra, dentro de mi array que es este, 360 00:14:43,850 --> 00:14:51,570 este es mi array, selecciono esta palabra y la guardo en la variable global, en la variable 361 00:14:51,570 --> 00:14:59,029 de clase que tiene mi aplicación, para guardar esa palabra generada, vale, palabra ya está 362 00:14:59,029 --> 00:15:04,269 inicializada, vale, está claro, palabra es esta variable que está aquí, en la clase, 363 00:15:04,269 --> 00:15:07,110 Para guardar esa palabra generada aleatoriamente 364 00:15:07,110 --> 00:15:08,169 Inicialmente ninguna 365 00:15:08,169 --> 00:15:10,370 Bueno pues 366 00:15:10,370 --> 00:15:12,590 Como respuesta darle al botón jugar 367 00:15:12,590 --> 00:15:15,970 Ya está generada 368 00:15:15,970 --> 00:15:17,870 Si le pusiéramos aquí un 369 00:15:17,870 --> 00:15:20,610 Por ejemplo 370 00:15:20,610 --> 00:15:22,389 Una verificación para que me la muestre 371 00:15:22,389 --> 00:15:24,549 Y volvemos a ejecutar 372 00:15:24,549 --> 00:15:25,769 Jugar 373 00:15:25,769 --> 00:15:26,909 Pues 374 00:15:26,909 --> 00:15:30,009 ¿Dónde está mi huevo? 375 00:15:30,169 --> 00:15:32,289 Es huevo, la que me ha generado huevo 376 00:15:32,289 --> 00:15:32,850 Entonces 377 00:15:32,850 --> 00:15:35,429 podría ir a tiro fijo 378 00:15:35,429 --> 00:15:36,190 lógicamente 379 00:15:36,190 --> 00:15:43,950 efectivamente era huevo 380 00:15:43,950 --> 00:15:49,419 vale, bueno pues ya 381 00:15:49,419 --> 00:15:51,100 tengo la palabra inicializada 382 00:15:51,100 --> 00:15:53,720 porque eso es lo que me hace el botón, inicializarme la palabra 383 00:15:53,720 --> 00:15:54,620 vale, ahora 384 00:15:54,620 --> 00:15:57,440 voy a contar, voy a hacer visibles 385 00:15:57,440 --> 00:15:59,200 tantas letras 386 00:15:59,200 --> 00:16:01,519 como caracteres tenga esa palabra 387 00:16:01,519 --> 00:16:03,220 bueno pues venga, me voy a sacar 388 00:16:03,220 --> 00:16:04,620 el número de caracteres de la palabra 389 00:16:04,620 --> 00:16:07,139 está claro, palabras.len 390 00:16:07,139 --> 00:16:08,700 es el número de caracteres de la palabra 391 00:16:08,700 --> 00:16:11,299 lo guardo en numletras 392 00:16:11,299 --> 00:16:13,120 es el número de caracteres 393 00:16:13,120 --> 00:16:13,899 que tiene mi palabra 394 00:16:13,899 --> 00:16:16,039 y ahora me meto en el for 395 00:16:16,039 --> 00:16:19,200 y hago visibles todas las letras 396 00:16:19,200 --> 00:16:20,419 que van desde 0 397 00:16:20,419 --> 00:16:22,179 hasta numletras menos 1 398 00:16:22,179 --> 00:16:24,799 es decir, de mis 12 textfield 399 00:16:24,799 --> 00:16:27,000 hago visible los 400 00:16:27,000 --> 00:16:28,299 numletras primero 401 00:16:28,299 --> 00:16:31,440 este for va de 0 a numletras menos 1 402 00:16:31,440 --> 00:16:32,720 si numletras fuera 4 403 00:16:32,720 --> 00:16:35,539 me hace visibles el 0, 1, 2 y 3 404 00:16:35,539 --> 00:16:35,940 justo 405 00:16:35,940 --> 00:16:38,279 si numletras fuera 7 406 00:16:38,279 --> 00:16:40,100 me haría visibles el 0, 1, 2 407 00:16:40,100 --> 00:16:42,580 hasta 6, que es justo lo que quiero 408 00:16:42,580 --> 00:16:43,519 me hace visibles 409 00:16:43,519 --> 00:16:46,720 tantos textfield de los 12 que hay 410 00:16:46,720 --> 00:16:48,639 como necesito para cubrir 411 00:16:48,639 --> 00:16:50,139 todas las letras de la palabra 412 00:16:50,139 --> 00:16:51,519 aleatoria generada 413 00:16:51,519 --> 00:16:54,580 vale, y el resto 414 00:16:54,580 --> 00:16:55,559 los hago invisibles 415 00:16:55,559 --> 00:16:58,460 bueno, pues el resto 416 00:16:58,460 --> 00:17:00,740 que son 417 00:17:00,740 --> 00:17:02,399 desde el tamaño de la palabra 418 00:17:02,399 --> 00:17:04,380 hasta 12, es decir 419 00:17:04,380 --> 00:17:06,079 si el número de letras fuera 3 420 00:17:06,079 --> 00:17:08,359 hago visibles de 0 a 2 421 00:17:08,359 --> 00:17:10,240 e invisibles 422 00:17:10,240 --> 00:17:11,099 de 3 a 11 423 00:17:11,099 --> 00:17:12,880 pues es lo que estoy haciendo 424 00:17:12,880 --> 00:17:15,799 de 0 a numletras menos 1 425 00:17:15,799 --> 00:17:16,759 los hago visibles 426 00:17:16,759 --> 00:17:18,960 y de numletras 427 00:17:18,960 --> 00:17:22,799 si lo veis más claro así 428 00:17:22,799 --> 00:17:25,700 desde el final de la palabra hasta 12 429 00:17:25,700 --> 00:17:26,579 invisibles 430 00:17:26,579 --> 00:17:32,819 entonces me podríais decir 431 00:17:32,819 --> 00:17:34,539 oye pero porque te hace falta 432 00:17:34,539 --> 00:17:36,400 poner el resto invisibles si ya de partida 433 00:17:36,400 --> 00:17:37,380 estaban invisibles 434 00:17:37,380 --> 00:17:41,440 bueno, están invisibles al arrancar la aplicación 435 00:17:41,440 --> 00:17:43,339 pero la primera vez que he jugado 436 00:17:43,339 --> 00:17:45,839 se han puesto ya visibles a lo mejor 12 437 00:17:45,839 --> 00:17:49,160 si luego yo le vuelvo a dar a jugar y me sale una palabra de 4 438 00:17:49,160 --> 00:17:53,799 los 4 primeros se pondrán visibles otra vez 439 00:17:53,799 --> 00:17:56,799 pero los que estaban visibles del juego anterior 440 00:17:56,799 --> 00:17:57,519 los seguirán 441 00:17:57,519 --> 00:18:02,960 entonces, una vez que yo selecciono el número de letras 442 00:18:02,960 --> 00:18:05,259 de la palabra aleatoria, pongo visibles 443 00:18:05,259 --> 00:18:07,700 las numletras primeras 444 00:18:07,700 --> 00:18:10,000 e invisibles las restantes hasta 12 445 00:18:10,000 --> 00:18:10,839 vale 446 00:18:10,839 --> 00:18:12,880 y que es lo siguiente que hago 447 00:18:12,880 --> 00:18:15,619 hago visible la etiqueta que me dice 448 00:18:15,619 --> 00:18:16,319 pruebe letra 449 00:18:16,319 --> 00:18:18,119 y hago visible 450 00:18:18,119 --> 00:18:22,279 la letra de usuario 451 00:18:22,279 --> 00:18:23,579 el espacio para meter la letra 452 00:18:23,579 --> 00:18:26,299 inicializo el número de intentos 453 00:18:26,299 --> 00:18:28,339 porque se pueden haber quedado 454 00:18:28,339 --> 00:18:30,140 a cero del último juego que yo hice 455 00:18:30,140 --> 00:18:32,299 lo reinicializo a 6 456 00:18:32,299 --> 00:18:34,200 para que tenga 6 intentos 457 00:18:34,200 --> 00:18:35,099 o los que yo quiera 458 00:18:35,099 --> 00:18:39,059 y la etiqueta que me muestra 459 00:18:39,059 --> 00:18:40,000 las usadas 460 00:18:40,000 --> 00:18:42,940 la reinicializo y la pongo a hacer otra vez 461 00:18:42,940 --> 00:18:44,579 porque puedo venir de un juego anterior 462 00:18:44,579 --> 00:18:46,140 donde la etiqueta ya tenía 463 00:18:46,140 --> 00:18:52,920 vale, pues todo este código de aquí 464 00:18:52,920 --> 00:18:54,519 es el código de iniciar juego 465 00:18:54,519 --> 00:18:57,279 entonces ya este action perform 466 00:18:57,279 --> 00:18:59,240 ya se está haciendo 467 00:18:59,240 --> 00:19:01,380 muy largo, ya se me queda una clase muy larga 468 00:19:01,380 --> 00:19:02,839 sería mucho más bonito 469 00:19:02,839 --> 00:19:04,980 sacar esto a un método aparte 470 00:19:04,980 --> 00:19:06,720 iniciar juego, por ejemplo 471 00:19:06,720 --> 00:19:08,559 y queda mucho más claro 472 00:19:08,559 --> 00:19:16,000 Saco todo esto a iniciar juego y llamo desde aquí iniciar juego, porque lo que hace esto es iniciar juego. 473 00:19:16,559 --> 00:19:29,259 Crea palabra aleatoria, hace visibles e invisibles los text fields que toquen y hace visible la letra de usuario, reinicializa intentos y reinicializa etiqueta de letras usadas. 474 00:19:29,940 --> 00:19:35,000 Pues todo esto de aquí, mejor si lo meto en un método de iniciar juego. 475 00:19:41,799 --> 00:19:52,359 Fijaos, podemos empezar a usar la refactorización del entorno de desarrollo y así nos ahorramos trabajo. 476 00:19:53,700 --> 00:19:55,819 ¿Qué es refactorizar? 477 00:19:55,940 --> 00:19:59,220 Que ya en entornos de desarrollo igual ya habéis mencionado esa palabra. 478 00:19:59,559 --> 00:20:01,319 ¿La habéis mencionado la palabra refactorizar? 479 00:20:01,680 --> 00:20:02,359 Creo que no. 480 00:20:02,740 --> 00:20:02,980 Vale. 481 00:20:02,980 --> 00:20:06,359 bueno, pues refactorizar 482 00:20:06,359 --> 00:20:06,960 un código 483 00:20:06,960 --> 00:20:08,940 es cambiarlo 484 00:20:08,940 --> 00:20:11,400 para que sea más bonito 485 00:20:11,400 --> 00:20:14,460 a los ojos del usuario 486 00:20:14,460 --> 00:20:16,299 pero su funcionalidad 487 00:20:16,299 --> 00:20:17,960 y su comportamiento no cambia 488 00:20:17,960 --> 00:20:18,700 nada 489 00:20:18,700 --> 00:20:20,940 es decir, cuando uno termina 490 00:20:20,940 --> 00:20:23,099 justo 491 00:20:23,099 --> 00:20:24,920 cuando uno acaba un código 492 00:20:24,920 --> 00:20:28,059 ese código yo lo he verificado, funciona perfectamente 493 00:20:28,059 --> 00:20:30,420 quiero que haga esto porque funciona estupendamente 494 00:20:30,420 --> 00:20:32,500 vale, pero que código más feo 495 00:20:32,500 --> 00:20:34,819 pues tengo unos métodos así de largos 496 00:20:34,819 --> 00:20:36,119 unos métodos así de largos 497 00:20:36,119 --> 00:20:37,460 quedan feísimos 498 00:20:37,460 --> 00:20:40,500 me gustaría más partirlo en trocitos 499 00:20:40,500 --> 00:20:42,759 y cada trocito llevarlo a un método aparte 500 00:20:42,759 --> 00:20:44,519 y entonces de ese método largo 501 00:20:44,519 --> 00:20:45,839 me limito a hacer las llamadas 502 00:20:45,839 --> 00:20:48,500 lo que va a hacer la máquina virtual es lo mismo 503 00:20:48,500 --> 00:20:50,380 va a hacer el mismo código, no va a cambiar nada 504 00:20:50,380 --> 00:20:52,500 pero para el usuario 505 00:20:52,500 --> 00:20:53,220 es más legible 506 00:20:53,220 --> 00:20:56,539 pues eso es refactorizar, refactorizar no cambia 507 00:20:56,539 --> 00:20:58,599 para nada el funcionamiento del código 508 00:20:58,599 --> 00:21:00,539 va a hacer lo mismo 509 00:21:00,539 --> 00:21:03,380 pero el código queda como más legible y más ordenadito 510 00:21:03,380 --> 00:21:04,259 eso es refactorizar 511 00:21:04,259 --> 00:21:07,119 y realmente hay diferencias 512 00:21:07,119 --> 00:21:09,519 entre un código legible 513 00:21:09,519 --> 00:21:10,819 y un código no legible 514 00:21:10,819 --> 00:21:12,700 hay diferencias 515 00:21:12,700 --> 00:21:15,519 a la hora de incorporar algún cambio 516 00:21:15,519 --> 00:21:17,599 encontrar algún error que te ha salido 517 00:21:17,599 --> 00:21:19,380 luego después de un mes usándolo 518 00:21:19,380 --> 00:21:20,319 etcétera 519 00:21:20,319 --> 00:21:22,920 hay cosas 520 00:21:22,920 --> 00:21:25,319 hay procedimientos de refactorización 521 00:21:25,319 --> 00:21:27,059 muy estándar, por ejemplo 522 00:21:27,059 --> 00:21:29,180 cuando uno tiene un método larguísimo 523 00:21:29,180 --> 00:21:31,880 eso te pide rápidamente 524 00:21:31,880 --> 00:21:33,339 el cuerpo una refactorización 525 00:21:33,339 --> 00:21:35,559 que es, perdona, ese método larguísimo 526 00:21:35,559 --> 00:21:37,480 lo voy a sacar a otro sitio 527 00:21:37,480 --> 00:21:39,720 otro método, lo llamo desde este, etc. 528 00:21:40,220 --> 00:21:41,519 Hay una refactorización 529 00:21:41,519 --> 00:21:43,160 que ya estamos haciendo muchas veces 530 00:21:43,160 --> 00:21:45,039 que es cambiar el nombre de una variable 531 00:21:45,039 --> 00:21:47,579 eso es, ahí también estamos 532 00:21:47,579 --> 00:21:49,380 cambiando el código para hacerlo más legible 533 00:21:49,380 --> 00:21:51,759 por ejemplo, esta variable de aquí 534 00:21:51,759 --> 00:21:53,799 button new button, lo hemos dejado 535 00:21:53,799 --> 00:21:55,599 porque va, nos da igual, este es el botón 536 00:21:55,599 --> 00:21:56,140 de jugar 537 00:21:56,140 --> 00:21:57,880 el botón de jugar 538 00:21:57,880 --> 00:21:59,539 entonces 539 00:21:59,539 --> 00:22:02,380 una refactorización interesante 540 00:22:02,380 --> 00:22:04,700 sería cambiar el nombre 541 00:22:04,700 --> 00:22:06,700 de esta variable y llamarla botón jugar 542 00:22:06,700 --> 00:22:08,019 por ejemplo 543 00:22:08,019 --> 00:22:10,539 pero claro, hay que tener cuidado porque 544 00:22:10,539 --> 00:22:12,539 tendríamos que cambiársela en todas partes 545 00:22:12,539 --> 00:22:14,079 donde aparece, en todas partes 546 00:22:14,079 --> 00:22:16,680 el eclipse te ayuda, afortunadamente 547 00:22:16,680 --> 00:22:18,779 si seleccionamos esto 548 00:22:18,779 --> 00:22:20,339 le damos al botón derecho 549 00:22:20,339 --> 00:22:22,119 y os vais a refactor 550 00:22:22,119 --> 00:22:24,259 ¿vale? pues en refactor 551 00:22:24,259 --> 00:22:25,779 tenemos un rename, que es 552 00:22:25,779 --> 00:22:31,660 Por favor, refactorízame cambiando el nombre de esta variable. 553 00:22:32,740 --> 00:22:37,039 Entonces, el entorno de desarrollo te va a cambiar el nombre ahí 554 00:22:37,039 --> 00:22:39,779 y en cualquier parte donde aparezca esa variable. 555 00:22:40,180 --> 00:22:41,619 ¿Vale? Un segundito, vamos a hacerlo. 556 00:22:41,819 --> 00:22:42,200 Un momento. 557 00:22:42,680 --> 00:22:43,460 Le damos a rename. 558 00:22:44,319 --> 00:22:45,539 ¿Qué nombre le quieres poner? 559 00:22:46,019 --> 00:22:47,220 Botón jugar. 560 00:22:47,920 --> 00:22:48,279 Enter. 561 00:22:48,559 --> 00:22:51,660 Y veis, la ha cambiado en todas partes automáticamente. 562 00:22:52,759 --> 00:22:55,019 ¿Vale? Luego esta es una refactorización típica. 563 00:22:55,019 --> 00:22:56,319 Cambiar el nombre de una variable 564 00:22:56,319 --> 00:22:58,839 Y la hacemos mediante pues esto 565 00:22:58,839 --> 00:23:00,319 Botón derecho 566 00:23:00,319 --> 00:23:02,779 Si yo quisiera cambiar este, que no quiero 567 00:23:02,779 --> 00:23:04,480 Pues le digo 568 00:23:04,480 --> 00:23:06,359 Oye refactor, cámbiamelo 569 00:23:06,359 --> 00:23:08,880 Papi, pones ahí lo que sea 570 00:23:08,880 --> 00:23:10,900 Enter y te lo cambia en todas partes 571 00:23:10,900 --> 00:23:12,660 Vale, esta es una refactorización típica 572 00:23:12,660 --> 00:23:13,200 Dime 573 00:23:13,200 --> 00:23:18,369 No, no, en general 574 00:23:18,369 --> 00:23:19,109 Una variable 575 00:23:19,109 --> 00:23:21,289 De una aplicación normal 576 00:23:21,289 --> 00:23:25,130 Claro, en general tú tienes un código 577 00:23:25,130 --> 00:23:27,910 Y el nombre de la variable no está muy bien elegido 578 00:23:27,910 --> 00:23:30,109 porque no es muy claro, porque recordad 579 00:23:30,109 --> 00:23:32,269 de principio de curso que decíamos 580 00:23:32,269 --> 00:23:34,069 que los nombres de las variables y los métodos 581 00:23:34,069 --> 00:23:36,049 tenían que ser lo más explicativos posibles 582 00:23:36,049 --> 00:23:37,250 aunque fueran muy largos 583 00:23:37,250 --> 00:23:38,809 una variable x 584 00:23:38,809 --> 00:23:41,430 es una variable muy mal elegida 585 00:23:41,430 --> 00:23:44,289 a menos que represente la coordenada x 586 00:23:44,289 --> 00:23:45,329 de un algo 587 00:23:45,329 --> 00:23:48,150 pero una variable que se llame x o que se llame num 588 00:23:48,150 --> 00:23:49,390 son nombres horribles 589 00:23:49,390 --> 00:23:51,970 entonces es mucho mejor que la variable se llama 590 00:23:51,970 --> 00:23:53,910 número de intentos 591 00:23:53,910 --> 00:23:55,450 aunque sea un nombre muy largo, ¿qué más da? 592 00:23:55,950 --> 00:23:56,670 pues entonces 593 00:23:56,670 --> 00:23:59,910 un código que no tenga las variables con nombres 594 00:23:59,910 --> 00:24:01,750 bien elegidos, lo puedes refactorizar cambiando 595 00:24:01,750 --> 00:24:03,210 el código y no tienes que ir tú 596 00:24:03,210 --> 00:24:05,730 aparición por aparición, la herramienta 597 00:24:05,730 --> 00:24:07,769 de refactorización del entorno de desarrollo ya te 598 00:24:07,769 --> 00:24:09,089 las busca en todas partes, vale 599 00:24:09,089 --> 00:24:11,490 bueno, pues esto venía a cuento de que aquí hay una 600 00:24:11,490 --> 00:24:13,109 refactorización que nos interesa 601 00:24:13,109 --> 00:24:15,849 que es la de un código 602 00:24:15,849 --> 00:24:18,130 que ha quedado muy largo, extraerlo 603 00:24:18,130 --> 00:24:19,809 a otro método auxiliar y así 604 00:24:19,809 --> 00:24:21,990 desde el original llamamos a este 605 00:24:21,990 --> 00:24:23,130 y el código queda más bonito 606 00:24:23,130 --> 00:24:26,049 vale, venía a efectos 607 00:24:26,049 --> 00:24:28,009 de lo que había dentro del evento de jugar 608 00:24:28,009 --> 00:24:30,309 que era todas estas sentencias 609 00:24:30,309 --> 00:24:32,009 que son las 610 00:24:32,009 --> 00:24:33,970 sentencias que lo que 611 00:24:33,970 --> 00:24:36,029 significan es inicia juego 612 00:24:36,029 --> 00:24:38,109 significan eso, significa inicia juego 613 00:24:38,109 --> 00:24:39,970 entonces como el juego 614 00:24:39,970 --> 00:24:41,829 puede que yo quiera iniciarlo 615 00:24:41,829 --> 00:24:43,690 en otros puntos, no solamente ahí 616 00:24:43,690 --> 00:24:45,849 lo pueda iniciar, igual 617 00:24:45,849 --> 00:24:47,230 mi aplicación va aumentando 618 00:24:47,230 --> 00:24:49,930 y hay otros puntos de mi aplicación donde yo 619 00:24:49,930 --> 00:24:51,890 quiera iniciar juego, pues 620 00:24:51,890 --> 00:24:54,009 hombre, tiene sentido que todo ese código 621 00:24:54,009 --> 00:24:55,769 que se ha quedado ahí ya muy largo dentro 622 00:24:55,769 --> 00:24:57,910 de la clase anónima, con lo cual 623 00:24:57,910 --> 00:24:59,930 ya esto se me ha quedado 624 00:24:59,930 --> 00:25:01,410 ahí un código larguísimo 625 00:25:01,410 --> 00:25:03,750 dentro del otro, pues tiene 626 00:25:03,750 --> 00:25:05,750 sentido que yo saque eso, un método auxiliar 627 00:25:05,750 --> 00:25:07,809 y ya llame a ese método auxiliar 628 00:25:07,809 --> 00:25:10,130 desde donde quiera, el código va a ser más legible 629 00:25:10,130 --> 00:25:11,769 pues o lo hacemos a mano 630 00:25:11,769 --> 00:25:13,950 nos hacemos un método dentro de mi propia 631 00:25:13,950 --> 00:25:15,450 clase, simplemente 632 00:25:15,450 --> 00:25:17,529 que ponga iniciar 633 00:25:17,529 --> 00:25:19,809 hago corta copia y pega de eso 634 00:25:19,809 --> 00:25:21,230 que tardo 3 segundos 635 00:25:21,230 --> 00:25:24,009 o lo hago refactorizando 636 00:25:24,009 --> 00:25:25,849 con la herramienta del eclipse que tardo 637 00:25:25,849 --> 00:25:27,950 cinco segundos, da igual 638 00:25:27,950 --> 00:25:30,130 a elegir, a mí siempre me gusta hacer las cosas 639 00:25:30,130 --> 00:25:32,069 manualmente, pero a vosotros 640 00:25:32,069 --> 00:25:33,049 no, porque sois muy vagos 641 00:25:33,049 --> 00:25:35,690 es verdad, lo sois 642 00:25:35,690 --> 00:25:41,970 a ver, yo os enseño a sobrevivir, os enseño 643 00:25:41,970 --> 00:25:43,750 a que parezca que sepáis, a que 644 00:25:43,750 --> 00:25:45,289 se la consigáis colar 645 00:25:45,289 --> 00:25:47,869 a los entrevistadores en las entrevistas 646 00:25:47,869 --> 00:25:50,089 de trabajo, entonces os tengo que dar todos los recursos 647 00:25:50,089 --> 00:25:52,089 posibles para que parezca que sepáis 648 00:25:52,089 --> 00:25:54,529 y en el periodo de prueba digan 649 00:25:54,529 --> 00:25:55,890 hostia como controla este tío 650 00:25:55,890 --> 00:25:59,490 es importante parecer 651 00:25:59,490 --> 00:26:00,710 si luego encima sabes 652 00:26:00,710 --> 00:26:02,230 ya eres el crack 653 00:26:02,230 --> 00:26:08,630 al refactorizar 654 00:26:08,630 --> 00:26:09,589 bueno pues 655 00:26:09,589 --> 00:26:12,309 dios mío 656 00:26:12,309 --> 00:26:13,809 has cambiado de opinión y te has venido primero 657 00:26:13,809 --> 00:26:16,650 si se puede 658 00:26:16,650 --> 00:26:17,470 si si si 659 00:26:17,470 --> 00:26:30,809 Con garantía de vuelta, me responsabilizo. 660 00:26:34,390 --> 00:26:35,650 Pablo, ¿tú has dicho que tienes? 661 00:26:37,069 --> 00:26:38,250 ¡Hala, mira qué majo! 662 00:26:40,109 --> 00:26:44,509 Venga, pues vamos a sacar esto a otro método. 663 00:26:45,170 --> 00:26:47,190 Pues bueno, seleccionamos todo el código a sacar. 664 00:26:47,470 --> 00:26:50,269 botón derecho, refactor 665 00:26:50,269 --> 00:26:51,390 que es la palabra clave 666 00:26:51,390 --> 00:26:54,769 botón derecho, refactor 667 00:26:54,769 --> 00:26:56,170 y de todas las opciones 668 00:26:56,170 --> 00:26:56,710 que me da 669 00:26:56,710 --> 00:26:59,390 hay una, o debería dármela 670 00:26:59,390 --> 00:27:00,730 que la he visto antes 671 00:27:00,730 --> 00:27:03,829 ah, extract method, vale 672 00:27:03,829 --> 00:27:05,170 que no la veía, ¿veis? 673 00:27:06,069 --> 00:27:08,089 de todas las opciones que me da 674 00:27:08,089 --> 00:27:10,690 el refactor 675 00:27:10,690 --> 00:27:12,289 me dice, extrae method 676 00:27:12,289 --> 00:27:14,069 justo lo que quiero 677 00:27:14,069 --> 00:27:15,470 saca eso a otro método 678 00:27:15,470 --> 00:27:17,910 sí o no, sácalo a otro método 679 00:27:17,910 --> 00:27:22,309 el move es como move 680 00:27:22,309 --> 00:27:24,029 no sé qué es lo que move 681 00:27:24,029 --> 00:27:26,349 no lo sé, que yo no me meto a probar 682 00:27:26,349 --> 00:27:27,890 cosas en los botoncitos 683 00:27:27,890 --> 00:27:32,390 claro, yo soy experta 684 00:27:32,390 --> 00:27:33,630 en aparentar que sé 685 00:27:33,630 --> 00:27:34,910 hace el favor 686 00:27:34,910 --> 00:27:37,609 entonces si somos vagos no pasa nada 687 00:27:37,609 --> 00:27:39,349 a ver 688 00:27:39,349 --> 00:27:41,450 no 689 00:27:41,450 --> 00:27:43,589 lo que querías es llevar las dos cosas 690 00:27:43,589 --> 00:27:45,849 porque hay que saber muchísimo 691 00:27:45,849 --> 00:27:47,390 de eso no hay ninguna duda, tienes que controlar 692 00:27:47,390 --> 00:27:49,009 y tienes que haber currado un juego 693 00:27:49,009 --> 00:27:50,750 un huevo 694 00:27:50,750 --> 00:27:53,410 tienes que haber currado muchísimo 695 00:27:53,410 --> 00:27:55,890 y saber mucho y echarle muchas horas 696 00:27:55,890 --> 00:27:57,490 eso sí que es incuestionable 697 00:27:57,490 --> 00:27:59,049 pero además 698 00:27:59,049 --> 00:28:01,529 tienes que saber demostrarlo 699 00:28:01,529 --> 00:28:03,569 desgraciadamente la imagen 700 00:28:03,569 --> 00:28:05,769 desgraciadamente cuenta un montón 701 00:28:05,769 --> 00:28:07,069 entonces si tú sabes un montón 702 00:28:07,069 --> 00:28:09,849 pero no consigues venderlo 703 00:28:09,849 --> 00:28:11,609 no consigues que parezca que sabes 704 00:28:11,609 --> 00:28:12,809 con esas chorradas 705 00:28:12,809 --> 00:28:14,950 que los jefes y la gente 706 00:28:14,950 --> 00:28:16,789 que no tienen idea interpretan 707 00:28:16,789 --> 00:28:18,990 que significa saber, pues si tú no sabes 708 00:28:18,990 --> 00:28:21,089 esas chorradas que ellos interpretan que significa 709 00:28:21,089 --> 00:28:22,849 saber, pues entonces a lo mejor 710 00:28:22,849 --> 00:28:24,569 no se creen que sabes, entonces 711 00:28:24,569 --> 00:28:26,849 hay que moverse un poco en el terreno de 712 00:28:26,849 --> 00:28:28,930 la realidad, en el terreno de lo que 713 00:28:28,930 --> 00:28:31,029 vale y en el terreno de la apariencia 714 00:28:31,029 --> 00:28:32,829 tenéis que saber moverse en el de la apariencia 715 00:28:32,829 --> 00:28:34,710 en el de aparentar también, desgraciadamente 716 00:28:34,710 --> 00:28:37,089 ¿por qué la gente va tan bien vestidita 717 00:28:37,089 --> 00:28:39,170 a los curros? ¿eso les hace mejores trabajadores? 718 00:28:39,289 --> 00:28:40,809 en absoluto, pero 719 00:28:40,809 --> 00:28:42,069 parece que hay que 720 00:28:42,069 --> 00:28:47,730 venga, pues extraemos método 721 00:28:47,730 --> 00:28:48,829 vale 722 00:28:48,829 --> 00:28:51,289 vale, y te dice aquí 723 00:28:51,289 --> 00:28:53,230 ¿qué nombre le quieres dar a ese método? 724 00:28:54,089 --> 00:28:55,930 a ese método le queremos 725 00:28:55,930 --> 00:28:57,329 dar iniciar 726 00:28:57,329 --> 00:28:59,609 iniciar juego 727 00:28:59,609 --> 00:29:00,849 ¿vale? 728 00:29:02,690 --> 00:29:03,950 iniciar juego 729 00:29:03,950 --> 00:29:06,769 venga 730 00:29:06,769 --> 00:29:11,750 ¿a dónde queremos mandar ese método? 731 00:29:12,470 --> 00:29:12,869 a 732 00:29:12,869 --> 00:29:15,009 ahorcado, me dice 733 00:29:15,009 --> 00:29:16,789 a la propia, porque tengo dos clases 734 00:29:16,789 --> 00:29:19,049 aunque no lo parezca, recordad 735 00:29:19,049 --> 00:29:21,069 que yo tengo dos clases en esta 736 00:29:21,069 --> 00:29:22,950 en esta clase, la app 737 00:29:22,950 --> 00:29:25,069 ahorcado, la frame y tengo la anónima 738 00:29:25,069 --> 00:29:26,950 que está ahí dentro, la anónima 739 00:29:26,950 --> 00:29:28,769 tengo dos, pues me dice 740 00:29:28,769 --> 00:29:30,349 ese método que quieres que sea 741 00:29:30,349 --> 00:29:32,589 un método de tu clase 742 00:29:32,589 --> 00:29:34,890 ahorcado o un método de la anónima 743 00:29:34,890 --> 00:29:36,910 si lo hago como método de la 744 00:29:36,910 --> 00:29:38,630 anónima, no he ganado nada 745 00:29:38,630 --> 00:29:40,809 porque lo que yo quería precisamente era que ese 746 00:29:40,809 --> 00:29:42,549 newActionListener no estuviera así de gordo. 747 00:29:43,309 --> 00:29:45,130 Si lo saco como a método de la anónima 748 00:29:45,130 --> 00:29:46,430 tampoco ha ganado tanto, ¿verdad? 749 00:29:46,549 --> 00:29:48,490 Vamos a sacarlo a método de la clase anónima. 750 00:29:50,109 --> 00:29:50,549 Vale. 751 00:29:52,390 --> 00:29:54,349 Si lo sacamos a método de la clase anónima, 752 00:29:54,450 --> 00:29:56,529 esta es mi clase anónima, que llama 753 00:29:56,529 --> 00:29:57,789 a iniciar juego 754 00:29:57,789 --> 00:30:00,789 e iniciar juego está justo aquí debajo, pero dentro 755 00:30:00,789 --> 00:30:02,009 de la misma clase anónima. 756 00:30:02,849 --> 00:30:04,890 No he ganado nada, porque yo lo que 757 00:30:04,890 --> 00:30:06,509 quería era que este 758 00:30:06,509 --> 00:30:08,609 adActionListener no me quedara tan largo. 759 00:30:08,750 --> 00:30:10,609 No he ganado nada, entonces vamos a deshacer esto. 760 00:30:10,809 --> 00:30:24,089 esto no queremos, vale, vamos a sacar este método, Ana, hoy no me voy a equivocar, ni una sola vez, 761 00:30:24,089 --> 00:30:36,349 y me temo que voy a llamarte la atención muchas veces, así que, justo, efectivamente, ahí le has dado, 762 00:30:36,349 --> 00:30:38,369 extraemos método otra vez 763 00:30:38,369 --> 00:30:40,329 iniciar juego 764 00:30:40,329 --> 00:30:44,119 iniciar juego 765 00:30:44,119 --> 00:30:45,819 a qué clase 766 00:30:45,819 --> 00:30:48,319 queremos que pertenezca ese método 767 00:30:48,319 --> 00:30:50,000 de todas las 768 00:30:50,000 --> 00:30:52,099 él me detecta que hay dos, la anónima 769 00:30:52,099 --> 00:30:54,559 podría haber clases internas 770 00:30:54,559 --> 00:30:56,400 de todo, o la propia 771 00:30:56,400 --> 00:30:58,559 quiero sacarlo a aparcado 772 00:30:58,559 --> 00:30:59,859 se llama iniciar juego 773 00:30:59,859 --> 00:31:01,819 ok, ala 774 00:31:01,819 --> 00:31:03,900 ahora ya, mi clase anónima 775 00:31:03,900 --> 00:31:06,180 llama a iniciar juego 776 00:31:06,180 --> 00:31:08,180 y ya se queda esto más cortito. 777 00:31:08,859 --> 00:31:11,079 Ya este constructor que construye la aplicación 778 00:31:11,079 --> 00:31:12,839 en el AdaptionListener ya tiene 779 00:31:12,839 --> 00:31:14,839 algo más corto. ¿Qué ahora yo quiero ver? ¿Qué hace 780 00:31:14,839 --> 00:31:16,920 iniciar juego? Pues, hombre, 781 00:31:17,039 --> 00:31:18,779 iniciar juego está 782 00:31:18,779 --> 00:31:20,779 aquí debajo, justo 783 00:31:20,779 --> 00:31:23,059 cuando ya acaba mi constructor, es un método de la clase 784 00:31:23,059 --> 00:31:24,740 e iniciar juego 785 00:31:24,740 --> 00:31:25,839 pues hace lo que yo le he metido. 786 00:31:28,549 --> 00:31:29,809 Fijaos que listo ha sido. 787 00:31:30,670 --> 00:31:31,549 Él ha detectado 788 00:31:31,549 --> 00:31:34,130 que esta variable que usa iniciar 789 00:31:34,130 --> 00:31:36,190 juego, la variable esta tan 790 00:31:36,190 --> 00:31:37,809 fea de 791 00:31:37,809 --> 00:31:39,910 escoja letra 792 00:31:39,910 --> 00:31:42,109 ha detectado que es una variable 793 00:31:42,109 --> 00:31:43,349 local del constructor. 794 00:31:44,549 --> 00:31:46,009 Vámonos arriba a mi constructor 795 00:31:46,009 --> 00:31:49,430 de aparcado. Esta 796 00:31:49,430 --> 00:31:51,450 variable, esta 797 00:31:51,450 --> 00:31:53,549 la de pruebe letra, es local 798 00:31:53,549 --> 00:31:54,289 del constructor. 799 00:31:55,950 --> 00:31:57,509 Luego hay que pasársela 800 00:31:57,509 --> 00:31:59,250 al método si quiere trabajar con él. 801 00:31:59,250 --> 00:32:01,089 Si esta variable no fuera local 802 00:32:01,089 --> 00:32:03,329 del constructor, sino que fuera una variable 803 00:32:03,329 --> 00:32:04,650 de mi clase como estas, 804 00:32:05,450 --> 00:32:07,269 no habría que habersela pasado al método. 805 00:32:07,630 --> 00:32:10,609 ¿vale? porque el propio método ya habría 806 00:32:10,609 --> 00:32:12,529 podido acceder a ella, porque sería 807 00:32:12,529 --> 00:32:14,549 una variable de clase, de mi clase app 808 00:32:14,549 --> 00:32:16,529 ahorcado, pero 809 00:32:16,529 --> 00:32:18,630 el builder me la ha metido 810 00:32:18,630 --> 00:32:20,589 aquí, dentro del constructor, me la ha metido 811 00:32:20,589 --> 00:32:22,210 local al método, la declaración 812 00:32:22,210 --> 00:32:23,630 me la ha metido ahí 813 00:32:23,630 --> 00:32:26,390 esta variable, entonces como me la ha metido ahí 814 00:32:26,390 --> 00:32:28,690 la herramienta de refactorización ha dicho 815 00:32:28,690 --> 00:32:30,509 oye, como esta variable es 816 00:32:30,509 --> 00:32:32,690 local al método, no es de la clase 817 00:32:32,690 --> 00:32:34,569 te la tengo que 818 00:32:34,569 --> 00:32:36,509 pasar a ti, iniciar juego para que trabajes 819 00:32:36,509 --> 00:32:37,630 con ella y se la ha pasado. 820 00:32:38,710 --> 00:32:39,789 ¡Qué feo esto! 821 00:32:41,069 --> 00:32:42,589 ¡Qué feo! Vamos a sacar 822 00:32:42,589 --> 00:32:43,690 la variable de clase 823 00:32:43,690 --> 00:32:46,390 y ya está. Y no hace falta que se la pasemos 824 00:32:46,390 --> 00:32:48,589 a iniciar juego. Porque si no estamos 825 00:32:48,589 --> 00:32:50,369 condenados, cada vez que ya hemos iniciado juego, 826 00:32:50,509 --> 00:32:51,450 pasarle esa etiqueta. 827 00:32:52,529 --> 00:32:54,410 ¡Vaya birria! ¿Vale? Nosotros sabemos 828 00:32:54,410 --> 00:32:56,670 programar, sabemos hacer las cosas bien, independientemente 829 00:32:56,670 --> 00:32:57,529 de que nos hagan las cosas. 830 00:32:58,390 --> 00:32:59,769 Vale, pues vamos a sacar 831 00:32:59,769 --> 00:33:01,910 esta variable de aquí 832 00:33:01,910 --> 00:33:05,940 a variable de clase. 833 00:33:07,200 --> 00:33:07,640 Facilísimo. 834 00:33:07,640 --> 00:33:09,640 la declaro 835 00:33:09,640 --> 00:33:11,059 en 836 00:33:11,059 --> 00:33:12,759 la clase 837 00:33:12,759 --> 00:33:14,480 la declaro aquí 838 00:33:14,480 --> 00:33:23,140 ya es variable de clase 839 00:33:23,140 --> 00:33:25,559 y aquí me limito a 840 00:33:25,559 --> 00:33:27,299 instanciarla solamente 841 00:33:27,299 --> 00:33:31,150 ya es variable de clase 842 00:33:31,150 --> 00:33:32,470 la he declarado fuera 843 00:33:32,470 --> 00:33:34,150 está aquí 844 00:33:34,150 --> 00:33:38,269 con lo cual ahora ya mi constructor 845 00:33:38,269 --> 00:33:41,009 mi método de constructor que construye y lo hace todo 846 00:33:41,009 --> 00:33:42,509 lo único que tiene que hacer es 847 00:33:42,509 --> 00:33:44,990 instanciarla y colocarla 848 00:33:44,990 --> 00:33:47,349 pero ya está declarada como variable de clase 849 00:33:47,349 --> 00:33:49,789 entonces al estar declarada como variable de clase 850 00:33:49,789 --> 00:33:52,170 este método iniciar juego 851 00:33:52,170 --> 00:33:54,049 que está aquí 852 00:33:54,049 --> 00:33:55,630 puede acceder a ella 853 00:33:55,630 --> 00:33:57,529 sin que se la pasemos por parámetro 854 00:33:57,529 --> 00:33:59,849 no necesita que se la pasemos 855 00:33:59,849 --> 00:34:01,750 porque es una variable de clase 856 00:34:01,750 --> 00:34:02,410 que está arriba 857 00:34:02,410 --> 00:34:05,430 entonces ya no lo necesita 858 00:34:05,430 --> 00:34:07,289 antes sí porque era una variable local 859 00:34:07,289 --> 00:34:08,789 al constructor 860 00:34:08,789 --> 00:34:11,090 ahora no porque es una variable que está arriba 861 00:34:11,090 --> 00:34:11,989 no hace falta que se la pasemos 862 00:34:11,989 --> 00:34:14,190 entonces mucho mejor me queda iniciar juego más limpio 863 00:34:14,190 --> 00:34:17,369 vale, entonces ahora ya cuando le llamemos 864 00:34:17,369 --> 00:34:19,329 desde el este, iniciar juego 865 00:34:19,329 --> 00:34:20,110 pues esto fuera 866 00:34:20,110 --> 00:34:22,690 vale 867 00:34:22,690 --> 00:34:24,289 bueno, pues estos 868 00:34:24,289 --> 00:34:27,389 pequeños detalles, esto es lo que tenéis 869 00:34:27,389 --> 00:34:29,469 que controlar como si fuera beber agua 870 00:34:29,469 --> 00:34:31,389 o coca cola 871 00:34:31,389 --> 00:34:33,349 o lo que fuera, porque esto 872 00:34:33,349 --> 00:34:35,449 es programar, vale, el tener todo esto 873 00:34:35,449 --> 00:34:37,449 claro, el saber el ámbito local de las variables 874 00:34:37,449 --> 00:34:39,710 el paso de parámetros, el cómo, todo esto 875 00:34:39,710 --> 00:34:40,789 vale, todo esto 876 00:34:40,789 --> 00:34:43,269 nadie va a programar por vosotros 877 00:34:43,269 --> 00:34:45,289 es que ni siquiera ChatGPT va a programar 878 00:34:45,289 --> 00:34:47,090 ChatGPT 879 00:34:47,090 --> 00:34:49,989 no, que no, no os engañéis 880 00:34:49,989 --> 00:34:51,710 ChatGPT te hace muchísimas cosas 881 00:34:51,710 --> 00:34:53,469 y te ahorra muchas horas de trabajo 882 00:34:53,469 --> 00:34:55,429 solo eso 883 00:34:55,429 --> 00:34:57,809 pero no te puede sustituir 884 00:34:57,809 --> 00:34:59,670 nunca va a programar como tú 885 00:34:59,670 --> 00:35:01,630 ni te va a hacer tu trabajo porque no puede hacerlo 886 00:35:01,630 --> 00:35:03,610 como tú, pero ayuda así 887 00:35:03,610 --> 00:35:05,349 tú tienes un esclavo 888 00:35:05,349 --> 00:35:06,210 maravilloso 889 00:35:06,210 --> 00:35:13,190 claro, pero esa ya la tienes que 890 00:35:13,190 --> 00:35:15,289 controlar a alguien. Entonces, ¿tú quieres ser 891 00:35:15,289 --> 00:35:17,170 de los que han echado o quieres 892 00:35:17,170 --> 00:35:18,409 ser de los que sabe 893 00:35:18,409 --> 00:35:21,269 usar el resultado de esas sillas? Porque esas sillas no se 894 00:35:21,269 --> 00:35:23,429 suben a producción directamente. Si suben a producción, 895 00:35:23,829 --> 00:35:24,489 se cae el planeta. 896 00:35:25,630 --> 00:35:27,349 Esas sillas, luego las utiliza 897 00:35:27,349 --> 00:35:29,030 alguien para todo lo que ha generado, 898 00:35:29,210 --> 00:35:31,210 ya darle la vuelta y ya subirlo 899 00:35:31,210 --> 00:35:32,750 a producción. Entonces, 900 00:35:32,909 --> 00:35:34,769 lógicamente, 50 personas no hacen falta. 901 00:35:35,590 --> 00:35:37,110 Pero 4 sí. Pues bueno, 902 00:35:37,210 --> 00:35:37,909 ser de esas 4. 903 00:35:39,550 --> 00:35:39,949 Dime. 904 00:35:43,190 --> 00:35:45,329 A ver, siempre puedes 905 00:35:45,329 --> 00:35:47,210 Y es lo recomendable, hacerlo a mano 906 00:35:47,210 --> 00:35:48,630 Tú te has dado cuenta de que esto 907 00:35:48,630 --> 00:35:50,570 Es demasiado código 908 00:35:50,570 --> 00:35:53,369 Pues te haces un método en la clase 909 00:35:53,369 --> 00:35:55,309 Te haces un método y lo metes 910 00:35:55,309 --> 00:35:56,489 Luego lo llamas y ya está 911 00:35:56,489 --> 00:35:59,010 Que quieres usar la refactorización del eclipse 912 00:35:59,010 --> 00:36:00,690 Que te va a liar más que otra cosa 913 00:36:00,690 --> 00:36:02,610 Y puede que te lo haga mal, pero si controlas mucho 914 00:36:02,610 --> 00:36:03,590 Pues a lo mejor no 915 00:36:03,590 --> 00:36:05,469 Pues lo único que he hecho ha sido 916 00:36:05,469 --> 00:36:07,949 Seleccionar 917 00:36:07,949 --> 00:36:08,929 A ver 918 00:36:08,929 --> 00:36:16,809 ya lo tengo, vale 919 00:36:16,809 --> 00:36:19,369 pues este era todo el código 920 00:36:19,369 --> 00:36:21,030 que estaba dentro del action perform 921 00:36:21,030 --> 00:36:23,389 todo este código que quería yo sacarlo a método auxiliar 922 00:36:23,389 --> 00:36:25,769 pues he seleccionado todo el código 923 00:36:25,769 --> 00:36:27,510 refactor 924 00:36:27,510 --> 00:36:29,429 porque refactor 925 00:36:29,429 --> 00:36:31,190 sabes lo que es, no te he pillado dormido 926 00:36:31,190 --> 00:36:32,010 cuando lo he explicado 927 00:36:32,010 --> 00:36:35,010 vale, pues refactor 928 00:36:35,010 --> 00:36:36,570 porque lo que quiero es cambiar el código 929 00:36:36,570 --> 00:36:38,809 refactor, extrae a método 930 00:36:38,809 --> 00:36:40,889 y ya está 931 00:36:40,889 --> 00:36:43,110 y que hemos hecho en extraer a método 932 00:36:43,110 --> 00:36:46,510 le hemos dicho 933 00:36:46,510 --> 00:36:49,510 el nombre que queremos que tenga ese método 934 00:36:49,510 --> 00:36:50,210 y aquí 935 00:36:50,210 --> 00:36:53,329 a cual de las dos clases 936 00:36:53,329 --> 00:36:55,269 que tiene el fichero, porque el fichero 937 00:36:55,269 --> 00:36:57,230 tiene la clase anónima 938 00:36:57,230 --> 00:37:00,750 tiene la clase anónima 939 00:37:00,750 --> 00:37:02,349 y la clase 940 00:37:02,349 --> 00:37:04,809 grandota, la clase que 941 00:37:04,809 --> 00:37:06,670 tiene el frame, me dice, ¿quieres que sea 942 00:37:06,670 --> 00:37:08,829 método de la clase anónima o quieres 943 00:37:08,829 --> 00:37:10,809 que sea método de tu frame? hombre, quiero que 944 00:37:10,809 --> 00:37:12,769 sea método de mi frame, si lo estoy sacando 945 00:37:12,769 --> 00:37:14,809 de la clase anónima no es para que sea un método 946 00:37:14,809 --> 00:37:16,889 de la propia clase anónima, entonces no he ganado 947 00:37:16,889 --> 00:37:18,630 nada en cuanto a legibilidad 948 00:37:18,630 --> 00:37:20,789 quiero que sea 949 00:37:20,789 --> 00:37:22,750 un método del pre, pues lo he sacado de ese método 950 00:37:22,750 --> 00:37:24,690 y ya está, y luego reviso que el código esté 951 00:37:24,690 --> 00:37:26,730 bien y al revisarlos cuando veo 952 00:37:26,730 --> 00:37:28,010 ¿para qué pasar la etiqueta? 953 00:37:28,670 --> 00:37:30,510 hazla como variable global y no se la tienes que pasar 954 00:37:30,510 --> 00:37:31,289 ¿vale? 955 00:37:34,130 --> 00:37:36,369 y ahora, ¿cómo hago yo para ir para adelante 956 00:37:36,369 --> 00:37:38,449 todo lo que he deshecho? ¿se puede? 957 00:37:42,449 --> 00:37:42,889 es 958 00:37:42,889 --> 00:37:47,099 Control Y, ¿no? 959 00:37:48,179 --> 00:37:49,519 Pues venga, vamos a... 960 00:37:54,340 --> 00:38:01,039 Vale, ya estoy en el futuro. 961 00:38:01,960 --> 00:38:03,480 Vale, pues ya estamos en el futuro. 962 00:38:04,579 --> 00:38:05,519 Venga, pues entonces... 963 00:38:08,219 --> 00:38:11,500 El evento del botoncito ya está. 964 00:38:12,659 --> 00:38:14,539 ¿Alguien tiene alguna duda sobre el evento del botoncito? 965 00:38:15,900 --> 00:38:19,519 todo recogido en un método, iniciar juego y listo, ¿vale? 966 00:38:20,179 --> 00:38:23,340 Que lo podríamos llamar desde cualquier sitio, ¿vale? 967 00:38:23,380 --> 00:38:28,360 Entonces, al iniciar juego vamos a ponerle un set test jugando, 968 00:38:28,360 --> 00:38:34,360 sí, ahora paramos, para que el botón también se ponga jugando 969 00:38:34,920 --> 00:38:38,619 y así, el botón jugar, ¿cómo se llamaba? 970 00:38:40,280 --> 00:38:42,780 Le refactorice y le cambia el nombre, ¿verdad? 971 00:38:43,960 --> 00:38:45,599 Botón jugar, vale. 972 00:38:45,900 --> 00:38:49,559 Entonces, voy a cambiarle el texto también desde iniciar para 973 00:38:49,559 --> 00:38:51,980 que se ponga jugando y se haga set visible, 974 00:38:52,300 --> 00:38:54,039 set enable, false, para que se vea. 975 00:38:54,840 --> 00:38:57,599 Entonces, botón jugar. 976 00:38:57,599 --> 00:39:04,880 Voy a añadir ya en el método, botón jugar, punto, 977 00:39:05,139 --> 00:39:15,420 set test, jugando y que lo deshabilite para que no se pueda 978 00:39:15,420 --> 00:39:16,760 volver a dar en medio del juego. 979 00:39:16,760 --> 00:39:19,119 botón jugar 980 00:39:19,119 --> 00:39:21,000 punto set enable 981 00:39:21,000 --> 00:39:23,900 false 982 00:39:23,900 --> 00:39:25,500 vale 983 00:39:25,500 --> 00:39:27,139 ahora antes de que nos vayamos 984 00:39:27,139 --> 00:39:29,019 porque el compilador me dice 985 00:39:29,019 --> 00:39:30,400 se me pone rojo 986 00:39:30,400 --> 00:39:37,019 perfecto muy bien porque botón jugar 987 00:39:37,019 --> 00:39:39,000 está dentro del método 988 00:39:39,000 --> 00:39:40,559 constructor declarado 989 00:39:40,559 --> 00:39:42,679 entonces como está dentro 990 00:39:42,679 --> 00:39:44,840 declarado pues no puedo acceder 991 00:39:45,619 --> 00:39:46,179 desde 992 00:39:46,179 --> 00:39:47,679 si 993 00:39:47,679 --> 00:39:50,739 como está dentro declarado 994 00:39:50,739 --> 00:39:52,500 no puedo acceder desde aquí fuera 995 00:39:52,500 --> 00:39:54,579 pues hombre, no pasa nada 996 00:39:54,579 --> 00:39:56,440 lógicamente 997 00:39:56,440 --> 00:39:58,820 vale 998 00:39:58,820 --> 00:40:02,389 a ver, aquí 999 00:40:02,389 --> 00:40:04,690 estas cosas 1000 00:40:04,690 --> 00:40:06,309 dejad de hacerlas desde ya 1001 00:40:06,309 --> 00:40:07,690 lógicamente, que es 1002 00:40:07,690 --> 00:40:10,269 solucionarlo con lo que me dice el eclipse 1003 00:40:10,269 --> 00:40:12,349 el eclipse te dice burradas, obviamente 1004 00:40:12,349 --> 00:40:14,570 que me ofreces 1005 00:40:14,570 --> 00:40:16,289 para cambiar esto, créame una variable 1006 00:40:16,289 --> 00:40:18,389 local jugar, que bien, que bonito 1007 00:40:18,389 --> 00:40:21,449 Ya está, estupendo 1008 00:40:21,449 --> 00:40:22,929 Ya se me puede quitar ese error 1009 00:40:22,929 --> 00:40:24,469 Tengo una variable local, jugar 1010 00:40:24,469 --> 00:40:28,389 Pero no ha arreglado nada 1011 00:40:28,389 --> 00:40:30,869 Y así podría seguir hasta el infinito arreglando 1012 00:40:30,869 --> 00:40:32,389 Vale, inicializa variable 1013 00:40:32,389 --> 00:40:35,710 ¡Hala! Se acabó el error de compilación 1014 00:40:35,710 --> 00:40:37,530 Ahora uno entrega el examen 1015 00:40:37,530 --> 00:40:40,230 Y dice, hostia, un examen que te cagas 1016 00:40:40,230 --> 00:40:41,869 Pero que burrada ha hecho uno 1017 00:40:41,869 --> 00:40:43,170 Yo no quiero 1018 00:40:43,170 --> 00:40:45,130 Crear un botón local 1019 00:40:45,130 --> 00:40:46,550 Y cambiarle a ese el texto 1020 00:40:46,550 --> 00:40:47,789 Quiero cambiárselo al otro 1021 00:40:47,789 --> 00:40:50,190 vale, cuidado con lo de 1022 00:40:50,190 --> 00:40:52,050 ti, ti, ti, el Eclipse me dice esto 1023 00:40:52,050 --> 00:40:54,070 lo hago, el Eclipse me dice 1024 00:40:54,070 --> 00:40:56,010 que me tire por un puente, me tiro, porque me subís 1025 00:40:56,010 --> 00:40:57,750 exámenes que son de tirarse por un puente 1026 00:40:57,750 --> 00:40:59,889 vale, entonces no es esto 1027 00:40:59,889 --> 00:41:04,840 estoy harta de mi familia 1028 00:41:04,840 --> 00:41:07,659 botón jugar, lo que quiero es sacarlo 1029 00:41:07,659 --> 00:41:09,400 a variable 1030 00:41:09,400 --> 00:41:11,699 variable 1031 00:41:11,699 --> 00:41:13,519 de clase, pues venga, no pasa 1032 00:41:13,519 --> 00:41:15,019 nada, nos vamos a botón jugar 1033 00:41:15,019 --> 00:41:17,539 y como os gustan 1034 00:41:17,539 --> 00:41:19,239 las vaguerías y ya con esto para 1035 00:41:19,239 --> 00:41:22,199 Digitamos, tú, ¿cómo te llames, Pedro? 1036 00:41:23,820 --> 00:41:27,739 Botón jugar, puedo sacar la variable de clase como hemos hecho antes con la etiqueta. 1037 00:41:28,239 --> 00:41:29,860 La hemos declarado fuera. 1038 00:41:31,280 --> 00:41:36,639 Pero si nos vamos a la herramienta de diseño, como botón jugar está en la de diseño. 1039 00:41:38,300 --> 00:41:39,840 Botón jugar está en la herramienta de diseño. 1040 00:41:40,320 --> 00:41:42,380 ¿Veis que aquí hay un botoncito muy mono? 1041 00:41:44,639 --> 00:41:48,340 Pues leed la ayuda que te dice este botoncito cuando lo pulsáis. 1042 00:41:48,340 --> 00:41:51,039 este botoncito te dice 1043 00:41:51,039 --> 00:41:53,599 lleva esta variable de variable local 1044 00:41:53,599 --> 00:41:54,679 a campo de la clase 1045 00:41:54,679 --> 00:41:57,300 pues otra cosa que me permite hacer 1046 00:41:57,300 --> 00:41:58,000 si soy vago 1047 00:41:58,000 --> 00:42:00,820 cambiarla de variable local 1048 00:42:00,820 --> 00:42:02,820 a variable de la clase 1049 00:42:02,820 --> 00:42:04,219 que es justo lo que yo quería 1050 00:42:04,219 --> 00:42:06,380 en lugar de hacerlo por el código 1051 00:42:06,380 --> 00:42:07,920 que tardó un segundo 1052 00:42:07,920 --> 00:42:10,179 lo puedo hacer por aquí que tardó tres 1053 00:42:10,179 --> 00:42:12,219 he tardado más pero como lo he hecho a lo vago 1054 00:42:12,219 --> 00:42:16,039 pues se puede hacer desde aquí 1055 00:42:16,039 --> 00:42:18,059 pero vamos es por lo que os decía antes 1056 00:42:18,059 --> 00:42:20,380 para que no digáis que no os enseño 1057 00:42:20,380 --> 00:42:21,880 las cosas para adolescentes vago 1058 00:42:21,880 --> 00:42:23,900 bueno, eso 1059 00:42:23,900 --> 00:42:26,500 entonces vamos a subirlo 1060 00:42:26,500 --> 00:42:27,079 ya está 1061 00:42:27,079 --> 00:42:30,320 te habría ahorrado mucho tiempo, ¿verdad? 1062 00:42:30,400 --> 00:42:30,880 muchísimo 1063 00:42:30,880 --> 00:42:34,400 vale, como veis, si ya la habéis 1064 00:42:34,400 --> 00:42:36,559 subido a variable de clase 1065 00:42:36,559 --> 00:42:37,900 el botón cambia de forma 1066 00:42:37,900 --> 00:42:40,119 el botón cambia porque ahora 1067 00:42:40,119 --> 00:42:42,159 podríamos hacer el inverso, que es pasar 1068 00:42:42,159 --> 00:42:44,320 de campo de clase a variable local 1069 00:42:44,320 --> 00:42:45,440 ¿vale? pero 1070 00:42:45,440 --> 00:42:48,980 bueno, ya la hemos pasado 1071 00:42:48,980 --> 00:42:51,599 y efectivamente, patapum 1072 00:42:51,599 --> 00:42:52,840 ya se ha 1073 00:42:52,840 --> 00:42:54,619 subido ahí 1074 00:42:54,619 --> 00:42:57,719 se ha subido ahí 1075 00:42:57,719 --> 00:42:59,599 y ahora ya mi método 1076 00:42:59,599 --> 00:43:01,719 de inicializar, ahora ya puede 1077 00:43:01,719 --> 00:43:03,539 acceder, o sea, ya he dado la solución 1078 00:43:03,539 --> 00:43:05,019 correcta al error de compilación 1079 00:43:05,019 --> 00:43:06,619 no la solución incorrecta 1080 00:43:06,619 --> 00:43:09,360 y ahora efectivamente, pues esto ya funciona 1081 00:43:09,360 --> 00:43:10,280 pone jugando 1082 00:43:10,280 --> 00:43:13,260 y ya está, vale 1083 00:43:13,260 --> 00:43:14,739 venga, ahora sí que paramos 1084 00:43:14,739 --> 00:43:15,739 Gracias.