>> 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.