2012年11月27日 星期二

Light-Bot 程式設計師的思維

Light-Bot是一個仿程式設計、操縱機器人去點燈的Flash遊戲。現在已出到二代,二代更為精緻。

一代遊戲頁:http://armorgames.com/play/2205/light-bot
二代遊戲頁:http://armorgames.com/play/6061/light-bot-20

先介紹一代的遊戲畫面:

遊戲方法是將右上方的指令,用滑鼠左鍵拖曳到主要動作區,點下「GO!」按鍵來執行指令以操縱機器人移動,最後目的是把藍色的格子全部轉成黃色。

讓機器人往前走一格。
注意:地形有落差時機器人會卡住,不會前進
向右轉
向左轉
讓機器人往前跳躍,可往上跳一階,也可往下跳任意階數
注意:若面前和所站位置沒有高低差,機器人會原地跳躍不會前進。
閃燈,機器人站的格子若是藍色就轉為黃色,若是黃色就轉為藍色


運用前進、轉身、跳躍來移動機器人並不是這遊戲最大的特色,呼叫函式和迴圈才是最吸引人的,因為可放指令欄數有限,常常需要用函式來使指令重覆利用,才能完成點燈任務。

例如上圖這關,要踩的藍格這麼多,如果直接放入主要動作區,一定放不下的,

若將點亮四格的指令視為一個動作,反覆操作三次,就可大幅減少所需要欄數:

將這個動作寫入函式1和函式2,利用寫著f1的指令來進入函式1區,利用寫f2的指令進入函式2區,當函式中的指令執行完畢,就會跳出函式,回到之前的位置繼續執行。其流程如右:

 

執行結果,是不是簡潔多了呢?

重覆幾次就可以完成

利用呼叫函式的迴圈功能可說是此遊戲的精髓,二代2.0更是在這點強化不少,讓我們來看看二代的畫面:

二代比起一代有幾點不同

  1. 指令不是用拖曳,是用點擊的,還可以先點擊某區域後連續放入指令,方便不少!
  2. 清除指令可以只清除特定區域,先點擊區域再點Clear Commands。若沒特別指定區域就是全部清除。
  3. 允許無窮迴圈,只要機器人達成目的即可,沒停下來也能過關。
  4. 開始有欄位限制,較有挑戰性。
新的要素是
  1. 傳送格的設計,很簡單,在連線的格子上閃燈就會傳送到另一塊格子,要注意的是機器人面對的方向不變。

      
  2. 可旋轉視點,預設是不至於有被擋住沒踩到的藍格,但在轉換思路上幫助不少。
  3. 可調整速度,調快可省下不少時間;調慢對除錯有幫助
  4. 可統計執幾次指令,想やり込み的玩家有福了,不用到過關才結算
  5. 提示現在執行到哪一個指令,除錯上很棒的設計
  6. 顏色格和中斷的設計,if和break的功能讓程設的味道更加濃厚

在還沒有出2.0之前,玩完一代後我就非常期待續作,我覺得這樣的內容和玩法就只有這樣一代實在太可惜了,但是要如何有新元素?if else?for loop?while break?要怎麼做才不失枯燥又能保有程設的樂趣?最後推出2.0讓人拍案叫絕,它用顏色來做到了:

在分成四小塊在閃爍的顏色格上閃燈,機器人就會變色,再閃一次會回到無色。

  

而指令可利用來變色,點一下後讓滑鼠指標變成此圖示,移到想設限的指令上按一下,指令就會變成藍色,只有在機器人是藍色時才會執行。再按一下會變黃色,再按一下變紫色,再按一下回到無色。

例如下面,右轉指令被上色,只有在機器人是紫色時才會右轉,否則就跳過:

若在之前就有在紫格上亮過燈,讓機器人變成紫色,一樣的指令就會執行右轉了:

無限迴圈中,玩家可以利用來中斷,執行到這個指令時就會跳出所在的函式,當然,運用時會搭配上色。例如:

踩到紫格變色後,機器人就會左轉並跳出此無限迴圈。

如果遊戲內建的Basic、Recursion、Conditionals、Expert無法滿足你,可點選首頁的User Levels,挑戰一下玩家自製的關卡。想不出解法的話點 Walkthrough 可偷看一下攻略。

後記:利用遊戲內規則來闖關的小遊戲太多了,但這款的規則竟然是很多人熟悉的程式語言,加上俏皮的表現方式,是我最喜歡的小遊戲。

沒有留言:

張貼留言