1 00:00:00,000 --> 00:00:09,386 2 00:00:09,386 --> 00:00:11,332 >> ZAMYLA Чан: Ајде да се Забавувајте се со петнаесет години. 3 00:00:11,332 --> 00:00:15,680 Петнаесет е првата игра што ќе го добиете да се спроведе и тоа е интерактивна. 4 00:00:15,680 --> 00:00:16,410 Сега, не да се грижите. 5 00:00:16,410 --> 00:00:18,830 Вие не треба да се напише на целата работа сами. 6 00:00:18,830 --> 00:00:22,320 Погледни го дистрибуција код, бидејќи многу на играта структура е веќе 7 00:00:22,320 --> 00:00:23,880 постави за вас. 8 00:00:23,880 --> 00:00:28,160 Таа прифаќа и парсира командната линија аргумент од страна на корисникот и создава 9 00:00:28,160 --> 00:00:31,230 одбор врз основа на таа влез. 10 00:00:31,230 --> 00:00:35,570 Се проверува дали играта е победи и излезите еднаш на корисникот победи на играта. 11 00:00:35,570 --> 00:00:38,340 И да победи на играта, таа добива влез од корисникот и 12 00:00:38,340 --> 00:00:40,610 повици во движење функција. 13 00:00:40,610 --> 00:00:44,600 >> Па ние ќе треба да се спроведува четири функции за играта на Петнаесет, 14 00:00:44,600 --> 00:00:48,110 init, цртаме, потег, и победи. 15 00:00:48,110 --> 00:00:50,340 Прво, да се справи со init. 16 00:00:50,340 --> 00:00:55,150 Во init, за иницијализира, ние ги претставуваме одборот во 2D број низа. 17 00:00:55,150 --> 00:01:01,070 И ова е глобална променлива наречена табла со димензии MAX, и MAX, 18 00:01:01,070 --> 00:01:03,880 максимална димензии на одборот. 19 00:01:03,880 --> 00:01:07,310 Сега, вистинската димензија на одборот е даден од страна на корисникот, претставен во 20 00:01:07,310 --> 00:01:10,620 на цел број D, што може да да биде помал од МАКС. 21 00:01:10,620 --> 00:01:14,660 Но, во C, не можете да ја намалите големината низи, па си заглават со 22 00:01:14,660 --> 00:01:16,730 дека максимална димензија. 23 00:01:16,730 --> 00:01:19,870 >> Вашата работа во init е да се доверат вредностите на одборот 24 00:01:19,870 --> 00:01:21,860 со точната вредност. 25 00:01:21,860 --> 00:01:26,910 Сега, видовме 1D низи, но како да 2D низи работа? 26 00:01:26,910 --> 00:01:30,985 Има индекс на ред, нула индексирани како и секогаш, а потоа, исто така, на 27 00:01:30,985 --> 00:01:32,100 колоната. 28 00:01:32,100 --> 00:01:36,120 И ќе пополните вашиот мрежа во опаѓачки вредности, исто како и оваа. 29 00:01:36,120 --> 00:01:43,260 Мрежа, 0, 0, ред 0, колона 0, е 8, мрежа 0, 1 е 7. 30 00:01:43,260 --> 00:01:48,500 Ова е за пример, каде што d, малку d, е 3. 31 00:01:48,500 --> 00:01:52,690 >> Сега, на одборот во Петнаесет исто така мора да содржат празно плочка, ако некогаш сте 32 00:01:52,690 --> 00:01:54,280 играа со физичката игра. 33 00:01:54,280 --> 00:01:59,210 Но, одборот е цел број низа, така сите вредности мора да бидат цели броеви. 34 00:01:59,210 --> 00:02:06,950 Па тоа е до вас да одлучите цел број вредност да претставуваат празно плочка. 35 00:02:06,950 --> 00:02:10,460 Да се ​​иницијализира вашиот форум, можете да го користите јамка структури да ги содржат 36 00:02:10,460 --> 00:02:16,440 почнувајќи држава на управниот одбор, каде одбор i j претставува елемент на 37 00:02:16,440 --> 00:02:19,380 ред i и колоната j. 38 00:02:19,380 --> 00:02:23,035 Тие почнуваат во опаѓачки редослед, и се сеќавам, дека ако бројот на плочки 39 00:02:23,035 --> 00:02:29,590 е чудно, тогаш ви се случува да мора да трампа на локацијата на 2 и 1. 40 00:02:29,590 --> 00:02:33,790 Па таму, ние имаме иницијализира одбор. 41 00:02:33,790 --> 00:02:37,440 >> Сега, дека ние сме се иницијализира нашите одбор, тоа е време да го подготви. 42 00:02:37,440 --> 00:02:41,260 Ждрепката ќе се печати на моменталната состојба на одбор, но треба да бидете сигурни дека 43 00:02:41,260 --> 00:02:44,260 да се печати плочки во истиот редослед дека сте ги иницијализира. 44 00:02:44,260 --> 00:02:47,300 И исто така ќе треба да го форматирам вашите броеви правилно. 45 00:02:47,300 --> 00:02:51,700 Затоа што ние би можеле да имаат едноцифрена бројка и двоцифрена, тогаш ќе сакате да 46 00:02:51,700 --> 00:02:54,540 печати празно место пред било едноцифрени броеви. 47 00:02:54,540 --> 00:03:00,150 Го користите дека со користење на случаеви -. 48 00:03:00,150 --> 00:03:02,550 >> Но запомнете нашите празни места. 49 00:03:02,550 --> 00:03:05,970 Ние не сакаме да се печати вистинскиот број дека ние сме избрани да ги претставуваат 50 00:03:05,970 --> 00:03:10,410 таа празна простор во одборот, но ние исто така не сакаат да се печати ништо на сите. 51 00:03:10,410 --> 00:03:15,310 Така што можете да направите е да се дефинира симбол или што го претставува 52 00:03:15,310 --> 00:03:17,050 празно плочка. 53 00:03:17,050 --> 00:03:21,030 Во претходните примери што сум избран за долни црти, и можеш само печати 54 00:03:21,030 --> 00:03:26,970 дека секогаш кога ќе стигнат до празни простор во вашиот нерешено функција. 55 00:03:26,970 --> 00:03:29,850 >> Па Ждрепката ќе се вгнездени јамки. 56 00:03:29,850 --> 00:03:31,150 Нешто како ова. 57 00:03:31,150 --> 00:03:35,660 За секој ред, а потоа за секоја вредност во ред, си оди за да се печати 58 00:03:35,660 --> 00:03:36,940 вредност во овој простор. 59 00:03:36,940 --> 00:03:39,470 Откако сте печатени сите вредности во ред, тогаш ќе 60 00:03:39,470 --> 00:03:41,180 може да печати на нова линија. 61 00:03:41,180 --> 00:03:47,730 Се сеќавам дека за да вашата нерешено функција мора ехо или огледало на цел 62 00:03:47,730 --> 00:03:48,980 во вашиот иницијализира функција. 63 00:03:48,980 --> 00:03:51,290 64 00:03:51,290 --> 00:03:55,160 >> Сега дека сте иницијализира на одборот и дека сте го извлечат, време е да ги споделите со 65 00:03:55,160 --> 00:03:58,500 корисникот да го уреди и да ги направат своите потези. 66 00:03:58,500 --> 00:04:03,840 Значи во Fifteen.c функција, Програмата трае влез од корисникот и 67 00:04:03,840 --> 00:04:07,690 тогаш повици во движење функција, минувајќи на бројот на плочка дека 68 00:04:07,690 --> 00:04:09,270 корисникот сака да се движат. 69 00:04:09,270 --> 00:04:10,380 Сега, да бидат внимателни. 70 00:04:10,380 --> 00:04:14,200 Ова е вистинскиот број на плочка а не неговата вистинска позиција. 71 00:04:14,200 --> 00:04:19,010 Значи, вие ќе треба да се бараат плочка е позиција да знае каде е. 72 00:04:19,010 --> 00:04:23,440 >> Сега, вие треба само да им овозможи на корисникот да направи потег, ако тоа е легално. 73 00:04:23,440 --> 00:04:27,910 Правно потег е било плочка што е во непосредна близина на празни плочка. 74 00:04:27,910 --> 00:04:32,020 Тоа значи, над и под, да на лево и на десно. 75 00:04:32,020 --> 00:04:34,680 Па ќе треба да се знае каде празно плочка е како добро. 76 00:04:34,680 --> 00:04:39,720 Сега, за секој потег сте во потрага за корисниците плочка, но тоа е веројатно 77 00:04:39,720 --> 00:04:43,030 не најдобро да барате празно плочка секој пат, бидејќи сте го прави тоа 78 00:04:43,030 --> 00:04:45,270 секој пат кога корисникот сака да се движат. 79 00:04:45,270 --> 00:04:50,300 Така, наместо, тоа е најдобро да се сети каде празно плочка е со користење на некои 80 00:04:50,300 --> 00:04:52,650 добро име променливи. 81 00:04:52,650 --> 00:04:55,970 Значи откако ќе им овозможи на корисникот да ги направат своите се движи, тие се на добар 82 00:04:55,970 --> 00:04:59,700 начин да се победи на играта на петнаесет години. 83 00:04:59,700 --> 00:05:03,940 >> Да победат во играта на Петнаесет, на плочки мора да биде во одредена цел, а 84 00:05:03,940 --> 00:05:06,970 го освои функција проверува дали играта е победи. 85 00:05:06,970 --> 00:05:10,290 Тоа Враќа true ако играта е победи и Плочите се во правилен ред, 86 00:05:10,290 --> 00:05:12,210 и false. 87 00:05:12,210 --> 00:05:15,830 Па да победат во играта на Петнаесет, плочки треба да се зголемува цел, со 88 00:05:15,830 --> 00:05:19,230 празно плочка во долниот десен агол. 89 00:05:19,230 --> 00:05:23,630 Па како не ви се провери дали корисникот се пресели на одборот во право 90 00:05:23,630 --> 00:05:25,010 ориентација? 91 00:05:25,010 --> 00:05:29,200 >> Добро, ќе iterate во текот на одборот и провери вредности да бидете сигурни дека 92 00:05:29,200 --> 00:05:30,550 тие се во право место. 93 00:05:30,550 --> 00:05:33,910 Да го направите ова, можете да го користите вгнездени за петелки исто како што направи 94 00:05:33,910 --> 00:05:36,520 во ждрепката и во init. 95 00:05:36,520 --> 00:05:40,430 Постојат неколку начини за да се провери ја и валидирајте ја дали членската група е 96 00:05:40,430 --> 00:05:42,860 точни и победничка формирање, иако. 97 00:05:42,860 --> 00:05:47,330 Ако одите од лево кон десно, почнувајќи од горниот ред надолу, а потоа на секои 98 00:05:47,330 --> 00:05:50,590 број мора да биде поголема од претходниот. 99 00:05:50,590 --> 00:05:54,530 Бидат внимателни околу она што вредност сум одбрале за вашиот празно плочка иако. 100 00:05:54,530 --> 00:05:59,250 >> Или можете да го користите контра променлива се осигура дека секоја вредност е во место, ако 101 00:05:59,250 --> 00:06:03,660 ќе излезе со некој вид на формула да ја претставува оваа. 102 00:06:03,660 --> 00:06:06,250 Па да се забавуваат експериментира со математика. 103 00:06:06,250 --> 00:06:10,930 Откако сте излезе со еден начин, враќањето Точно еднаш на корисникот е добитник на играта. 104 00:06:10,930 --> 00:06:15,950 Но ако некој вредност е лажен, враќањето Лажни, корисникот треба да продолжи движат 105 00:06:15,950 --> 00:06:18,440 бидејќи тие не се добива играта. 106 00:06:18,440 --> 00:06:23,030 Откако ќе ја имплементираат оваа проверка и, заедно со иницијализира, цртаме, и се движат, 107 00:06:23,030 --> 00:06:25,110 ќе завршите со играта на петнаесет години. 108 00:06:25,110 --> 00:06:27,620 Честитки и забавувај се игра. 109 00:06:27,620 --> 00:06:30,600 Моето име е Zamyla и ова е CS50. 110 00:06:30,600 --> 00:06:37,632