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 выклікае функцыю Move. 13 00:00:40,610 --> 00:00:44,600 >> Такім чынам, мы збіраемся быць рэалізацыі чатыры функцыі для гульні ў пятнаццаць, 14 00:00:44,600 --> 00:00:48,110 ініцыялізацыі, маляваць, перамяшчаць, і выйграў. 15 00:00:48,110 --> 00:00:50,340 Па-першае, давайце возьмемся ініцыялізацыі. 16 00:00:50,340 --> 00:00:55,150 У ініцыялізацыі, для ініцыялізацыі мы ўяўляем плата ў 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 цэлае д, якія маглі б быць менш, чым MAX. 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 >> Ваша задача ў ініцыялізацыі з'яўляецца для запаўнення значэнні борце 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 Гэта для прыкладу, у якім д, мала д, з'яўляецца 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 пачынаючы стан дошцы, дзе дошка І Й ўяўляе элемент у 37 00:02:16,440 --> 00:02:19,380 радок я і слупок 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 Такім чынам, вы павінны будзеце шукаць плітка'S Становішча ведаць, дзе яна ёсць. 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 Яна вяртае Праўда, калі гульня выйграная і пліткі знаходзяцца ў правільным парадку, 86 00:05:10,290 --> 00:05:12,210 і ў адваротным выпадку. 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 >> Ну, вы будзеце перабору дошцы і праверыць значэнні, каб пераканацца, што 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 у розыгрышы і ў ініцыялізацыі. 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 Пасля рэалізацыі гэтай праверкі, а разам з Initialize, маляваць, і рухацца, 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