ZAMYLA陈:让我们 乐趣与十五。 十五是你得到的第一场比赛 落实和它的互动性。 现在,不用担心。 你没有写 整个事情你自己。 看看分配代码,因为一 很多游戏结构已经 为你设置。 它接受并解析命令行 从用户和参数创建 董事会根据该输入。 它会检查,如果比赛赢和出口 一旦用户的赢得了比赛。 而赢得比赛,它得到 来自用户的输入和 调用的移动功能。 因此,我们将要实现4 十五的游戏功能, 初始化,绘制,移动和赢了。 首先,让我们来解决初始化。 在初始化,初始化为我们代表 董事会在2D整数数组。 这是一个叫做全局变量 板尺寸MAX和MAX, 电路板的最大尺寸。 现在,板的实际尺寸 是由用户,在表示给定 整数d,它可以 小于最大。 但是,在C中,你不能调整大小的数组, 所以你坚持 该最大尺寸。 您在初始化的工作就是填充 董事会的值 用正确的值。 现在,我们已经看到了一维数组,但 怎么二维数组的工作? 还有的行的索引,零 还收录一如既往,再 列。 你就会填满你的网格中 降值,就像这样。 格,0,0,行0,列 0,为8个,栅0,1是7。 这是一个例子,其中 D,小D,是3。 现在,董事会在十五还必须 包含一个空块,如果你曾经 玩物理游戏。 但是,董事会是一个整数数组,所以 所有的值必须是整数。 因此,它是由你来决定一个整数 值来表示一个空块。 要初始化你的板子,你可以使用 环结构,以包含 董事会的起始状态,其中板 我j表示在该元素 第i行第j列。 他们开始以降序排列,并 记住,如果块的数量 是奇数,那么你将不得不 交换的第2的和的位置。 所以,我们有我们的 初始化板。 现在,我们已经初始化我们 板,它的时间来绘制它。 抽奖将打印的当前状态 板,但你需要确保 在同一顺序打印瓷砖 你已经初始化它们。 而且你还需要格式化 您的号码正确。 因为我们可能有一个数字, 两位数,那么你要 前打印一个空格 任何单一的数字。 您可以使用通过使用 占位符 - 。 但是,请记住我们的空白。 我们不想打印的实际数量 我们已经选择代表 在电路板的空白,但我们也 不想打印什么都没有。 所以,你可以做的就是定义一个符号 或字符来表示 空块。 在前面的例子中,我选择了 下划线,然后你只需打印 每当你到达空白 空间在你的绘制函数。 因此得出将有嵌套的for循环。 事情是这样的。 对于每一行,然后对每个值 行,你要打印的 在这个空间的价值。 一旦印中的所有值 行中,那么你 可以打印一个新行。 请记住,你的绘制顺序 函数必须呼应或镜像订单 在你的初始化函数。 现在你初始化板和 你已经画了,是时候让 用户编辑它,使他们的举动。 所以在Fifteen.c功能, 方案需要来自用户的输入和 然后调用移动功能,通过 在瓦数的 用户希望移动。 现在,要小心。 这是在瓷砖的实际数目 而不是它的实际位置。 所以,你需要搜索的瓷砖的 位置,知道它在哪里。 现在,你应该只允许用户 做出的举动,如果它是合法的。 一个合法的举动是任何瓷砖是 相邻的空块。 这意味着,上面和下面,以 左侧和右侧。 所以,你需要知道在哪里 空白的瓷砖也是如此。 现在,你的一举一动都正在寻找 用户瓦,但它可能 不是最好的搜索空白瓷砖 因为每次你做的时间 每一次的 用户希望移动。 所以,相反,它是最好记得在哪里 空白的砖是用一些 以及命名变量。 所以一旦你允许用户使他们的 移动,他们很对他们的 的方式来赢得十五的游戏。 为了赢得十五,瓷砖的游戏 必须以特定的顺序,并 韩元功能检查 比赛赢​​。 它返回True,如果比赛赢和 瓷砖是正确的顺序, 否则为false。 因此,要赢得十五,瓷砖游戏 要增大的顺序,与 空块的右下角。 那么,你如何检查是否用户 感动了板到正确的 方向是什么? 那么,你会遍历板和 检查数值,以确保 他们是在正确的地方。 要做到这一点,你可以使用嵌套的 只是像你一样的循环 在抽奖和初始化。 有一对夫妇的方法来检查 和验证板是否 正确和获奖 形成,虽然。 如果你从左边到右边,开始 从顶行向下,然后每 数目必须大于 前一个。 注意什么值你已经 虽然选择了你的空块。 或者你可以使用一个计数器变量 确保每个值是否到位,如果 你想出某种 公式来表示这一点。 因此,有乐趣试验 与数学。 一旦你已经想出了一个办法,返回 真一旦用户已经赢得了比赛。 但是,如果任何值不正确,返回 假的,用户必须继续移动 因为他们还没有赢得这场比赛。 一旦你实现这个检查,并沿 与初始化,绘制和移动, 你已经完成十五的游戏。 恭喜你,玩得开心玩。 我的名字是Zamyla,这是CS50。