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