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