Slider Puzzle
處理拼圖常以陣列的方式定義原有圖像零片的位置序號,以上圖為例,圖像均分為3×3等分,因此編號依序由1至9,為能使零片移動,通常設定編號9為空格,接著定義一個一維陣列,依序設定零片序號以代表其正確位置,例如:
int pic[] = {-1,-1,-1,-1,-1,-1,-1,-1,-1}; for (i=0;i<9;i++) { pic[i]= i; } |
接著再隨機擺放各零片位置,每次移動空格時,仍依序判斷圖像目前的位置序號與原有序號是否相同,若完全相同,則代表為原有圖像樣式,拼圖則完成,例如:
for (int i=0;i<9;i++) { if (pic[i] == i) { // 成功 ... } } |
此外,拼圖又可分為Jigsaw Puzzle與Flip Strip Puzzle,分別如下圖所示,雖然樣式不同,但其原理都一樣,均是以陣列設定每一圖像零片原有的位置序號,待解答時,再以迴圈依序判斷各零片目前的位置序號與原有序號是否相同:
Jigsaw Puzzle
Flip Strip Puzzle
此次以JavaFX設計Puzzle遊戲,分別設計Slider Puzzle與Jigsaw Puzzle兩種樣式,其中Slider Puzzle如下圖所示:
其次Jigsaw Puzzle加入以下功能:
- 等分切割圖像,並以Jigsaw樣式處理拼圖。
- 以選單選擇圖像。
- 提供自行解答功能。
當選取Start選單項目時,則將所選擇的圖像等分切割成Jigsaw樣式的零片,並以動畫的方式隨機移動零片:
當選取Solve選單項目時,則依序將每一片零片移回原本的位置,並以動畫的方式移動零片:
© Chia-Hui Huang
沒有留言:
張貼留言