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.