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 调用的移动功能。 13 00:00:40,610 --> 00:00:44,600 >> 因此,我们将要实现4 十五的游戏功能, 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 整数d,它可以 小于最大。 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 现在,我们已经看到了一维数组,但 怎么二维数组的工作? 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 这是一个例子,其中 D,小D,是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 董事会的起始状态,其中板 我j表示在该元素 37 00:02:16,440 --> 00:02:19,380 第i行第j列。 38 00:02:19,380 --> 00:02:23,035 他们开始以降序排列,并 记住,如果块的数量 39 00:02:23,035 --> 00:02:29,590 是奇数,那么你将不得不 交换的第2的和的位置。 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 >> 因此得出将有嵌套的for循环。 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 所以,你需要搜索的瓷砖的 位置,知道它在哪里。 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 它返回True,如果比赛赢和 瓷砖是正确的顺序, 86 00:05:10,290 --> 00:05:12,210 否则为false。 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 一旦你实现这个检查,并沿 与初始化,绘制和移动, 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