給出指令:演算法

小學電腦科學一個確定性的網格機器人,會執行前進和四分之一圈轉向指令;起點和目標格固定,障礙物可編輯

建立程式,然後讓機器人朝 G 移動。將棋盤格向上拖曳以建造牆壁,向下拖曳以移除牆壁。

3D

拖曳裝置進行調整。拖曳背景進行旋轉。捲動以縮放。

測量記錄本

變更設定、測試預測並儲存結果。最多保留 12 個快照。

關於此實驗

編寫一個小程式,並在立體棋盤上進行測試。機器人會嚴格按照每條指令行動,因此受阻的移動或錯誤的轉向都會清楚呈現。比較預期路線與實際執行軌跡,接著編輯程式並再次嘗試。

學習目標

  • 將路線轉換為依序排列的精確指令。
  • 檢查每個步驟之後的位置和朝向,以偵錯程式。
  • 說明在不變更指令的情況下,變更障礙物如何影響程式結果。

使用方法

  1. 1執行初始程式,並找出與預期路線不符的第一條指令。
  2. 2倒轉程式,然後使用「單步」和「返回」檢查每條指令執行後的位置。
  3. 3載入「路線範例」,預測終點,再執行程式前往目標。
  4. 4向上拖曳一個棋盤格,建立障礙物。使用命令按鈕修正路線,然後記錄程式及其結果。

模型

左轉後的方向
右轉後的方向

假設

  • 棋盤有六列六欄。機器人從左下角出發,面朝右方;目標在右上角。
  • 前進指令會移動一格。左轉和右轉會旋轉90度,但不會移動。發生碰撞或抵達目標時,執行便會結束。
  • 機器人是指令直譯器,並非剛體物理模擬。視覺插值不會改變離散的格子位置。

在課堂上試試這個實驗

  1. Q1為什麼相同的指令在一個棋盤上可行,移動牆壁後卻會失敗?
  2. Q2如果可以使用重複指令,如何才能編寫更短的程式?

常見問題

機器人會自己找路嗎?

不會。它會完全按照提供的指令序列執行。尋找並修正路線就是這項實驗的目的。

撞到牆時會發生什麼事?

機器人會停留在最後一個有效格子,標示該步受阻,並停止程式。