>> ZAMYLA Чан: Давайце весела з пятнаццаці.
Пятнаццаць гэта першая гульня, што вы атрымаеце для рэалізацыі, і гэта інтэрактыўны.
Зараз, каб не хвалявацца.
Вы не павінны пісаць Усё гэта самастойна.
Паглядзіце на код размеркавання, таму што шмат гульнявога профілю ўжо
створаны для вас.
Ён прымае і аналізуе камандную радок Аргумент ад карыстальніка і стварае
дошка заснаваны на гэтых дадзеных.
Ён правярае, гульня выйграная і выхады як толькі карыстач выйграў гульню.
І, каб выйграць гульню, ён атрымлівае ўваход ад карыстальніка і
выклікае функцыю Move.
>> Такім чынам, мы збіраемся быць рэалізацыі чатыры функцыі для гульні ў пятнаццаць,
ініцыялізацыі, маляваць, перамяшчаць, і выйграў.
Па-першае, давайце возьмемся ініцыялізацыі.
У ініцыялізацыі, для ініцыялізацыі мы ўяўляем плата ў 2D цэлае масіва.
І гэта глабальная пераменная называецца плата з памерамі MAX і MAX,
максімальныя памеры платы.
Цяпер, фактычны памер платы задаецца карыстачом, прадстаўленага ў
цэлае д, якія маглі б быць менш, чым MAX.
Але, у C, вы не можаце змяніць памер масіваў, так што вы затрымаліся з
што максімальны памер.
>> Ваша задача ў ініцыялізацыі з'яўляецца для запаўнення значэнні борце
з правільным значэннем.
Цяпер мы бачылі 1D масівы, але як 2D масівы працаваць?
Там у індэкс радкі, нуль індэксуецца як заўсёды, а затым і
слупок.
І вы будзеце запоўніць ваш сетку ў ў змяншэння значэння, гэтак жа, як гэта.
Сетка, 0, 0, радок 0, слупок 0, 8, сетка 0, 1 роўна 7.
Гэта для прыкладу, у якім д, мала д, з'яўляецца 3.
>> Цяпер, дошка ў пятнаццаці павінны таксама ўтрымліваюць пустым, калі вы калі-небудзь
гуляў з фізічнай гульні.
Але, дошка масіў цэлых лікаў, так усё значэнні павінны быць цэлымі лікамі.
Так што гэта залежыць ад вас, каб вырашыць, цэлае значэнне для прадстаўлення пусты пліткі.
Для ініцыялізацыі ваш савет, вы можаце выкарыстоўваць Цыклічныя структуры па стрымліванні
пачынаючы стан дошцы, дзе дошка І Й ўяўляе элемент у
радок я і слупок J.
Яны пачынаюць у парадку змяншэння і, памятаць, што, калі колькасць плітак
няцотная, то вы будзеце мець, каб памяняць размяшчэнне 2 і 1.
Так што, у нас ёсць ініцыялізацыі платы.
>> Цяпер, калі мы ініцыялізацыі нашага дошка, пара намаляваць яго.
Нічыя будзе друкаваць бягучы стан дошка, але вы павінны пераканацца,
друкаваць пліткі ў тым жа парадку што вы ініцыялізацыі іх.
І вы таксама павінны адфарматаваць Вашы ліку правільна.
Таму што мы, магчыма, прыйдзецца адной лічбы і двухзначнымі лічбамі, то вы хочаце
друкаваць прабел перад Любы адзіночны лічбы лічбамі.
Вы можаце выкарыстоўваць, што з дапамогай запаўняльнік -.
>> Але памятайце наш прабел.
Мы не хочам, каб надрукаваць фактычнае лік што мы абралі для прадстаўлення
што прабел у савет, але мы таксама не хачу, каб друкаваць наогул нічога.
Так што вы можаце зрабіць, гэта вызначыць сімвал або знак, каб прадставіць
пусты пліткі.
У папярэдніх прыкладах я выбраў падкрэсліваюць, а затым вы проста надрукаваць
што кожны раз, калі вы дасягне нарыхтоўкі прастору ў вашай функцыі малявання.
>> Так прыцягнуць будзе ўкладзеных цыклаў.
Нешта накшталт гэтага.
Для кожнага радка, а затым для кожнага значэння ў радок, вы збіраецеся друкаваць
значэнне ў гэтай прасторы.
Пасля таго як вы друкуюцца ўсе значэння у радку, то вы
можаце раздрукаваць новую радок.
Памятаеце, што парадак для вашага унічыю функцыя павінна рэха ці люстэрка парадак
ў вашым ініцыялізавацца функцыі.
>> Зараз, калі вы ініцыялізацыі дошку і што вы намалявалі яго, прыйшоў час, каб
карыстальнік рэдагаваць яго і зрабіць свае хады.
Такім чынам, у функцыі Fifteen.c, Праграма прымае дадзеныя ад карыстальніка і
затым выклікае функцыю перамяшчэння, праходзячы у колькасці пліткі, якія
карыстальнік хоча рухацца.
Цяпер, будзьце асцярожныя.
Гэта фактычная колькасць пліткі а не яго фактычнае становішча.
Такім чынам, вы павінны будзеце шукаць плітка'S Становішча ведаць, дзе яна ёсць.
>> Зараз, вы павінны толькі дазволіць карыстачу каб зрабіць ход, калі гэта законна.
Юрыдычная крок з'яўляецца любая плітка, якая з'яўляецца побач з пустой пліткі.
Гэта азначае, што, зверху і знізу, каб налева і направа.
Такім чынам, вы павінны будзеце ведаць, дзе нарыхтоўкі плітка, а таксама.
Зараз, для кожны рух вы шукаеце карыстальнікі пліткі, але гэта, верагодна,
ці не лепш шукаць пусты пліткі кожны раз, калі, таму што вы гэта робіце
кожны раз, калі карыстальнік хоча рухацца.
Такім чынам, замест, то лепш ўспомніць, дзе нарыхтоўкі плітка, выкарыстоўваючы некаторыя
добра называюць зменныя.
Таму, як толькі вы дазволіць карыстачу зрабіць іх рухаецца, яны добра на іх
спосаб выйграць гульню з пятнаццаці.
>> Каб выйграць гульню пятнаццаці гадоў, пліткі павінны быць у пэўным парадку, і
выйграў функцыя правярае, ці з'яўляецца гульня выйграная.
Яна вяртае Праўда, калі гульня выйграная і пліткі знаходзяцца ў правільным парадку,
і ў адваротным выпадку.
Так, каб выйграць гульню пятнаццаці гадоў, пліткі павінны быць большай парадку, пры гэтым
пусты пліткі ў правым ніжнім куце.
Такім чынам, як вы праверыць ці можа карыстач пераехаў плату ў праве
арыентацыя?
>> Ну, вы будзеце перабору дошцы і праверыць значэнні, каб пераканацца, што
яны знаходзяцца ў правільным месцы.
Каб зрабіць гэта, вы можаце выкарыстоўваць укладзеныя для завес, як вы зрабілі
у розыгрышы і ў ініцыялізацыі.
Ёсць некалькі спосабаў, каб праверыць і правяраць, ці з'яўляецца плата
правільна і выйгрыш фарміраванне, аднак.
Калі вы ідзяце злева направа, пачынаючы ад верхняй радкі ўніз, то кожны
лік павінна быць больш папярэдні.
Будзьце асцярожныя, якое значэнне вы маеце выбралі для вашага пусты пліткі ж.
>> Ці вы можаце выкарыстоўваць зменную-лічыльнік, каб гарантаваць, што кожнае значэнне знаходзіцца ў месцы, калі
вы прыдумалі нейкую формула для прадстаўлення гэтага.
Так весела эксперыментаваць з матэматыкай.
Пасля таго як вы прыдумалі спосаб, вяртанне Праўда, як толькі карыстач выйграў гульню.
Але калі любую значэнне не адпавядае норме, вяртанне Хлусня, карыстальнік павінен працягваць рух
таму што яны не выйгралі гульню.
Пасля рэалізацыі гэтай праверкі, а разам з Initialize, маляваць, і рухацца,
вы скончылі гульню з пятнаццаці.
Віншаванні і весела гуляць.
Мяне клічуць Zamyla і гэта CS50.