1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Imos ter divertirse con quince. 3 00:00:11,332 --> 00:00:15,680 Quince é o primeiro xogo que obteña para aplicar e é interactivo. 4 00:00:15,680 --> 00:00:16,410 Agora, non se preocupe. 5 00:00:16,410 --> 00:00:18,830 Non ten que escribir o todo mesmo. 6 00:00:18,830 --> 00:00:22,320 Comprobe o código de distribución, porque un moito da estrutura do xogo xa está 7 00:00:22,320 --> 00:00:23,880 configurado para ti. 8 00:00:23,880 --> 00:00:28,160 El acepta e analiza unha liña de comandos argumento do usuario e crea unha 9 00:00:28,160 --> 00:00:31,230 placa con base nesa entrada. 10 00:00:31,230 --> 00:00:35,570 El comprobar se o xogo está gañado e sae xa que o usuario do gañou o xogo. 11 00:00:35,570 --> 00:00:38,340 E para gañar o xogo, el está entrada do usuario e 12 00:00:38,340 --> 00:00:40,610 chama a función Move. 13 00:00:40,610 --> 00:00:44,600 >> Entón, nós imos estar aplicando catro funcións para o xogo de quince anos, 14 00:00:44,600 --> 00:00:48,110 init, deseñar, mover, e gañou. 15 00:00:48,110 --> 00:00:50,340 En primeiro lugar, imos resolver o init. 16 00:00:50,340 --> 00:00:55,150 No init, para arrincar, representamos a tarxeta en un array de enteiros 2D. 17 00:00:55,150 --> 00:01:01,070 E esta é unha variable global chamada tarxeta con dimensións MAX e MAX, 18 00:01:01,070 --> 00:01:03,880 as dimensións máximas do consello. 19 00:01:03,880 --> 00:01:07,310 Agora, a dimensión real do consello é dada polo usuario, representada en 20 00:01:07,310 --> 00:01:10,620 o número enteiro d, o que podería ser inferior a MAX. 21 00:01:10,620 --> 00:01:14,660 Pero, en C, non se pode cambiar o tamaño matrices, entón está preso con 22 00:01:14,660 --> 00:01:16,730 esta dimensión máxima. 23 00:01:16,730 --> 00:01:19,870 >> O seu traballo en init é cubrir os valores do consello 24 00:01:19,870 --> 00:01:21,860 co valor correcto. 25 00:01:21,860 --> 00:01:26,910 Agora vimos matrices 1D, pero como matrices 2D funciona? 26 00:01:26,910 --> 00:01:30,985 Hai un índice da liña, zerar indexados, como sempre, e logo tamén de 27 00:01:30,985 --> 00:01:32,100 a columna. 28 00:01:32,100 --> 00:01:36,120 E vai encher a súa reixa en en descendente valores, así como este. 29 00:01:36,120 --> 00:01:43,260 Reixa, 0, 0, liña 0, columna 0, 8 é, reixa 0, 1 a 7. 30 00:01:43,260 --> 00:01:48,500 É dicir, para un exemplo onde d, pouco d, é 3. 31 00:01:48,500 --> 00:01:52,690 >> Agora, o consello en Quince deben tamén conter unha tella en branco, se xa 32 00:01:52,690 --> 00:01:54,280 xogado co xogo físico. 33 00:01:54,280 --> 00:01:59,210 Pero o consello é un array de enteiros, de xeito todos os valores deben ser números enteiros. 34 00:01:59,210 --> 00:02:06,950 Polo tanto, cómpre a vostede decide un enteiro valor para representar un azulexo branco. 35 00:02:06,950 --> 00:02:10,460 Para arrincar a súa tarxeta, pode utilizar estruturas de loop para conter a 36 00:02:10,460 --> 00:02:16,440 estado inicial da placa, onde bordo i j representa o elemento en 37 00:02:16,440 --> 00:02:19,380 i fila e columna j. 38 00:02:19,380 --> 00:02:23,035 Comezan en orde decrecente e, lembrar que, se o número de pezas 39 00:02:23,035 --> 00:02:29,590 é estraño, entón vai ter que cambiar a localización de 2 e de 1. 40 00:02:29,590 --> 00:02:33,790 Polo tanto, hai, temos a nosa tarxeta inicializar. 41 00:02:33,790 --> 00:02:37,440 >> Agora que temos a nosa inicializar tarxeta, é hora de deseña-la. 42 00:02:37,440 --> 00:02:41,260 Sorteo imprimirá o estado actual da tarxeta, pero ten que estar seguro de 43 00:02:41,260 --> 00:02:44,260 para imprimir azulexos na mesma orde que teña iniciar eles. 44 00:02:44,260 --> 00:02:47,300 E tamén precisa formatar seus números correctamente. 45 00:02:47,300 --> 00:02:51,700 Porque pode ter un díxito e dous díxitos, entón quere 46 00:02:51,700 --> 00:02:54,540 imprimir un espazo en branco antes todos os números de un díxito. 47 00:02:54,540 --> 00:03:00,150 Usa isto usando o espazo reservado -. 48 00:03:00,150 --> 00:03:02,550 >> Pero lembre-se o noso espazo en branco. 49 00:03:02,550 --> 00:03:05,970 Non queremos imprimir o número real que temos escollido para representar 50 00:03:05,970 --> 00:03:10,410 que o espazo en branco na tarxeta, pero tamén Non quere imprimir nada. 51 00:03:10,410 --> 00:03:15,310 Entón o que podes facer é definir un símbolo ou caracteres para representar o 52 00:03:15,310 --> 00:03:17,050 azulexo branco. 53 00:03:17,050 --> 00:03:21,030 Nos exemplos anteriores, eu escollín un subliñado, e entón só imprimir 54 00:03:21,030 --> 00:03:26,970 que sempre que chegar ao branco espazo na súa función de empate. 55 00:03:26,970 --> 00:03:29,850 >> Entón deseñar terá aniñados para loops. 56 00:03:29,850 --> 00:03:31,150 Algo parecido a isto. 57 00:03:31,150 --> 00:03:35,660 Para cada liña, a continuación, para cada valor de a liña, está indo para imprimir o 58 00:03:35,660 --> 00:03:36,940 valor neste espazo. 59 00:03:36,940 --> 00:03:39,470 Tras impreso todos os valores na liña, entón 60 00:03:39,470 --> 00:03:41,180 pode imprimir unha nova liña. 61 00:03:41,180 --> 00:03:47,730 Lembre que a orde para o sorteo función debe ecoar ou reflictir a orde 62 00:03:47,730 --> 00:03:48,980 na súa función inicializar. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Agora que arrincar a bordo e que teña deseñado tanto, é hora de deixar 65 00:03:55,160 --> 00:03:58,500 o usuario editalo e facer os seus movementos. 66 00:03:58,500 --> 00:04:03,840 Así, en función Fifteen.c, o programa leva a entrada do usuario e 67 00:04:03,840 --> 00:04:07,690 logo chama a función de movemento, pasando o número da tella que o 68 00:04:07,690 --> 00:04:09,270 usuario quere mover. 69 00:04:09,270 --> 00:04:10,380 Agora, teña coidado. 70 00:04:10,380 --> 00:04:14,200 Este é o número real da tella e non a súa posición real. 71 00:04:14,200 --> 00:04:19,010 Entón, ten que buscar a tella de posición de saber onde está. 72 00:04:19,010 --> 00:04:23,440 >> Agora, só debe permitir que o usuario para facer un movemento, se é legal. 73 00:04:23,440 --> 00:04:27,910 Un tiro legal é calquera peza que se adxacente ao azulexo branco. 74 00:04:27,910 --> 00:04:32,020 Isto significa que, por encima e por baixo, para á esquerda e á dereita. 75 00:04:32,020 --> 00:04:34,680 Entón, vai ter saber onde o azulexo branco é tan ben. 76 00:04:34,680 --> 00:04:39,720 Agora, para cada movemento que está a buscar a tella de usuarios, pero é probablemente 77 00:04:39,720 --> 00:04:43,030 non mellor para buscar o azulexo branco cada vez, porque está a facer iso 78 00:04:43,030 --> 00:04:45,270 cada vez que o usuario quere mover. 79 00:04:45,270 --> 00:04:50,300 Entón, en vez diso, é mellor lembrar de onde o azulexo branco está a usar algún 80 00:04:50,300 --> 00:04:52,650 ben nomeado variables. 81 00:04:52,650 --> 00:04:55,970 Entón, cando facer que o usuario faga a súa movementos, están ben no seu 82 00:04:55,970 --> 00:04:59,700 xeito de gañar o xogo dos Quince. 83 00:04:59,700 --> 00:05:03,940 >> Para gañar o partido dos Quince, as tellas Ten que estar nunha orde específica, e 84 00:05:03,940 --> 00:05:06,970 a función gañou comproba se o xogo está gañado. 85 00:05:06,970 --> 00:05:10,290 El retorna True se o xogo está gañado e as tellas son na orde correcta, 86 00:05:10,290 --> 00:05:12,210 e False caso contrario. 87 00:05:12,210 --> 00:05:15,830 Entón, para gañar o xogo de quince anos, tellas ten que ser por orde crecente, co 88 00:05:15,830 --> 00:05:19,230 azulexo branco na parte inferior dereita. 89 00:05:19,230 --> 00:05:23,630 Así como comprobar se o usuario mudouse a tarxeta no dereito 90 00:05:23,630 --> 00:05:25,010 orientación? 91 00:05:25,010 --> 00:05:29,200 >> Ben, vai interactuar sobre a tarxeta e comprobar os valores para asegurarse de que 92 00:05:29,200 --> 00:05:30,550 están no lugar seguro. 93 00:05:30,550 --> 00:05:33,910 Para iso, pode utilizar nested loops, como fixo 94 00:05:33,910 --> 00:05:36,520 no sorteo e no init. 95 00:05:36,520 --> 00:05:40,430 Hai un par de formas de comprobar e validar se o consello é 96 00:05:40,430 --> 00:05:42,860 correcta e unha gañadora formación, con todo. 97 00:05:42,860 --> 00:05:47,330 Se vai de esquerda a dereita, comezando a partir da liña de arriba para abaixo, a continuación, cada 98 00:05:47,330 --> 00:05:50,590 número debe ser maior que o anterior. 99 00:05:50,590 --> 00:05:54,530 Teña coidado co que ten valor escolleu para a súa azulexo branco aínda. 100 00:05:54,530 --> 00:05:59,250 >> Ou pode utilizar unha variable de contador para asegurar que cada valor é no lugar, no caso de 101 00:05:59,250 --> 00:06:03,660 veña con algún tipo de fórmula para representar isto. 102 00:06:03,660 --> 00:06:06,250 Entón divírtete se experimentando coa matemática. 103 00:06:06,250 --> 00:06:10,930 Unha vez que chegar a unha forma, o retorno Certo, xa que o usuario gañou o xogo. 104 00:06:10,930 --> 00:06:15,950 Pero se algún valor está incorrecto, o regreso False, o usuario ten que seguir movendo 105 00:06:15,950 --> 00:06:18,440 por que non gañou o partido. 106 00:06:18,440 --> 00:06:23,030 Despois de aplicar esta verificación e, xunto con initialize, deseñar e moverse, 107 00:06:23,030 --> 00:06:25,110 xa rematou o xogo dos Quince. 108 00:06:25,110 --> 00:06:27,620 Parabéns e divertirse xogando. 109 00:06:27,620 --> 00:06:30,600 O meu nome é Zamyla e este é CS50. 110 00:06:30,600 --> 00:06:37,632