1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Pojďme se zábava s patnácti. 3 00:00:11,332 --> 00:00:15,680 Patnáct je první hra, která vám realizovat a je to interaktivní. 4 00:00:15,680 --> 00:00:16,410 Nyní, ne se bát. 5 00:00:16,410 --> 00:00:18,830 Nemusíte psát Celá ta věc sami. 6 00:00:18,830 --> 00:00:22,320 Podívejte se na distribuci kódu, protože Mnoho struktury hry je již 7 00:00:22,320 --> 00:00:23,880 nastavit pro vás. 8 00:00:23,880 --> 00:00:28,160 To přijímá a analyzuje příkazového řádku Argument od uživatele a vytváří 9 00:00:28,160 --> 00:00:31,230 rada na základě tohoto vstupu. 10 00:00:31,230 --> 00:00:35,570 Kontroluje, zda je hra vyhrál a východy jakmile uživatele vyhrál hru. 11 00:00:35,570 --> 00:00:38,340 A vyhrát hru, dostane vstup od uživatele a 12 00:00:38,340 --> 00:00:40,610 volá funkci Move. 13 00:00:40,610 --> 00:00:44,600 >> Takže budeme se provádí čtyři funkce pro hru patnácti, 14 00:00:44,600 --> 00:00:48,110 init, kreslit, krok, a vyhrál. 15 00:00:48,110 --> 00:00:50,340 Za prvé, pojďme řešit init. 16 00:00:50,340 --> 00:00:55,150 V init, initialize, zastupujeme deska ve 2D celočíselné pole. 17 00:00:55,150 --> 00:01:01,070 A to je globální proměnná s názvem deska s rozměry MAX, a MAX, 18 00:01:01,070 --> 00:01:03,880 maximální rozměry desky. 19 00:01:03,880 --> 00:01:07,310 Nyní, skutečný rozměr desky je dána uživateli, znázorněného na 20 00:01:07,310 --> 00:01:10,620 číslo d, které by mohly být menší než MAX. 21 00:01:10,620 --> 00:01:14,660 Ale v C, nemůžete změnit velikost pole, takže jste uvízl s 22 00:01:14,660 --> 00:01:16,730 že maximální rozměr. 23 00:01:16,730 --> 00:01:19,870 >> Vaším úkolem v init je k naplnění hodnoty desce 24 00:01:19,870 --> 00:01:21,860 se na správnou hodnotu. 25 00:01:21,860 --> 00:01:26,910 Teď jsme viděli 1D pole, ale jak 2D pole fungují? 26 00:01:26,910 --> 00:01:30,985 K dispozici je index řádku, na nulu indexovány jako vždy, a pak také 27 00:01:30,985 --> 00:01:32,100 sloupec. 28 00:01:32,100 --> 00:01:36,120 A budete vyplnit vaše síť v v sestupně hodnot, stejně jako to. 29 00:01:36,120 --> 00:01:43,260 Grid, 0, 0, 0 řádek, sloupec 0, 8, mřížka 0, 1 je 7. 30 00:01:43,260 --> 00:01:48,500 To je pro příklad, kdy d, málo d je 3. 31 00:01:48,500 --> 00:01:52,690 >> Nyní, musí být také tabule v patnácti obsahují prázdné dlaždice, pokud jste někdy 32 00:01:52,690 --> 00:01:54,280 hrál si s fyzickou hrou. 33 00:01:54,280 --> 00:01:59,210 Ale deska je celé číslo pole, takže všechny hodnoty musí být celá čísla. 34 00:01:59,210 --> 00:02:06,950 Takže je to jen na vás, rozhodnout, celé číslo hodnoty představují prázdné dlaždice. 35 00:02:06,950 --> 00:02:10,460 Chcete-li inicializovat vaše rady, můžete použít smyčka struktury obsahují 36 00:02:10,460 --> 00:02:16,440 výchozí stav desky, kde deska i j představuje prvek na 37 00:02:16,440 --> 00:02:19,380 řádek i sloupec a j. 38 00:02:19,380 --> 00:02:23,035 Začnou v sestupném pořadí a si, že v případě, že počet dlaždic 39 00:02:23,035 --> 00:02:29,590 je liché, pak budete muset prohodit umístění 2 a 1. 40 00:02:29,590 --> 00:02:33,790 Takže tam máme naše inicializaci desky. 41 00:02:33,790 --> 00:02:37,440 >> Nyní, že jsme inicializován naše deska, je čas nakreslit. 42 00:02:37,440 --> 00:02:41,260 Losování bude tisknout aktuální stav deska, ale musíte se ujistit, 43 00:02:41,260 --> 00:02:44,260 vytisknout dlaždice ve stejném pořadí že jste inicializaci je. 44 00:02:44,260 --> 00:02:47,300 A také je třeba naformátovat vaše čísla správně. 45 00:02:47,300 --> 00:02:51,700 Vzhledem k tomu, bychom mohli mít jednotlivé číslice a dvojité číslice, pak budete chtít, aby 46 00:02:51,700 --> 00:02:54,540 vytisknout prázdnou mezeru před veškeré jednotlivé číslice čísla. 47 00:02:54,540 --> 00:03:00,150 Můžete použít, že pomocí zástupný symbol -. 48 00:03:00,150 --> 00:03:02,550 >> Ale pamatujte si naši mezeru. 49 00:03:02,550 --> 00:03:05,970 Nechceme tisknout skutečný počet že jsme se rozhodli reprezentovat 50 00:03:05,970 --> 00:03:10,410 že prázdné místo v radě, ale také nechcete tisknout vůbec nic. 51 00:03:10,410 --> 00:03:15,310 Takže to, co můžete udělat, je definovat symbol nebo znak reprezentovat 52 00:03:15,310 --> 00:03:17,050 prázdné dlaždice. 53 00:03:17,050 --> 00:03:21,030 V předchozích příkladech jsem zvolil podtržení, a pak stačí vytisknout 54 00:03:21,030 --> 00:03:26,970 že vždy, když se dostanete prázdný prostor ve vaší draw funkci. 55 00:03:26,970 --> 00:03:29,850 >> Takže remíza bude mít vnořené cykly for. 56 00:03:29,850 --> 00:03:31,150 Něco takového. 57 00:03:31,150 --> 00:03:35,660 Pro každý řádek, a pak pro každou hodnotu v řádek, budete k tisku 58 00:03:35,660 --> 00:03:36,940 hodnota v tomto prostoru. 59 00:03:36,940 --> 00:03:39,470 Poté, co jste se vytisknout všechny hodnoty v řádku, pak 60 00:03:39,470 --> 00:03:41,180 Můžete vytisknout nový řádek. 61 00:03:41,180 --> 00:03:47,730 Nezapomeňte, že příkaz pro remízu Funkce musí echo nebo odrážet objednávky 62 00:03:47,730 --> 00:03:48,980 v inicializován funkci. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Nyní, když inicializován desku a že jste vyvodit to, že je čas, aby 65 00:03:55,160 --> 00:03:58,500 uživatel upravit a aby jejich pohyby. 66 00:03:58,500 --> 00:04:03,840 Takže ve funkci Fifteen.c, Program má vstup od uživatele a 67 00:04:03,840 --> 00:04:07,690 pak zavolá funkci přesunu, předání počtu na dlaždice, které 68 00:04:07,690 --> 00:04:09,270 uživatel chce pohybovat. 69 00:04:09,270 --> 00:04:10,380 Nyní, buďte opatrní. 70 00:04:10,380 --> 00:04:14,200 To je skutečný počet dlaždic a ne jeho aktuální pozice. 71 00:04:14,200 --> 00:04:19,010 Takže, budete muset hledat dlaždice je Postoj, který ví, kde to je. 72 00:04:19,010 --> 00:04:23,440 >> Nyní byste měli povolit jen uživateli provést tah, jestli je to legální. 73 00:04:23,440 --> 00:04:27,910 Právní krok je nějaký dlaždice, které je vedle prázdné dlaždice. 74 00:04:27,910 --> 00:04:32,020 To znamená, že výše a níže, aby doleva a doprava. 75 00:04:32,020 --> 00:04:34,680 Takže budete muset vědět, kde prázdné dlaždice je také. 76 00:04:34,680 --> 00:04:39,720 Nyní, za každý pohyb hledáte Uživatelé dlaždice, ale to je asi 77 00:04:39,720 --> 00:04:43,030 Není nejlepší hledat prázdné dlaždice pokaždé, protože to děláte 78 00:04:43,030 --> 00:04:45,270 každý čas uživatel chce pohybovat. 79 00:04:45,270 --> 00:04:50,300 Takže místo toho, je to nejlepší, aby si vzpomenout, kde prázdné dlaždice pomocí některé 80 00:04:50,300 --> 00:04:52,650 stejně pojmenované proměnné. 81 00:04:52,650 --> 00:04:55,970 Takže jakmile umožňují uživateli, aby se jejich pohyby, které jsou dobře na jejich 82 00:04:55,970 --> 00:04:59,700 způsob, jak vyhrávat hru Fifteen. 83 00:04:59,700 --> 00:05:03,940 >> Chcete-li vyhrát hru Fifteen, dlaždic musí být v určitém pořadí, a 84 00:05:03,940 --> 00:05:06,970 vyhrál funkce kontroluje, zda Hra je vyhrána. 85 00:05:06,970 --> 00:05:10,290 Vrací TRUE, pokud je hra vyhrál a dlaždice jsou ve správném pořadí, 86 00:05:10,290 --> 00:05:12,210 a False jinak. 87 00:05:12,210 --> 00:05:15,830 Takže vyhrát hru patnáct, dlaždic musí být vzestupném pořadí, s 88 00:05:15,830 --> 00:05:19,230 prázdné dlaždice na pravém spodním rohu. 89 00:05:19,230 --> 00:05:23,630 Tak jak se vám zjistit, zda uživatel se přestěhovala desku do pravé 90 00:05:23,630 --> 00:05:25,010 orientace? 91 00:05:25,010 --> 00:05:29,200 >> No, budete iterovat přes palubu a zkontrolujte hodnoty, aby se ujistil, že 92 00:05:29,200 --> 00:05:30,550 že jsou na správném místě. 93 00:05:30,550 --> 00:05:33,910 Chcete-li to provést, můžete použít vnořené pro smyčky stejně jako vy 94 00:05:33,910 --> 00:05:36,520 v losování a init. 95 00:05:36,520 --> 00:05:40,430 Existuje několik způsobů, jak zkontrolovat a ověřit, zda je deska 96 00:05:40,430 --> 00:05:42,860 správné a vítězný formace, ačkoli. 97 00:05:42,860 --> 00:05:47,330 Pokud půjdete zleva doprava, počínaje z horního řádku dolů, pak každý 98 00:05:47,330 --> 00:05:50,590 číslo musí být větší než ten předchozí. 99 00:05:50,590 --> 00:05:54,530 Dávejte pozor na to, co si ceníte si vybrán pro prázdné dlaždice ačkoli. 100 00:05:54,530 --> 00:05:59,250 >> Nebo můžete použít proměnnou čítač pro zajistit, aby každá hodnota je na místě, pokud 101 00:05:59,250 --> 00:06:03,660 můžete přijít s nějakým Vzorec reprezentovat to. 102 00:06:03,660 --> 00:06:06,250 Takže bavte se experimentovat s matematikou. 103 00:06:06,250 --> 00:06:10,930 Poté, co jste přišli na způsob, návrat Pravda, jakmile uživatel vyhrál hru. 104 00:06:10,930 --> 00:06:15,950 Ale pokud existuje hodnota je nesprávná, návrat False, uživatel musí pokračovat v pohybu 105 00:06:15,950 --> 00:06:18,440 protože nevyhrál hru. 106 00:06:18,440 --> 00:06:23,030 Jakmile se rozhodnete tuto kontrolu a spolu s initialize, kreslit, a pohybovat se, 107 00:06:23,030 --> 00:06:25,110 jste dokončili hru Fifteen. 108 00:06:25,110 --> 00:06:27,620 Gratulujeme a bavit hrát. 109 00:06:27,620 --> 00:06:30,600 Jmenuji se Zamyla a je to CS50. 110 00:06:30,600 --> 00:06:37,632