1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Tindrem Diverteix-te amb els Quinze. 3 00:00:11,332 --> 00:00:15,680 Quinze és el primer joc que s'obté per posar en pràctica i és interactiu. 4 00:00:15,680 --> 00:00:16,410 Ara bé, no es preocupi. 5 00:00:16,410 --> 00:00:18,830 No ha d'escriure la Tot això a tu mateix. 6 00:00:18,830 --> 00:00:22,320 Comproveu el codi de distribució pel fet que un Gran part de l'estructura de joc ja està 7 00:00:22,320 --> 00:00:23,880 preparat per a vostè. 8 00:00:23,880 --> 00:00:28,160 Accepta i analitza una línia d'ordres argument de l'usuari i crea un 9 00:00:28,160 --> 00:00:31,230 consellers en funció d'aquesta entrada. 10 00:00:31,230 --> 00:00:35,570 Comprova si el joc es guanya i sortides una vegada que l'usuari ha guanyat la partida. 11 00:00:35,570 --> 00:00:38,340 I per guanyar el joc, es posa entrada de l'usuari i 12 00:00:38,340 --> 00:00:40,610 crida a la funció Moure. 13 00:00:40,610 --> 00:00:44,600 >> Així que estarem implementant 04:00 funcions per al joc dels Quinze, 14 00:00:44,600 --> 00:00:48,110 init, dibuixar, moure i bestiar. 15 00:00:48,110 --> 00:00:50,340 En primer lloc, abordarem init. 16 00:00:50,340 --> 00:00:55,150 En init, per initialize, representem la junta en una matriu d'enters 2D. 17 00:00:55,150 --> 00:01:01,070 I aquesta és una variable global anomenada tauler amb dimensions MAX i MAX, 18 00:01:01,070 --> 00:01:03,880 les dimensions màximes de la junta. 19 00:01:03,880 --> 00:01:07,310 Ara, la dimensió real de la junta està donada per l'usuari, representat en 20 00:01:07,310 --> 00:01:10,620 el nombre enter d, el que podria ser menys de MAX. 21 00:01:10,620 --> 00:01:14,660 Però, en C, no es pot canviar la mida de les matrius, pel que vostè està encallat amb 22 00:01:14,660 --> 00:01:16,730 aquesta dimensió màxima. 23 00:01:16,730 --> 00:01:19,870 >> El seu treball en init és poblar els valors de la taula de 24 00:01:19,870 --> 00:01:21,860 amb el valor correcte. 25 00:01:21,860 --> 00:01:26,910 Ara, hem vist matrius 1D, però Com funcionen els arrays 2D? 26 00:01:26,910 --> 00:01:30,985 Hi ha un índex de la fila, zero indexats com sempre, i després també de 27 00:01:30,985 --> 00:01:32,100 la columna. 28 00:01:32,100 --> 00:01:36,120 I vostè omple la seva xarxa a en descendent valors, igual que aquest. 29 00:01:36,120 --> 00:01:43,260 Quadrícula, 0, 0, fila 0, columna 0, és 8, reixeta 0, 1 és 7. 30 00:01:43,260 --> 00:01:48,500 Aquest és un exemple on d, poc d, és 3. 31 00:01:48,500 --> 00:01:52,690 >> Ara, el Consell en Fifteen també ha contenir una fitxa en blanc, si alguna vegada has 32 00:01:52,690 --> 00:01:54,280 juga amb el joc físic. 33 00:01:54,280 --> 00:01:59,210 Però, tauler és una matriu d'enters, de manera que tots els valors han de ser sencers. 34 00:01:59,210 --> 00:02:06,950 Així que depèn de vostè per decidir un sencer valor per representar una rajola en blanc. 35 00:02:06,950 --> 00:02:10,460 Per inicialitzar la targeta, pot utilitzar bucle estructures per contenir la 36 00:02:10,460 --> 00:02:16,440 estat inicial de la junta, on a bord i j representa l'element en 37 00:02:16,440 --> 00:02:19,380 fila i i la columna j. 38 00:02:19,380 --> 00:02:23,035 Comencen en ordre descendent i, recordar, que si el nombre de rajoles 39 00:02:23,035 --> 00:02:29,590 és senar, llavors vostè va a haver de canviar la ubicació de 2 i d'1. 40 00:02:29,590 --> 00:02:33,790 Així que, tenim la nostra tauler inicialitzat. 41 00:02:33,790 --> 00:02:37,440 >> Ara, que hem inicialitzat nostre tauler, és el moment de dibuixar-lo. 42 00:02:37,440 --> 00:02:41,260 Draw imprimirà l'estat actual de la bord, però que necessita per assegurar-se que 43 00:02:41,260 --> 00:02:44,260 per imprimir rajoles en el mateix ordre que vostè els prèviament inicialitzats. 44 00:02:44,260 --> 00:02:47,300 I també cal formatar seus números correctament. 45 00:02:47,300 --> 00:02:51,700 Perquè pot ser que tinguem un sol dígit i dos dígits, llavors vostè vol 46 00:02:51,700 --> 00:02:54,540 imprimir un espai en blanc abans de els números d'un sol dígit. 47 00:02:54,540 --> 00:03:00,150 Utilitza que mitjançant l'ús el marcador de posició -. 48 00:03:00,150 --> 00:03:02,550 >> Però recordeu que el nostre espai en blanc. 49 00:03:02,550 --> 00:03:05,970 No volem imprimir el nombre real que hem triat per a representar 50 00:03:05,970 --> 00:03:10,410 aquest espai en blanc a la taula, però també no volen imprimir res en absolut. 51 00:03:10,410 --> 00:03:15,310 Així que el que pot fer és definir un símbol o el caràcter per representar la 52 00:03:15,310 --> 00:03:17,050 rajola en blanc. 53 00:03:17,050 --> 00:03:21,030 En els exemples anteriors que he triat un subratllat i després només imprimeix 54 00:03:21,030 --> 00:03:26,970 que cada vegada que s'arriba al blanc espai en la seva funció draw. 55 00:03:26,970 --> 00:03:29,850 >> Així sorteig s'han fet niu bucles for. 56 00:03:29,850 --> 00:03:31,150 Alguna cosa com això. 57 00:03:31,150 --> 00:03:35,660 Per a cada fila i, a continuació, per a cada valor de la fila, vostè va a imprimir la 58 00:03:35,660 --> 00:03:36,940 valor en aquest espai. 59 00:03:36,940 --> 00:03:39,470 Un cop s'ha imprès tots els valors a la primera fila, a continuació, 60 00:03:39,470 --> 00:03:41,180 pot imprimir una nova línia. 61 00:03:41,180 --> 00:03:47,730 Recordeu que l'ordre per a la seva sorteig funció ha de repetir o per reflectir l'ordre 62 00:03:47,730 --> 00:03:48,980 en la seva funció inicialitzat. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Ara que ha inicialitzat el tauler i que vostè ha dibuixat, és hora de deixar 65 00:03:55,160 --> 00:03:58,500 l'usuari editar i fer els seus moviments. 66 00:03:58,500 --> 00:04:03,840 Així que en la funció Fifteen.c, la programa es porta a la entrada de l'usuari i 67 00:04:03,840 --> 00:04:07,690 després crida a la funció de moviment, passant en el nombre de la rajola que el 68 00:04:07,690 --> 00:04:09,270 usuari desitja moure. 69 00:04:09,270 --> 00:04:10,380 Ara, aneu en compte. 70 00:04:10,380 --> 00:04:14,200 Aquest és el nombre real de la rajola i no la seva posició real. 71 00:04:14,200 --> 00:04:19,010 Per tant, haurà de buscar la rajola de posició de saber on és. 72 00:04:19,010 --> 00:04:23,440 >> Ara, només s'ha de permetre que l'usuari per fer un moviment si és legal. 73 00:04:23,440 --> 00:04:27,910 Un moviment legal és qualsevol peça que es va adjacent a la rajola en blanc. 74 00:04:27,910 --> 00:04:32,020 Això significa, per sobre i per sota, a l'esquerra i cap a la dreta. 75 00:04:32,020 --> 00:04:34,680 Pel que vostè necessita saber on la rajola en blanc és també. 76 00:04:34,680 --> 00:04:39,720 Ara, per cada moviment que vostè està buscant la rajola usuaris, però és probable que sigui 77 00:04:39,720 --> 00:04:43,030 no és el millor per buscar la rajola en blanc perquè cada vegada que ho fas 78 00:04:43,030 --> 00:04:45,270 cada vegada que el usuari desitja moure. 79 00:04:45,270 --> 00:04:50,300 Així que, en canvi, el millor és recordar on la rajola en blanc està utilitzant alguna 80 00:04:50,300 --> 00:04:52,650 així les variables amb nom. 81 00:04:52,650 --> 00:04:55,970 Així que una vegada que vostè permet que l'usuari realitzi la seva moviments, que estan bé en el seu 82 00:04:55,970 --> 00:04:59,700 camí per guanyar el joc dels Quinze. 83 00:04:59,700 --> 00:05:03,940 >> Per guanyar el joc dels Quinze, les rajoles ha d'estar en un ordre específic, i 84 00:05:03,940 --> 00:05:06,970 la funció de bestiar comprova si es guanya el joc. 85 00:05:06,970 --> 00:05:10,290 Retorna True si el joc es guanya i les fitxes estan en l'ordre correcte, 86 00:05:10,290 --> 00:05:12,210 i False en cas contrari. 87 00:05:12,210 --> 00:05:15,830 Així que per guanyar el joc de quinze, rajoles haurà de ser creixent, amb el 88 00:05:15,830 --> 00:05:19,230 rajola en blanc a la cantonada inferior dreta. 89 00:05:19,230 --> 00:05:23,630 Llavors, com comprovar si l'usuari ha mogut la targeta a la dreta 90 00:05:23,630 --> 00:05:25,010 orientació? 91 00:05:25,010 --> 00:05:29,200 >> Bé, tindràs una iteració a la pissarra i comprovar els valors per a assegurar-se que 92 00:05:29,200 --> 00:05:30,550 que estan en el lloc correcte. 93 00:05:30,550 --> 00:05:33,910 Per a això, pot utilitzar imbricada bucles igual que ho va fer 94 00:05:33,910 --> 00:05:36,520 en el sorteig i en init. 95 00:05:36,520 --> 00:05:40,430 Hi ha un parell de maneres de comprovar i validar si el Consell és 96 00:05:40,430 --> 00:05:42,860 correcta i una sèrie formació, però. 97 00:05:42,860 --> 00:05:47,330 Si vostè va d'esquerra a dreta, començant des de la fila de dalt a baix, llavors cada 98 00:05:47,330 --> 00:05:50,590 nombre ha de ser major que l'anterior. 99 00:05:50,590 --> 00:05:54,530 Aneu amb compte amb el que vostè valora haver triat per al seu rajola en blanc però. 100 00:05:54,530 --> 00:05:59,250 >> O vostè podria utilitzar una variable de comptador per assegureu-vos que cada valor està al seu lloc, si 101 00:05:59,250 --> 00:06:03,660 d'arribar a algun tipus de fórmula per representar això. 102 00:06:03,660 --> 00:06:06,250 Així que diverteix-te experimentant amb les matemàtiques. 103 00:06:06,250 --> 00:06:10,930 Una vegada que ha arribat a una forma, el retorn És cert, un cop l'usuari ha guanyat la partida. 104 00:06:10,930 --> 00:06:15,950 Però si algun valor és incorrecte, el retorn Fals, l'usuari ha de seguir avançant 105 00:06:15,950 --> 00:06:18,440 perquè no han guanyat la partida. 106 00:06:18,440 --> 00:06:23,030 Quan s'implementa aquest control i, al llarg de amb initialize, dibuixar, i ens movem, 107 00:06:23,030 --> 00:06:25,110 que hagi acabat el joc dels Quinze. 108 00:06:25,110 --> 00:06:27,620 Felicitacions i es diverteixen jugant. 109 00:06:27,620 --> 00:06:30,600 El meu nom és Zamyla i això és CS50. 110 00:06:30,600 --> 00:06:37,632