1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA CHAN: Poďme sa zábava s pätnástimi. 3 00:00:11,332 --> 00:00:15,680 Pätnásť je prvá hra, ktorá vám realizovať a je to interaktívne. 4 00:00:15,680 --> 00:00:16,410 Teraz, nie sa báť. 5 00:00:16,410 --> 00:00:18,830 Nemusíte písať Celá tá vec sami. 6 00:00:18,830 --> 00:00:22,320 Pozrite sa na distribúciu kódu, pretože Mnoho štruktúry hry je už 7 00:00:22,320 --> 00:00:23,880 nastaviť pre vás. 8 00:00:23,880 --> 00:00:28,160 To prijíma a analyzuje príkazového riadku Argument od užívateľa a vytvára 9 00:00:28,160 --> 00:00:31,230 rada na základe tohto vstupu. 10 00:00:31,230 --> 00:00:35,570 Kontroluje, či je hra vyhral a východy akonáhle užívateľa vyhral hru. 11 00:00:35,570 --> 00:00:38,340 A vyhrať hru, dostane vstup od užívateľa a 12 00:00:38,340 --> 00:00:40,610 volá funkciu Move. 13 00:00:40,610 --> 00:00:44,600 >> Takže budeme sa vykonáva štyri funkcie pre hru pätnástich, 14 00:00:44,600 --> 00:00:48,110 init, kresliť, krok, a vyhral. 15 00:00:48,110 --> 00:00:50,340 Po prvé, poďme riešiť init. 16 00:00:50,340 --> 00:00:55,150 V init, initialize, zastupujeme doska v 2D celočíselné pole. 17 00:00:55,150 --> 00:01:01,070 A to je globálna premenná s názvom doska s rozmermi MAX, a MAX, 18 00:01:01,070 --> 00:01:03,880 maximálne rozmery dosky. 19 00:01:03,880 --> 00:01:07,310 Teraz, skutočný rozmer dosky je daná užívateľovi, znázorneného na 20 00:01:07,310 --> 00:01:10,620 číslo d, ktoré by mohli byť menšia než MAX. 21 00:01:10,620 --> 00:01:14,660 Ale v C, nemôžete zmeniť veľkosť poľa, takže ste uviazol s 22 00:01:14,660 --> 00:01:16,730 že maximálny rozmer. 23 00:01:16,730 --> 00:01:19,870 >> Vašou úlohou v init je k naplneniu hodnoty doske 24 00:01:19,870 --> 00:01:21,860 sa na správnu hodnotu. 25 00:01:21,860 --> 00:01:26,910 Teraz sme videli 1D pole, ale ako 2D pole fungujú? 26 00:01:26,910 --> 00:01:30,985 K dispozícii je index riadku, na nulu indexované ako vždy, a potom tiež 27 00:01:30,985 --> 00:01:32,100 stĺpec. 28 00:01:32,100 --> 00:01:36,120 A budete vyplniť vaše sieť v v zostupne hodnôt, rovnako ako to. 29 00:01:36,120 --> 00:01:43,260 Grid, 0, 0, 0 riadok, stĺpec 0, 8, mriežka 0, 1 je 7. 30 00:01:43,260 --> 00:01:48,500 To je pre príklad, kedy d, málo d je 3. 31 00:01:48,500 --> 00:01:52,690 >> Teraz, musia byť tiež tabule v pätnástich obsahujú prázdne dlaždice, ak ste niekedy 32 00:01:52,690 --> 00:01:54,280 hral si s fyzickou hrou. 33 00:01:54,280 --> 00:01:59,210 Ale doska je celé číslo poľa, takže všetky hodnoty musia byť celé čísla. 34 00:01:59,210 --> 00:02:06,950 Takže je to len na vás, rozhodnúť, celé číslo hodnoty predstavujú prázdne dlaždice. 35 00:02:06,950 --> 00:02:10,460 Ak chcete inicializovať vaše rady, môžete použiť slučka štruktúry obsahujú 36 00:02:10,460 --> 00:02:16,440 východiskový stav dosky, kde doska i j predstavuje prvok na 37 00:02:16,440 --> 00:02:19,380 riadok i stĺpec a j 38 00:02:19,380 --> 00:02:23,035 Začnú v zostupnom poradí a si, že v prípade, že počet dlaždíc 39 00:02:23,035 --> 00:02:29,590 je nepárne, potom budete musieť prehodiť umiestnenie 2 a 1. 40 00:02:29,590 --> 00:02:33,790 Takže tam máme naše inicializáciu dosky. 41 00:02:33,790 --> 00:02:37,440 >> Teraz, že sme inicializovaný naše doska, je čas nakresliť. 42 00:02:37,440 --> 00:02:41,260 Žrebovanie bude tlačiť aktuálny stav doska, ale musíte sa uistiť, 43 00:02:41,260 --> 00:02:44,260 vytlačiť dlaždice v rovnakom poradí že ste inicializácii je. 44 00:02:44,260 --> 00:02:47,300 A tiež je potrebné naformátovať vaše čísla správne. 45 00:02:47,300 --> 00:02:51,700 Vzhľadom k tomu, by sme mohli mať jednotlivé číslice a dvojité číslice, potom budete chcieť, aby 46 00:02:51,700 --> 00:02:54,540 vytlačiť prázdnu medzeru pred všetky jednotlivé číslice čísla. 47 00:02:54,540 --> 00:03:00,150 Môžete použiť, že pomocou zástupný symbol -. 48 00:03:00,150 --> 00:03:02,550 >> Ale pamätajte si našu medzeru. 49 00:03:02,550 --> 00:03:05,970 Nechceme tlačiť skutočný počet že sme sa rozhodli reprezentovať 50 00:03:05,970 --> 00:03:10,410 že prázdne miesto v rade, ale aj nechcete tlačiť vôbec nič. 51 00:03:10,410 --> 00:03:15,310 Takže to, čo môžete urobiť, je definovať symbol alebo znak reprezentovať 52 00:03:15,310 --> 00:03:17,050 prázdne dlaždice. 53 00:03:17,050 --> 00:03:21,030 V predchádzajúcich príkladoch som zvolil podčiarknutie, a potom stačí vytlačiť 54 00:03:21,030 --> 00:03:26,970 že vždy, keď sa dostanete prázdny priestor vo vašej draw funkcii. 55 00:03:26,970 --> 00:03:29,850 >> Takže remíza bude mať vnorené cykly for. 56 00:03:29,850 --> 00:03:31,150 Niečo také. 57 00:03:31,150 --> 00:03:35,660 Pre každý riadok, a potom pre každú hodnotu v riadok, budete k tlači 58 00:03:35,660 --> 00:03:36,940 hodnota v tomto priestore. 59 00:03:36,940 --> 00:03:39,470 Potom, čo ste sa vytlačiť všetky hodnoty v riadku, potom 60 00:03:39,470 --> 00:03:41,180 Môžete vytlačiť nový riadok. 61 00:03:41,180 --> 00:03:47,730 Nezabudnite, že príkaz na remízu Funkcia musí echo alebo odrážať objednávky 62 00:03:47,730 --> 00:03:48,980 v inicializovaný funkciu. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Teraz, keď inicializovaný dosku a že ste vyvodiť to, že je čas, aby 65 00:03:55,160 --> 00:03:58,500 užívateľ upraviť a aby ich pohyby. 66 00:03:58,500 --> 00:04:03,840 Takže vo funkcii Fifteen.c, Program má vstup od užívateľa a 67 00:04:03,840 --> 00:04:07,690 potom zavolá funkciu pohybu, odovzdaniu počtu na dlaždice, ktoré 68 00:04:07,690 --> 00:04:09,270 užívateľ chce pohybovať. 69 00:04:09,270 --> 00:04:10,380 Teraz, buďte opatrní. 70 00:04:10,380 --> 00:04:14,200 To je skutočný počet dlaždíc a nie jeho aktuálnej pozície. 71 00:04:14,200 --> 00:04:19,010 Takže, budete musieť hľadať dlaždice je Postoj, ktorý vie, kde to je. 72 00:04:19,010 --> 00:04:23,440 >> Teraz by ste mali povoliť len užívateľovi vykonať ťah, či je to legálne. 73 00:04:23,440 --> 00:04:27,910 Právny krok je nejaký dlaždice, ktoré je vedľa prázdne dlaždice. 74 00:04:27,910 --> 00:04:32,020 To znamená, že výška a nižšie, aby doľava a doprava. 75 00:04:32,020 --> 00:04:34,680 Takže budete musieť vedieť, kde prázdne dlaždice je tiež. 76 00:04:34,680 --> 00:04:39,720 Teraz, za každý pohyb hľadáte Užívatelia dlaždice, ale to je asi 77 00:04:39,720 --> 00:04:43,030 Nie je najlepšie hľadať prázdne dlaždice zakaždým, pretože to robíte 78 00:04:43,030 --> 00:04:45,270 každý čas užívateľ chce pohybovať. 79 00:04:45,270 --> 00:04:50,300 Takže namiesto toho, je to najlepšie, aby si spomenúť, kde prázdne dlaždice pomocou niektorej 80 00:04:50,300 --> 00:04:52,650 rovnako pomenované premenné. 81 00:04:52,650 --> 00:04:55,970 Takže akonáhle umožňujú užívateľovi, aby sa ich pohyby, ktoré sú dobre na ich 82 00:04:55,970 --> 00:04:59,700 spôsob, ako vyhrávať hru Fifteen. 83 00:04:59,700 --> 00:05:03,940 >> Ak chcete vyhrať hru Fifteen, dlaždíc musí byť v určitom poradí, a 84 00:05:03,940 --> 00:05:06,970 vyhral funkcia kontroluje, či Hra je vyhraná. 85 00:05:06,970 --> 00:05:10,290 Vracia TRUE, ak je hra vyhral a dlaždice sú v správnom poradí, 86 00:05:10,290 --> 00:05:12,210 a False inak. 87 00:05:12,210 --> 00:05:15,830 Takže vyhrať hru pätnásť, dlaždíc musí byť vzostupnom poradí, s 88 00:05:15,830 --> 00:05:19,230 prázdne dlaždice na pravom spodnom rohu. 89 00:05:19,230 --> 00:05:23,630 Tak ako sa vám zistiť, či používateľ sa presťahovala dosku do pravej 90 00:05:23,630 --> 00:05:25,010 orientácia? 91 00:05:25,010 --> 00:05:29,200 >> No, budete iterovat cez palubu a skontrolujte hodnoty, aby sa uistil, že 92 00:05:29,200 --> 00:05:30,550 že sú na správnom mieste. 93 00:05:30,550 --> 00:05:33,910 Ak to chcete vykonať, môžete použiť vnorené pre slučky rovnako ako vy 94 00:05:33,910 --> 00:05:36,520 v žrebovaní a init. 95 00:05:36,520 --> 00:05:40,430 Existuje niekoľko spôsobov, ako skontrolovať a overiť, či je doska 96 00:05:40,430 --> 00:05:42,860 správne a víťazný formácie, hoci. 97 00:05:42,860 --> 00:05:47,330 Ak pôjdete zľava doprava, počnúc z horného riadku dole, potom každý 98 00:05:47,330 --> 00:05:50,590 číslo musí byť väčšie ako ten predchádzajúci. 99 00:05:50,590 --> 00:05:54,530 Dávajte pozor na to, čo si ceníte si vybraný pre prázdne dlaždice hoci. 100 00:05:54,530 --> 00:05:59,250 >> Alebo môžete použiť premennú čítač pre zabezpečiť, aby každá hodnota je na mieste, ak 101 00:05:59,250 --> 00:06:03,660 môžete prísť s nejakým Vzorec reprezentovať to. 102 00:06:03,660 --> 00:06:06,250 Takže bavte sa experimentovať s matematikou. 103 00:06:06,250 --> 00:06:10,930 Potom, čo ste prišli na spôsob, návrat Pravda, akonáhle užívateľ vyhral hru. 104 00:06:10,930 --> 00:06:15,950 Ale ak existuje hodnota je nesprávna, návrat False, užívateľ musí pokračovať v pohybe 105 00:06:15,950 --> 00:06:18,440 pretože nevyhral hru. 106 00:06:18,440 --> 00:06:23,030 Akonáhle sa rozhodnete túto kontrolu a spolu s initialize, kresliť, a pohybovať sa, 107 00:06:23,030 --> 00:06:25,110 ste dokončili hru Fifteen. 108 00:06:25,110 --> 00:06:27,620 Gratulujeme a baviť hrať. 109 00:06:27,620 --> 00:06:30,600 Volám sa Zamyla a je to CS50. 110 00:06:30,600 --> 00:06:37,632