1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Vamos a tener Diviértete con los Quince. 3 00:00:11,332 --> 00:00:15,680 Quince es el primer juego que se obtiene para poner en práctica y es interactivo. 4 00:00:15,680 --> 00:00:16,410 Ahora bien, no se preocupe. 5 00:00:16,410 --> 00:00:18,830 Usted no tiene que escribir la Todo esto a ti mismo. 6 00:00:18,830 --> 00:00:22,320 Compruebe el código de distribución debido a que un Gran parte de la estructura de juego ya está 7 00:00:22,320 --> 00:00:23,880 preparado para usted. 8 00:00:23,880 --> 00:00:28,160 Acepta y analiza una línea de comandos argumento del usuario y crea un 9 00:00:28,160 --> 00:00:31,230 consejeros en función de esa entrada. 10 00:00:31,230 --> 00:00:35,570 Comprueba si el juego se gana y salidas una vez que el usuario ha ganado la partida. 11 00:00:35,570 --> 00:00:38,340 Y para ganar el juego, se pone entrada del usuario y 12 00:00:38,340 --> 00:00:40,610 llama a la función Mover. 13 00:00:40,610 --> 00:00:44,600 >> Así que vamos a estar implementando cuatro funciones para el juego de los Quince, 14 00:00:44,600 --> 00:00:48,110 init, dibujar, mover y ganado. 15 00:00:48,110 --> 00:00:50,340 En primer lugar, vamos a abordar init. 16 00:00:50,340 --> 00:00:55,150 En init, para initialize, representamos la junta en una matriz de enteros 2D. 17 00:00:55,150 --> 00:01:01,070 Y esta es una variable global llamada tablero con dimensiones MAX y MAX, 18 00:01:01,070 --> 00:01:03,880 las dimensiones máximas de la junta. 19 00:01:03,880 --> 00:01:07,310 Ahora, la dimensión real de la junta está dada por el usuario, representado en 20 00:01:07,310 --> 00:01:10,620 el número entero d, lo que podría ser menos de MAX. 21 00:01:10,620 --> 00:01:14,660 Pero, en C, no se puede cambiar el tamaño de las matrices, por lo que usted está atascado con 22 00:01:14,660 --> 00:01:16,730 esa dimensión máxima. 23 00:01:16,730 --> 00:01:19,870 >> Su trabajo en init es poblar los valores de la tabla de 24 00:01:19,870 --> 00:01:21,860 con el valor correcto. 25 00:01:21,860 --> 00:01:26,910 Ahora, hemos visto matrices 1D, pero ¿cómo funcionan los arrays 2D? 26 00:01:26,910 --> 00:01:30,985 Hay un índice de la fila, cero indexados como siempre, y luego también de 27 00:01:30,985 --> 00:01:32,100 la columna. 28 00:01:32,100 --> 00:01:36,120 Y usted llena su red en en descendiente valores, al igual que este. 29 00:01:36,120 --> 00:01:43,260 Cuadrícula, 0, 0, fila 0, columna 0, es 8, rejilla 0, 1 es 7. 30 00:01:43,260 --> 00:01:48,500 Este es un ejemplo en donde d, poco d, es 3. 31 00:01:48,500 --> 00:01:52,690 >> Ahora, el Consejo en Fifteen también debe contener una ficha en blanco, si alguna vez has 32 00:01:52,690 --> 00:01:54,280 juega con el juego físico. 33 00:01:54,280 --> 00:01:59,210 Pero, tablero es una matriz de enteros, por lo que todos los valores tienen que ser enteros. 34 00:01:59,210 --> 00:02:06,950 Así que depende de usted para decidir un entero valor para representar un azulejo en blanco. 35 00:02:06,950 --> 00:02:10,460 Para inicializar su tarjeta, puede utilizar bucle estructuras para contener la 36 00:02:10,460 --> 00:02:16,440 estado inicial de la junta, donde a bordo i j representa el elemento en 37 00:02:16,440 --> 00:02:19,380 fila i y la columna j. 38 00:02:19,380 --> 00:02:23,035 Comienzan en orden descendente y, recordar, que si el número de azulejos 39 00:02:23,035 --> 00:02:29,590 es impar, entonces usted va a tener que cambiar la ubicación de 2 y de 1. 40 00:02:29,590 --> 00:02:33,790 Así que, tenemos nuestra tablero inicializado. 41 00:02:33,790 --> 00:02:37,440 >> Ahora, que hemos inicializado nuestro tablero, es el momento de dibujarlo. 42 00:02:37,440 --> 00:02:41,260 Draw imprimirá el estado actual de la bordo, pero que necesita para asegurarse de que 43 00:02:41,260 --> 00:02:44,260 para imprimir azulejos en el mismo orden que usted los haya inicializado. 44 00:02:44,260 --> 00:02:47,300 Y también hay que formatear sus números correctamente. 45 00:02:47,300 --> 00:02:51,700 Porque puede ser que tengamos un solo dígito y dos dígitos, entonces usted quiere 46 00:02:51,700 --> 00:02:54,540 imprimir un espacio en blanco antes de los números de un solo dígito. 47 00:02:54,540 --> 00:03:00,150 Utiliza que mediante el uso el marcador de posición -. 48 00:03:00,150 --> 00:03:02,550 >> Pero recuerde que nuestro espacio en blanco. 49 00:03:02,550 --> 00:03:05,970 No queremos imprimir el número real que hemos elegido para representar 50 00:03:05,970 --> 00:03:10,410 ese espacio en blanco en la tabla, pero también no quieren imprimir nada en absoluto. 51 00:03:10,410 --> 00:03:15,310 Así que lo que puede hacer es definir un símbolo o el carácter para representar la 52 00:03:15,310 --> 00:03:17,050 azulejo en blanco. 53 00:03:17,050 --> 00:03:21,030 En los ejemplos anteriores que he elegido un subrayado y luego sólo imprime 54 00:03:21,030 --> 00:03:26,970 que cada vez que se llega al blanco espacio en su función draw. 55 00:03:26,970 --> 00:03:29,850 >> Así sorteo se han anidado bucles for. 56 00:03:29,850 --> 00:03:31,150 Algo como esto. 57 00:03:31,150 --> 00:03:35,660 Para cada fila y, a continuación, para cada valor de la fila, usted va a imprimir la 58 00:03:35,660 --> 00:03:36,940 valor en este espacio. 59 00:03:36,940 --> 00:03:39,470 Una vez que se ha impreso todos los valores en la primera fila, a continuación, 60 00:03:39,470 --> 00:03:41,180 puede imprimir una nueva línea. 61 00:03:41,180 --> 00:03:47,730 Recuerde que la orden para su sorteo función debe repetir o para reflejar el orden 62 00:03:47,730 --> 00:03:48,980 en su función inicializado. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Ahora que ha inicializado el tablero y que usted ha dibujado, es hora de dejar 65 00:03:55,160 --> 00:03:58,500 al usuario editar y hacer sus movimientos. 66 00:03:58,500 --> 00:04:03,840 Así que en la función Fifteen.c, la programa se lleva a la entrada del usuario y 67 00:04:03,840 --> 00:04:07,690 luego llama a la función de movimiento, pasando en el número de la baldosa que el 68 00:04:07,690 --> 00:04:09,270 usuario desea mover. 69 00:04:09,270 --> 00:04:10,380 Ahora, tenga cuidado. 70 00:04:10,380 --> 00:04:14,200 Este es el número real de la baldosa y no su posición real. 71 00:04:14,200 --> 00:04:19,010 Por lo tanto, tendrá que buscar el azulejo de posición de saber dónde está. 72 00:04:19,010 --> 00:04:23,440 >> Ahora, sólo se debe permitir que el usuario para hacer un movimiento si es legal. 73 00:04:23,440 --> 00:04:27,910 Un movimiento legal es cualquier pieza que se va adyacente a la baldosa en blanco. 74 00:04:27,910 --> 00:04:32,020 Eso significa, por encima y por debajo, a la izquierda y hacia la derecha. 75 00:04:32,020 --> 00:04:34,680 Por lo que usted necesita saber dónde el azulejo en blanco es también. 76 00:04:34,680 --> 00:04:39,720 Ahora, por cada movimiento que usted está buscando el azulejo usuarios, pero es probable que sea 77 00:04:39,720 --> 00:04:43,030 no es el mejor para buscar el azulejo en blanco porque cada vez que lo haces 78 00:04:43,030 --> 00:04:45,270 cada vez que el usuario desea mover. 79 00:04:45,270 --> 00:04:50,300 Así que, en cambio, lo mejor es recordar dónde el azulejo en blanco está usando alguna 80 00:04:50,300 --> 00:04:52,650 así las variables con nombre. 81 00:04:52,650 --> 00:04:55,970 Así que una vez que usted permite que el usuario realice su movimientos, que están bien en su 82 00:04:55,970 --> 00:04:59,700 camino para ganar el juego de los Quince. 83 00:04:59,700 --> 00:05:03,940 >> Para ganar el juego de los Quince, las baldosas tiene que estar en un orden específico, y 84 00:05:03,940 --> 00:05:06,970 la función de ganado comprueba si se gana el juego. 85 00:05:06,970 --> 00:05:10,290 Devuelve True si el juego se gana y las fichas están en el orden correcto, 86 00:05:10,290 --> 00:05:12,210 y False en caso contrario. 87 00:05:12,210 --> 00:05:15,830 Así que para ganar el juego de quince, azulejos tendrá que ser creciente, con el 88 00:05:15,830 --> 00:05:19,230 azulejo en blanco en la esquina inferior derecha. 89 00:05:19,230 --> 00:05:23,630 Entonces, ¿cómo comprobar si el usuario ha movido la tarjeta en la derecha 90 00:05:23,630 --> 00:05:25,010 orientación? 91 00:05:25,010 --> 00:05:29,200 >> Bueno, tendrás una iteración en la pizarra y comprobar los valores para asegurarse de que 92 00:05:29,200 --> 00:05:30,550 que están en el lugar correcto. 93 00:05:30,550 --> 00:05:33,910 Para ello, puede utilizar anidada bucles igual que lo hizo 94 00:05:33,910 --> 00:05:36,520 en el sorteo y en init. 95 00:05:36,520 --> 00:05:40,430 Hay un par de maneras de comprobar y validar si el Consejo es 96 00:05:40,430 --> 00:05:42,860 correcta y una serie formación, sin embargo. 97 00:05:42,860 --> 00:05:47,330 Si usted va de izquierda a derecha, comenzando desde la fila de arriba hacia abajo, entonces cada 98 00:05:47,330 --> 00:05:50,590 número debe ser mayor que la anterior. 99 00:05:50,590 --> 00:05:54,530 Tenga cuidado con lo que usted valora haber elegido para su azulejo en blanco sin embargo. 100 00:05:54,530 --> 00:05:59,250 >> O usted podría utilizar una variable de contador para asegúrese de que cada valor está en su lugar, si 101 00:05:59,250 --> 00:06:03,660 que llegar a algún tipo de fórmula para representar esto. 102 00:06:03,660 --> 00:06:06,250 Así que diviértete experimentando con las matemáticas. 103 00:06:06,250 --> 00:06:10,930 Una vez que usted ha llegado a una forma, el retorno Es cierto, una vez que el usuario ha ganado la partida. 104 00:06:10,930 --> 00:06:15,950 Pero si algún valor es incorrecto, el retorno Falso, el usuario tiene que seguir avanzando 105 00:06:15,950 --> 00:06:18,440 porque no han ganado la partida. 106 00:06:18,440 --> 00:06:23,030 Una vez que se implementa este control y, a lo largo de con initialize, dibujar, y nos movemos, 107 00:06:23,030 --> 00:06:25,110 que haya terminado el juego de los Quince. 108 00:06:25,110 --> 00:06:27,620 Felicitaciones y se divierten jugando. 109 00:06:27,620 --> 00:06:30,600 Mi nombre es Zamyla y esto es CS50. 110 00:06:30,600 --> 00:06:37,632