Return to Video

陣列的物件程式設計(視頻版)

  • 0:01 - 0:04
    讓我們繼續探索,我們還能利用物件做什麼。
  • 0:04 - 0:08
    我們回到程式設計裡使用函數的教程。
  • 0:08 - 0:12
    這程式有「繪製溫斯頓」的函數,
    它知道如何繪製溫斯頓,
  • 0:12 - 0:15
    於所指定的 X 和 Y 座標。
  • 0:15 - 0:18
    在這裡,我們呼叫「繪製溫斯頓」四次。
  • 0:18 - 0:21
    每次以不同組合的 X 和 Y 坐標。
  • 0:22 - 0:26
    當我看到這四組「繪製溫斯頓」的呼叫程式,
  • 0:26 - 0:31
    是如此相似時,我就想到更方便的方式是,
  • 0:31 - 0:36
    如果我們能使用一個循環圈,
    然後在循環圈裡只叫它一次,
  • 0:36 - 0:40
    改變這 X 和 Y 每次循環迭代裡的座標。
  • 0:40 - 0:44
    要做到這個,我們需要找到
    一種方法來儲存這些 X 和 Y 位置,
  • 0:44 - 0:48
    如此才能於一個陣列裡循環它。
  • 0:48 - 0:52
    目前有兩組的值,所以我們可以有兩個陣列,
  • 0:52 - 0:56
    一個給 X 的座標和一個給 Y 的座標。
  • 0:56 - 1:01
    X 的座標可能是 99、
    294、101、和 294。
  • 1:02 - 1:09
    而 Y 的座標我們會有
    117,117,316、316。
  • 1:10 - 1:14
    好了,現在我們可以循環那些
    有著我們循環變數 i = 0;
  • 1:14 - 1:19
    i < x 位置點長度; i++。
  • 1:19 - 1:22
    如此,我們會按序循環每個
    在 x 位置的元素,我們會編寫:
  • 1:22 - 1:29
    「繪製溫斯頓(x 位置 [i],
    y 位置 [i])」;
  • 1:31 - 1:35
    好,讓我們來看看利用刪除是否可行...
  • 1:35 - 1:36
    好棒,那是可行的。
  • 1:36 - 1:41
    現在我們只要呼叫這個,只用這行代碼,
    來編輯「繪製溫斯頓」
  • 1:41 - 1:43
    但它就會寫在每個
  • 1:43 - 1:45
    「x 位置」陣列的位置裡。
  • 1:45 - 1:49
    我們可以在這裡添加更多的值,例如 10,
  • 1:49 - 1:58
    那麼我們加 1,然後 1,
    然後 1,然後 100,然後 1。
  • 1:58 - 2:03
    現在它看起來稍微有點亂。我不喜歡這樣,
  • 2:03 - 2:08
    因為這樣很難看得出來哪些 X 與哪些 Y 相關聯。
  • 2:11 - 2:15
    我要能一眼就看清楚 X 和 Y 的配對組合。
  • 2:15 - 2:20
    而不必確保我有完美地上下對齊它們,
  • 2:20 - 2:21
    例如,像是這樣。
  • 2:22 - 2:27
    所以,我要找出不同的方式來儲存的這些位置。
  • 2:27 - 2:31
    一個做法是,我們可以將它們儲存為物件。
  • 2:31 - 2:35
    想想看,每個位置都有兩位信息:
  • 2:35 - 2:40
    就是 X 和 Y。所以,我們可以有
    一個具有 X 和 Y 屬性的物件,
  • 2:40 - 2:45
    然後我們有一個包含所有
    X 和 Y 位置的陣列物件。
  • 2:45 - 2:46
    讓我們就這麼做。
  • 2:46 - 2:51
    將變數位置相等於陣列。
  • 2:51 - 2:56
    但是,每個元素並不是一個號碼,
    而是一個物件。
  • 2:56 - 3:00
    我們有了我們的大括號,然後我們說,
  • 3:00 - 3:05
    X: 99,Y: 117。
  • 3:05 - 3:09
    好,我們現在有了其中一個位置在這裡。
  • 3:09 - 3:14
    然後在這裡我們再添加一個。
  • 3:15 - 3:19
    X 應該是 294,117,
  • 3:19 - 3:24
    第三個會是 101,316,
  • 3:25 - 3:31
    然後最後一個是294和316。
  • 3:32 - 3:35
    好,現在我們有了一個陣列物件,
  • 3:35 - 3:38
    而且每個物件都有,
    X 和 Y 的屬性在裡面。
  • 3:38 - 3:45
    在我們的循環圈裡,我們將更改
    它通過「位置點長度」的迭代。
  • 3:45 - 3:49
    然後,我們會傳遞物件。
  • 3:49 - 3:54
    現在它正傳遞所有的物件,
    但我們想要傳遞 X 和 Y,
  • 3:54 - 3:59
    所以我們需要
    位置 [i] 點 x 和位置 [i] 點 y。
  • 3:59 - 4:01
    成功!
  • 4:01 - 4:04
    現在,我們可以刪除這些舊的陣列集群。
  • 4:05 - 4:10
    太好了,這樣看起來就整齊多了,
    代碼更容易閱讀。
  • 4:10 - 4:13
    不論何時,只要有容易閱讀的代碼
    都是較好的。
  • 4:13 - 4:17
    這樣也會更容易做添加。
    所以,如果我要再添加一個,
  • 4:17 - 4:23
    我只需同時添加一對,
    我們可以說 X 是 200,Y 是 200,
  • 4:23 - 4:26
    中間在放一個小溫斯頓。
  • 4:27 - 4:28
    很酷。
  • 4:28 - 4:31
    現在,我要教你一些比這個更炫的東西。
  • 4:32 - 4:37
    請注意,我們的函數目前接受兩個位數,
  • 4:37 - 4:39
    然後使用這兩個數字。
  • 4:39 - 4:42
    我們可以更改我們的函數,
    讓它期待一個物件,
  • 4:42 - 4:45
    然後它在從該物件裡取得 X 和 Y。
  • 4:45 - 4:50
    這意味著,在這裡我們可以只傳遞物件。
  • 4:50 - 4:51
    讓我們來試試。
  • 4:51 - 4:54
    我們傳遞了物件,現在就壞了。
  • 4:54 - 4:58
    那是因為我們的函數,仍然是期待兩個物件,
  • 4:58 - 5:01
    而它只獲得一個。所以我們將它更改為
  • 5:01 - 5:05
    它將獲得「臉位置」。
    現在,我們接到了一個錯誤訊息,
  • 5:05 - 5:10
    它表示「臉X」未被定義。
    那是因為之前我們是以論據在傳遞「臉X」,
  • 5:10 - 5:13
    但目前它並不存在,我們只會得到一個物件。
  • 5:13 - 5:20
    所以,我們要做的,就是將物件裡X的位置,
  • 5:20 - 5:21
    儲存在「臉X」的變數裡。
  • 5:21 - 5:25
    我們有這個物件,
    我們知道這個物件裡有一個X屬性,
  • 5:25 - 5:28
    所以我們只要將它存儲在「臉X」的變數裡。
  • 5:28 - 5:34
    我們可以對 Y 做同樣的事情,
    這樣「臉 Y 等於臉位置點 y」。
  • 5:34 - 5:35
    成功!
  • 5:35 - 5:38
    你也知道,其餘的那些函數
    會使用「臉X」和「臉Y」。
  • 5:38 - 5:40
    我們必須確保拼寫的正確性,
  • 5:40 - 5:42
    如果寫的是 xx,,就會無效。
  • 5:42 - 5:48
    因為那與我們陣列物件裡的並不一致。
    所以它需要能相配。
  • 5:49 - 5:52
    這樣就滿整齊的。現在你可以有陣列物件,
  • 5:52 - 5:54
    你可以有附帶物件的函數。
  • 5:54 - 5:58
    你會發現你的程式,變的非常強大,
  • 5:58 - 6:01
    因為它們數據的構建方式。
  • 6:01 - 6:04
    特別是因為它常常將 X 和 Y 配對。
  • 6:04 - 6:05
    我想你會發現,
  • 6:05 - 6:09
    它們在這兒的繪製及動畫程式裡,特別好用。
  • 6:09 - 6:11
    所以,快試試吧!
    祝你玩得開心!
Title:
陣列的物件程式設計(視頻版)
Description:

這是我們在編碼互動講談裡所抓取的視頻屏幕,好讓字幕和翻譯更方便。於以下的網子,能更清楚的觀賞我們的講談:https://www.khanacademy.org/cs/programming/

more » « less
Video Language:
English
Duration:
06:12

Chinese, Traditional subtitles

Revisions