0:00:01.686,0:00:04.237 一粒寶石,一粒很好的寶石! 0:00:04.237,0:00:08.275 但你知嗎?如果能夠把寶石串成一行總比一顆寶石好! 0:00:08.275,0:00:12.562 當然,我們知道一串寶石最好的排列方式是弄個迴圈 0:00:12.562,0:00:16.162 我們用一個 for 迴圈畫出一行 12 個寶石 0:00:16.162,0:00:19.523 由左至右橫跨螢幕 0:00:19.523,0:00:22.304 好像那樣,因此那是一個 0:00:22.304,0:00:31.186 for (定義新函數 i 等於 0; i 比 12 少; i ++) 0:00:31.186,0:00:36.429 然後我們把這條線移到這裏 0:00:36.429,0:00:40.305 現在我們有 12 夥寶石,但它們卻是在右方一個疊著一個 0:00:40.305,0:00:43.401 記住,我們要令它們在螢幕上橫向分佈 0:00:43.401,0:00:45.941 那就是我們得要更改 X 0:00:45.941,0:00:49.524 還有 36 現在就是 X,但我們想要它每次都不同 0:00:49.524,0:00:51.859 就是說我們要讓它因 i 而變動 0:00:51.859,0:00:56.329 我們可以做的是,例如 i 乘 36 0:00:56.329,0:01:02.687 所以第一個是 0,下一個是 36,再下一個是 72,以此類推 0:01:02.687,0:01:04.575 好!現在我們有了一串寶石 0:01:04.575,0:01:07.997 這使我想起印第安納‧瓊斯或阿拉丁裏面的場景 0:01:07.997,0:01:11.306 當英雄發現了地下寶藏、很多寶石時 0:01:11.306,0:01:13.732 但他們常常比我們現在發現更多的寶石 0:01:13.732,0:01:17.306 不只是一串寶石,而是一堆寶石! 0:01:17.306,0:01:21.609 那麼我們可以怎樣使寶石 0:01:21.609,0:01:24.806 佈滿整個畫面? 0:01:24.806,0:01:30.639 我們可以由重複 for 迴圈開始,複製、貼上 0:01:30.639,0:01:34.565 然後每次都更改 y 0:01:34.565,0:01:37.688 我們會把它改成 60,然後 90 0:01:37.688,0:01:42.308 現在我們有三行寶石了。酷! 0:01:42.308,0:01:45.495 但……這顯得有點悶,因為我做的 0:01:45.495,0:01:49.193 只是複製、貼上和更改 y 0:01:49.193,0:01:52.859 我們以往一般當我們察覺寫了一個像這個的編碼時 0:01:52.859,0:01:57.025 我們會說︰哦,或許我們只需要一個迴圈罷 0:01:57.025,0:01:58.607 但我們已經在用一個迴圈 0:01:58.607,0:02:03.854 有什麼辦法避免重複的複製貼上呢? 0:02:03.854,0:02:09.518 辦法就是我們所謂的嵌入式For迴圈 0:02:09.518,0:02:12.132 我們要弄一個外迴圈 0:02:12.132,0:02:14.851 這個迴圈就是當我們來到螢幕下方時需要注意的東西 0:02:14.851,0:02:19.234 然後我們內迴圈便會繼續執行它目前的指令 0:02:19.234,0:02:21.977 從左至右走 0:02:21.977,0:02:24.006 讓我告訴你這是什麼一回事 0:02:24.006,0:02:29.851 因此for-我們這次使用一個不同的變數,名叫 j,因為我們已使用 i 0:02:29.851,0:02:37.274 所以 for (定義新函數 j 等於 0; j 少於 13; j++) 0:02:37.274,0:02:41.999 好,這個就會成為我們的外迴圈,會執行上至下的指令 0:02:41.999,0:02:48.237 接下來我們把其中一個之前的 for 迴圈放進裏面 0:02:48.237,0:02:53.274 更正一下縮排,刪除原來的編碼,好了! 0:02:53.274,0:02:59.109 現在我們要做的是把它們疊起來 0:02:59.109,0:03:01.969 那就是要改 y,是吧? 0:03:01.969,0:03:04.309 我們剛才在複製貼上時已經更改了 0:03:04.309,0:03:06.108 所以 Y 一直是 90 0:03:06.108,0:03:09.440 我們想要 y 在每一行都不同 0:03:09.440,0:03:16.188 就如 x 取決於 i 一樣,我們要讓 y 也因 j 而改變 0:03:16.188,0:03:24.663 我們可以把這個改為 j 乘 30 0:03:24.663,0:03:29.934 好!好!很多寶石!好極! 0:03:29.934,0:03:31.776 那這又做了什麼 0:03:31.776,0:03:38.340 外迴圈弄了這個變數 j,把 j 增加至 13 0:03:38.340,0:03:44.340 每次執行外迴圈命令時,它也會執行內迴圈命令 0:03:44.340,0:03:48.673 內迴圈創造了變數 i,而 i 會增加到 12 0:03:48.673,0:03:55.358 每次內迴圈執行命令時,就會畫一個在 x 和 y 軸上的圖像, x 和 y 是基於終止 i 和 j 0:03:55.358,0:03:59.607 因此 i 比 j 更常改變 0:03:59.607,0:04:05.238 要更明白這個東西,不妨來把 i 和 j 的值顯示出來 0:04:05.238,0:04:09.277 我會在影像前後加上 // 0:04:09.277,0:04:12.027 然後設定一個填滿的顏色 0:04:12.027,0:04:16.796 我會用一個文字控制器去顯示 j 的值,輸入 j 0:04:16.796,0:04:22.025 然後我會把它放到這個適當的地方。好 0:04:22.025,0:04:26.009 我們可以看到 j 是由 0 到 12 0:04:26.009,0:04:32.019 這基本上就是我們一排排寶石的位置 0:04:32.019,0:04:35.684 我們會把 i 顯示出來,看看它如何變動 0:04:35.684,0:04:43.066 給 i 不同的顏色 0:04:43.066,0:04:46.475 我們會把 i 放到某處 0:04:46.475,0:04:50.271 我們更改 it’s x 使它會在畫面上橫跨螢幕 0:04:50.271,0:04:54.688 我們也給 y 更改 0:04:54.688,0:04:59.561 現在我們看到 i 是由 0 到 11 0:04:59.561,0:05:04.686 而 i,正如之前所說,變得更頻密 0:05:04.686,0:05:08.778 這一行的編碼比這一行編碼執行得更多 0:05:08.778,0:05:13.855 因為當這個內迴圈執行時,這一行便會執行 0:05:13.855,0:05:19.527 而這一行只會在外迴圈執行時執行 0:05:19.527,0:05:22.140 希望 i 和 j 的形象化 0:05:22.140,0:05:26.973 可以使你明白這些嵌入式For迴圈究竟發生了什麼事 0:05:26.973,0:05:30.475 現在回到我們的寶石那裏,它們是很酷的東西啊! 0:05:30.475,0:05:34.066 利用嵌入式For迴圈,你們可以做到很多事情 0:05:34.066,0:05:37.232 如果你想一想世界上所有東西都看似 0:05:37.232,0:05:39.599 平面網格、西洋象棋格、網格 0:05:39.599,0:05:44.564 星條旗上的星星、酷的圖案和背景圖畫 0:05:44.564,0:05:47.462 要是開始你的想像,就不如玩一下這個編碼程式 0:05:47.462,0:05:49.806 就嘗試改動影像 0:05:49.806,0:05:53.796 我會由改成心型開始 0:05:53.796,0:05:57.796 讓你知道我有多麼喜愛嵌入式For迴圈!喔~~