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