這是筆者為「生命遊戲」所寫的 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> |
|