複雜性科學 - 複雜適應性系統人工生命細胞自動機 思辨 部落格 信箱 阿特拉斯

生命遊戲 Java Applet 的參數設定
這是筆者為「生命遊戲」所寫的 Java Applet,關於參數設定,茲說明如下:

● CellSize:定義生命遊戲的方格大小,單位是像素,預設是 8 pixels
● CellCols:定義生命遊戲水平方向的方格數,預設是 50
● CellRows:定義生命遊戲垂直方向的方格數,預設是 50
● SleepTime:定義每次疊代的時間延遲,單位是毫秒,預設是 150 毫秒
● ShowFull:定義是否顯示規則、色彩等位於右端的控制項,當使用此參數時,不必給值
● NoControls:定義是否不顯示所有的控制項,當使用此參數時,不必給值
● Rule:定義生命遊戲的規則,表示法 Survivals/Births/Ghost,預設是 23/3
● Color:定義細胞的顏色顯示,表示法 StartColor/EndColor,預設是 2/2

  StartColor、EndColor 均用數字來表示, 可用的數字只有 0(藍色)、1(綠色)、2(黃色)、3(紅色), 例如使用 2/3 時,代表顏色由黃色改變到紅色,例如使用 3/0 時,則代表顏色由紅色經過黃色、綠色,最後改變到藍色

● ColorLevel:當 Ghost=0 時,定義每個色系的色彩分割數,預設是 25
● Denity:定義「隨機分布細胞」的分布密度,其值介於 1 ~ 99 的整數,預設是 20
● InitialFile:定義生命遊戲的初始狀態,其值必須指向一個紀錄細胞分布的檔案

 這個檔案就是所謂的範例檔,通常以 .pos 作為副檔名,格式如下:

 ● ?:這個符號之後開始定義註解,註解內容不影響檔案的讀取
 ● #:這個符號之後開始定義 :細胞分布之水平方格數、垂直方格數、水平
    偏移量與垂直偏移量。必須注意的是,當你定義前兩個變數時,細胞
    才會在畫面置中顯示。這些數字分別以逗號分隔,例如:#10,10,1,1
 ● R:這個符號之後開始定義規則,例如:R23/3
 ● N:這個符號之後開始定義 CellCols 與 CellRows,這兩個變數以逗號分隔,
    當 CellCols=CellRows 時,只需要定義一個變數即可,例如:N100
 ● C:這個符號之後開始定義顏色顯示,例如:C2/3
 ● 以上的符號之後:開始定義細胞的分布,必須以數字來表示,0 代表死細
    胞,1 代表正常存活的活細胞,2 代表第一級幽靈狀態的細胞 …… 以
    此類推,但是只能以數字表示至第八級的幽靈狀態

 筆者在下面舉一個例子,讓你更加瞭解範例檔的格式內容:

  ?「滑翔機」的範例檔,設定為置中顯示,並且不做任何偏移
  #3,3
  R23/3
  N200,150
  C2/3
  010
  100
  111

● AutoStart : 定義是否自動執行疊代,當使用此參數時,不必給值
● nExample:定義選單中顯示的範例數,但是必須與 ExampleName 與 ExampleFile 作搭配


  以上的參數都可以省略。在下面,筆者舉一個參數設定於 HTML 檔案的例子,其中必須注意的是,於 applet 標籤中設定 Java Applet 的長與寬時,其計算方式如下:

  ● 不使用 ShowFull 參數時:
    width = CellSize*CellCols + 2 ==> 這個 2 是畫出 Applet 外框的預留空間
    height = CellSize*CellRows + 55 ==> 這個 55 是給上端標籤與下端控制項的預留空間
  ● 使用 ShowFull 參數時:
    width = CellSize*CellCols + 70 ==> 這個 70 是給右端規則、色彩等控制項的預留空間
    height = CellSize*CellRows + 55 ==> 這個 55 是給上端標籤與下端控制項的預留空間
  ● 使用 NoControls 參數時:
    width = CellSize*CellCols + 2 ==> 這個 2 是畫出 Applet 外框的預留空間
    height = CellSize*CellRows + 2 ==> 這個 2 是畫出 Applet 外框的預留空間

  <applet code="GameOfLife.class" width=402 height=455>
   <param name="CellSize" value="4">
   <param name="CellCols" value="100">
   <param name="CellRows" value="100">
   <param name="SleepTime" value="150">
   <param name="Rule" value="23/3">
   <param name="Color" value="0/3">
   <param name="nExample" value="2">
   <param name="ExampleName1" value="範例一">
   <param name="ExampleFile1" value="example1.pos">
   <param name="ExampleName2" value="範例二">
   <param name="ExampleFile2" value="example2.pos">
  </applet>


上一頁 上一層 下一頁