顯示具有 Game 標籤的文章。 顯示所有文章
顯示具有 Game 標籤的文章。 顯示所有文章

2014年6月11日 星期三

JavaFX遊戲程式設計

2014年第五本新書,我的第39本書 –「JavaFX遊戲程式設計」。

章節包括:

1. JavaFX
2. 事件
3. 繪圖
4. 特殊效果
5. 動畫
6. 井字遊戲(Tic Tac Toe)
7. 拼圖(Puzzle)
8. 曲棍球(Hockey)
9. 孔明棋(Peg Solitaire)
10. 黑白棋(Reversi)
11. 西洋跳棋(Checker)
12. 翻翻樂(Matching Card)
13. 新接龍(Free Cell)
14. 俄羅斯方塊(Tetris)
15. 踩地雷(Mine Sweeper)
16. 數獨(Sudoku)

附錄:Java Web Start

© Chia-Hui Huang

2014年5月26日 星期一

JavaFX遊戲程式設計

4月12日完成二校的「JavaFX遊戲程式設計」,今天書商終於想到要做封面,真是感動啊,可別忘了附範例光碟才好啦,期待新書的發表。

章節包括:

1. JavaFX
2. 事件
3. 繪圖
4. 特殊效果
5. 動畫
6. 井字遊戲(Tic Tac Toe)
7. 拼圖(Puzzle)
8. 曲棍球(Hockey)
9. 孔明棋(Peg Solitaire)
10. 黑白棋(Reversi)
11. 西洋跳棋(Checker)
12. 翻翻樂(Matching Card)
13. 新接龍(Free Cell)
14. 俄羅斯方塊(Tetris)
15. 踩地雷(Mine Sweeper)
16. 數獨(Sudoku)

附錄:Java Web Start

© Chia-Hui Huang

2014年4月12日 星期六

JavaFX遊戲程式設計

今天終於完成「JavaFX遊戲程式設計」第二校,期待新書的發表。章節包括:

1. JavaFX
2. 事件
3. 繪圖
4. 特殊效果
5. 動畫
6. 井字遊戲(Tic Tac Toe)
7. 拼圖(Puzzle)
8. 曲棍球(Hockey)
9. 孔明棋(Peg Solitaire)
10. 黑白棋(Reversi)
11. 西洋跳棋(Checker)
12. 翻翻樂(Matching Card)
13. 新接龍(Free Cell)
14. 俄羅斯方塊(Tetris)
15. 踩地雷(Mine Sweeper)
16. 數獨(Sudoku)

附錄:Java Web Start

© Chia-Hui Huang

2014年4月3日 星期四

JavaFX遊戲程式設計

花了三個月編寫的「JavaFX遊戲程式設計」,今天終於完成第一校,期待新書的發表。章節包括:

1. JavaFX
2. 事件
3. 繪圖
4. 特殊效果
5. 動畫
6. 井字遊戲(Tic Tac Toe)
7. 拼圖(Puzzle)
8. 曲棍球(Hockey)
9. 孔明棋(Peg Solitaire)
10. 黑白棋(Reversi)
11. 西洋跳棋(Checker)
12. 翻翻樂(Matching Card)
13. 新接龍(Free Cell)
14. 俄羅斯方塊(Tetris)
15. 踩地雷(Mine Sweeper)
16. 數獨(Sudoku)

附錄:Java Web Start

© Chia-Hui Huang

2014年3月6日 星期四

JavaFX Tic Tac Toe

井字遊戲 (Tic Tac Toe) 又稱為井字棋或圈圈叉叉,是我們從小玩到大的益智遊戲,兩個人隨時只要有紙和筆,就可以開始遊戲,其中一方打圈、一方打叉,輪流在3×3的格子上畫上圈叉,最先將三個圈或三個叉連成一線者則獲勝,連線可為橫線、直線或斜線,若格子填滿後仍無任何一方連成一線,則為平手,如下圖所示:
以程式而言,由於此類遊戲通常為人機對戰,因此需設定各個格子的加權比重,藉此分析電腦可能的圈叉位置,此方法稱為Weight。其中以中間的位置,致勝機率最高,因此將其比重設為最高,其餘以此類推,各格子的加權比重如下圖所示:
其中圈圈以GraphicsContext類別的fillOval()方法繪製,並加入漸層效果,讓圈圈更具立體感;叉叉則以圖像處理:
以下分別為玩家與電腦獲勝時之畫面:
若為平手,則顯示Stalemate之訊息:

© Chia-Hui Huang

JavaFX Puzzle

拼圖 (Puzzle) 是一種益智類遊戲,拼圖常依難易度之不同,將圖像分成3×3、4×4、5×5等不同等分的零片 (Piece),接著再隨機將各圖像零片任意擺放。為了能移動零片,遊戲會將其中一圖像零片換成空格,以方便其它的零片移動,遊戲的目的是利用此一空格,移動其餘零片,以完成原有圖像,此類遊戲又稱為Slider Puzzle,如下圖所示:
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


2014年3月1日 星期六

JavaFX Matching Card Game

翻翻樂 (Matching Card Game) 是一種典型的紙牌遊戲,玩法很簡單,遊戲開始之初,將四張以上偶數紙牌蓋上,其中兩兩相同,接著每次翻開兩張紙牌,若紙牌花色或圖案相同則為成功,反之則為失敗,需將紙牌蓋上,一直持續將所有紙牌配對成功,遊戲則結束。

為增加遊戲的複雜度,遊戲分為4, 8, 16, 24, 32, 48張紙牌等級,此外,紙牌樣式分為撲克牌與Java Duke兩種,增加遊戲的多樣化。


4 Cards with JavaFX Cover
8 cards with Java Cover
16 Cards with Red Java Cover
24 Cards with Poker Card Style
32 Cards with Java Duke Style

Example: Link

© Chia-Hui Huang

2014年2月23日 星期日

JavaFX Sudoku

數獨 (Sudoku),日語為すうどく,源自於拉丁方陣 (Latin Square),拉丁方陣由瑞士數學家Leonhard Paul Euler以拉丁字母做為方陣中的元素而命名,拉丁方陣為一n階矩陣,在矩陣中恰有n種不同的元素,每一橫列或直行中同一元素只能出現一次,例如以下範例:
1895年法國報紙La France發表名為Carré Magique Diabolique的九階遊戲,與現在的數獨十分類似。1979年拉丁方陣在美國發展,由Howard GarnsNumber Place為名發表於Dell Magazines上。

1984Number Place流傳至日本,由ニコリ遊戲公司在其「パズル通信ニコリ」雜誌中首次發表,由其社長かじ まき (鍜治 真起) 將此遊戲命名為數獨 (すうどく),原文為「数字は独身に限る」,意思是每一格只能有一個數字鍜治 真起因此亦被稱為數獨之父。

1997年紐西蘭籍的香港高等法院法官Wayne Gould在日本旅遊時,無意間發現數獨,將其帶回英國,並於2004年首次刊登於The Times (泰晤士報),Wayne Gould並以電腦程式編寫數獨,發表於網站上,因此數獨很快就在全世界流行。

數獨於2005年由中國時報引進臺灣,於2009年成立臺灣數獨發展協會 (Taiwan Sudoku Association),並成為世界解謎聯盟(World Puzzle Federation)的會員之一。此外,尤怪之家為臺灣有關數獨資源最豐富的網站,網站並提供相當多的數獨遊戲與討論數獨的解題方法,相當值得參考。 

最早的數獨為一種九階方格的填數字遊戲,並分成九等份,每一等份由3×3的格子組成,遊戲規則很簡單,每一格子只能填入1至9其中一個數字,此外,每一數字在橫列、直行與3×3格子也只能出現一次。 

數獨盛行多年,發展出一系列的解題方法,依據臺灣數獨發展協會與尤怪之家的整理,包括直觀法、餘數法、摒餘法、唯一法、二餘法、三餘法、四餘法、數對唯餘法、數對摒除法、雙候選數佔位法、區塊數對唯餘法、宮摒餘法、行列摒餘法、基礎摒除法、區塊摒除法、單元摒除法、矩形摒除法等,相當豐富。 

數獨發展至今,有以下之變形: 

  • 迷你數獨 (Mini Sudoku):由六階方格所組成,並分成六等份,每一等份由3×2的格子組成。
  • 殺手數獨 (Killer Sudoku):與數獨同為與九階方格的填數字遊戲,並分成九等份,每一等份由3×3的格子組成,殺手數獨並結合數獨與數和 (Kakuro,日語為カックロ) 遊戲。
  • 字母數獨 (Alphabetical Sudoku):又稱為Wordoku,將數字改為英文字母,特殊之處在於除了需符合數獨的基本規則之外,最後必須在其對角線找出正確的英文單字。
  • 超數獨 (Hypersudoku):與數獨同為與九階方格的填數字遊戲,並分成九等份,每一等份由3×3的格子組成,除了需符合數獨的基本規則之外,此外,每一數字在額外的3×3顏色格子也只能出現一次。
  • 巨形數獨 (Dodeka Sudoku):由九階方格組成,並分成十二等份,每一等份由4×3的格子組成,其餘規則如同傳統數獨。
  • 武士數獨 (Samurai Sudoku):由41個3×3的格子組成。 

數獨沒有牽涉到很複雜的數學,僅需要單純的直覺邏輯推理則可完成,因此很適合各年齡層的玩家。

自2009年筆者買了第一支iPod Touch之後,數獨一直是我最喜歡的遊戲,我深信常玩數獨會減少老人癡呆症罹患的機率,我也一直希望能自己寫一個數獨遊戲。

數獨是一個典型的矩陣遊戲,此次以JavaFX設計數獨,並以Apple iPad的Sudoku為範本,難度分為Novice, Easy, Medium, Hard與Master。
Level: Hard

Example: Link

© Chia-Hui Huang

2014年2月22日 星期六

JavaFX MineSweeper

踩地雷(MineSweeper)應該不需多加介紹與解釋,凡是Microsoft Windows的使用者,想必都玩過踩地雷這個有趣的遊戲,Microsoft Windows的踩地雷最早原是由Curt Johnson在IBM OS/2上所開發的版本,後來由Robert Donner與Curt Johnson移植至Microsoft Windows 3.0上,一直延續至今。

踩地雷遊戲的目的是在不掀開任何藏有地雷方格的情況下,以最快速度找出所有的地雷,如果掀起含有地雷的方格時,就算輸了。

遊戲的玩法與策略如下:
  • 踩地雷提供初級、中級、高級與自訂等四種不同等級的遊戲模式,分別為9×9、16×16、30×16等之地雷方格,並預設藏有10、40、99個地雷,並隨機分佈於地雷區四周。
  • 當以滑鼠左鍵點選地雷方格時,則算掀開方格,若為空白則代表安全,若方格下藏有地雷則算輸,另外,若掀開為數字時,則代表此方格四周含有之地雷數目。
  • 若要標示某方格可能藏有地雷時,可以在方格上按一下滑鼠右鍵,則會標示一旗子,以代表可能藏有地雷,此動作稱為Flag(插旗)。
  • 若不確定某方格是否藏有地雷時,可以在方格上連按兩下滑鼠右鍵,則會標示一問號,以代表不確定是否藏有地雷,此動作稱為Question Mark(標記問號)。
  • 若已找出所有圍繞在數字方格的地雷時,則可同時在該數字的方格上,按一下滑鼠左鍵和右鍵,以掀開四周剩餘的方格。如果已標記數字的方塊周圍不全是地雷,當滑鼠二個按鈕同時按一下數字標記的方格時,則會按下其他未掀開的或未標記的方格。
此次以JavaFX 2設計MineSweeper,並以Microsoft Windows的WinMine為範本,難度分為Basic, Medium與Master,並加入LED顯示時間與剩餘地雷數。
Basic Level

Medium Level

Master Level

2001年由於International Campaign to Ban WinMine(國際禁止踩地雷運動)認為此遊戲冒犯了地雷受難者,因此建議Microsoft將WinMine改為WinFlower,以花朵代替地雷,本遊戲亦入境隨俗,加入花朵圖像,可選擇地雷或花朵: 
Example: Link

© Chia-Hui Huang

2014年2月14日 星期五

JavaFX Tetris

俄羅斯方塊 (Tetris) 最初是由蘇聯的Alexey Leonidovich Pajitnov (Алексе́й Леони́дович Па́житнов) 於1984年6月6日首次發佈,Tetris一詞是由希臘語的Tetra (四) 與Alex Pajitnov最喜歡的運動Tennis (網球) 所組成,其中Tetra代表每一個骨牌均由四個方塊所組成,下圖為1984年執行於Soviet DVK-2模擬器的版本 (資料來源:維基百科):
下圖為1986年執行於DOS作業系統的IBM PC版本 (資料來源:維基百科):
後續出現許多不同的變化,如3D立體俄羅斯、決戰俄羅斯、鑽石俄羅斯等,另外也有手機與平版等不同的版本,雖然樣式不同,但其原理均大同小異。下圖為3D立體俄羅斯 (資料來源:維基百科):
傳統的俄羅斯方塊由以下的骨牌 (Tetrimino) 所構成,每一個骨牌均由四個方塊組成,依據Alex Pajitnov的命名,由上而下、由左至右依序分別為I、J、L、O、S、T、Z:
其顏色分別為淡青色 (Cyan)、藍色 (Blue)、橘色 (Orange)、黃色 (Yellow)、青檸色 (Lime)、紅紫色 (Magenta) 與紅色 (Red),以下為各骨牌之RGB顏色組合:
  • I:Cyan (0, 240, 240)
  • J:Blue (0, 0, 240)
  • LOrange (240, 160, 0)
  • OYellow (240, 240, 0)
  • SLime (0, 240, 0)
  • TMagenta (160, 0, 240)
  • ZRed (240, 0, 0)
使用者需使用搖桿或鍵盤改變骨牌的位置或旋轉骨牌的方向,以鍵盤為例,分別如下表所示:
  • 左右鍵:骨牌水平左右移動
  • 向上鍵:旋轉骨牌
  • 向下鍵骨牌垂直向下掉落
  • 空白鍵骨牌垂直向下掉落
當以向上鍵控制骨牌時,骨牌會以下列順序旋轉:
當骨牌落至底部時,若骨牌組成一橫列,則可消去,不同的骨牌清除的列數不同。I骨牌最多能清除4列、J與L骨牌最多能清除3列、其餘的骨牌最多只能清除2列。遊戲並會在右側預覽畫面中提示下一個將要落下的骨牌,使用者可由提示評估遊戲如何進行,隨著遊戲進行,骨牌的落下速度也會愈來愈快。

以下為初級JavaFX Tetris與Game Over畫面
Basic Level
Game Over

以下為中級JavaFX Tetris
Medium Level

以下範例將方塊狀的骨牌改為圓形骨牌,增加遊戲的多樣化:
Tetris with Circle Tetrimino

以下範例將骨牌改為圖像,更增加遊戲的難度:
Tetris with Image Tetrimino







© Chia-Hui Huang

2014年2月4日 星期二

JavaFX Reversi

黑白棋 (Reversi) 又名反棋,據說是由英格蘭的Lewis Waterman與John W. Mollett於19世紀末時所發明的。黑白棋與五子棋、圍棋類似,同屬策略性的棋盤遊戲,棋盤是以8×8等比例見方的64個方格所組成。在遊戲開始時,會在棋盤中央放置黑白棋子各兩顆,玩家可任意選擇黑棋或白棋,如下圖所示:
其規則是每下一棋子必須將對方的棋子包圍,而被包圍的棋子則調換成玩家己方的棋子,此動作稱為Flip,如下圖所示,一列中原僅有黑白各一棋子,當玩家於白棋右方下一黑棋時,兩黑棋由於包圍住白棋,符合遊戲規則,因此玩家可將對方的白棋移除,換成玩家的黑棋: 
依據此規則,雙方依序下棋並調換對方的棋子,直到無法再下或棋子填滿棋盤為止,而以棋盤上數目較多棋子的一方為勝方。除了上述規則之外,另需遵守以下規則:
  • 若所下的位置並沒有包圍任何對方棋子時,屬無效。
  • 若包圍的範圍中含有空格,亦屬無效。
  • 若沒有任何空格可下時,則由對方繼續。
  • 包圍的方向可為上、下、左、右、左斜及右斜等方向。
以下為黑白棋的致勝策略,首先將棋盤定義如下圖所示,其中A、B、C、X稱為A Square、B Square、C Square與X Square,而中間16格的部份則稱為Sweet Sixteen:
其致勝策略如下:
  • 儘可能佔領棋盤中的四個角落,由於角落並不會腹背受敵,當佔領角落時,更容易包圍對方的棋子,但對方的棋子則無法包圍角落的棋子,因此角落為雙方必爭之地。
  • 千萬不可下在X Square上,因為如此便讓對方有機會佔領棋盤的角落。同理,以棋盤四邊而言,亦千萬不要下在C Square上。
  • 若棋子需下在棋盤四邊時,則A Square的位置比B Square好,而C Square則為最差。
  • 儘可能停留在Sweet Sixteen的區域中,以避免對方有機會佔領角落。
  • 儘可能建立由角落所組成的對角線,此對角線稱為Main Diagonal。
  • 儘可能避免翻動對方太多的棋子,遊戲中贏多不見得好,最後贏才算是贏,此乃以退為進的策略,稱為Evaporation Strategy。
上述遊戲規則與致勝策略,以程式而言,則是定義每一棋格的加權比重,稱為Weight,藉此分析下棋的可能位置。以黑白棋而言,在遊戲開始時,會先將棋盤中央放置黑白棋子各兩顆,此四顆棋格並不需任何策略運用,因此可以將其比重設為最小,例如0。棋盤的四個角落,為致勝的關鍵,因此將其比重定為最高,例如8。X Square與C Square容易讓對方有機會佔領角落,為失敗的關鍵,因此將其比重設為最低,分別為1與2。而以棋盤四邊而言A Square比B Square佳,因此可得到如下圖所示之結果:
除了加權比重之外,由於可在遊戲時,任選黑白一方為玩家的棋子顏色,因此在遊戲之初,必須依玩家所下的第一顆棋子位置決定雙方棋子顏色,黑白雙方在遊戲開始時,所有可能下的位置,如下圖所示,其中B代表黑棋、W代表白棋:
若以二維陣列而言,假設分別以gridx與gridy代表水平與垂直位置,則分別由0到7,例如左上角的位置為 (0, 0)、右下角為 (7, 7),因此上圖的可能位置則分別依序如下圖所示依此可決定雙方棋子的顏色:
最後當棋子填滿棋盤或無法再下時,則依棋子的多寡決定勝負。

JavaFX Reversi如下所示。

Example: Link

© Chia-Hui Huang


2014年2月3日 星期一

JavaFX Peg Solitaire

孔明棋(Peg Solitaire)又名中國跳棋、單身貴族(Solo Noble)或鑽石棋(Solitaire),相傳為三國時代諸葛孔明所發明,目的是在行軍時讓士兵打發時間之用。另一說法是在法國大革命前夕,在巴斯第監獄中關著一名貴族囚犯,無聊之下所想出來的一種一個人能夠自己玩的棋盤遊戲,稱為Solitaire。國外將此類遊戲歸為Solitaire的一種,法文Solitaire為單顆寶石飾物之意,亦有隱士或獨居者之意,在此是指單人玩的牌局或棋盤遊戲。

下圖為最早的孔明棋:
孔明棋玩法很簡單,類似於跳棋,在遊戲開始時,會在棋盤中央預留一沒有棋子的空格,以便其它的棋子跳過之用,遊戲方法是在棋盤上找出可跳過的棋子,當棋子被另一棋子跳過的時候,就算是被吃掉(死棋),並從棋盤上取走,使剩下來的棋子越少越好,一直到無法再取走任何棋子為止,遊戲則結束。

在國外判定勝負是以剩下棋子多寡決定,最後剩下六顆以上棋子為一般水準、五顆棋子為Quite Good、四顆棋子為Very Good、三顆棋子為Smart、二顆棋子為Ace、剩下一顆棋子為Master、最後剩下一顆棋子且在正中央則為Genius。

傳統的棋盤樣式又可分為English與European兩種,如下圖所示:
English

European

以English棋盤為例,目前最少的移動步數為18步,是由Ernest Bergholt於1912年所創下的紀錄,並於1964年由劍橋大學的John Beasley教授以數學證明為最少的移動步數,依序如下圖所示:
處理此類遊戲的重點,是以陣列記錄每一棋格的狀態,以下圖為例,雖然有些部份沒有棋格,但為了方便處理,因此定義其一維陣列大小為81。此外,以1代表棋格上有棋子、0沒有棋子、-1沒有棋格的部份:
JavaFX Peg Solitaire如下所示。

Example: Link


© Chia-Hui Huang

2014年2月1日 星期六

JavaFX Checker

西洋跳棋 (Checker) 是一種類似於西洋棋的遊戲,又稱為Anglo-American Checker英美跳棋,西洋跳棋與黑白棋同屬策略性的棋盤遊戲,而其棋盤則是使用西洋棋之棋盤,為8×8見方64方格的棋盤,對奕雙方各持12顆棋子,其擺設方式如下圖所示:

遊戲的規則是雙方的棋子必須以斜行的方式向前移動,並且設法將對方的棋子吃掉或阻擋,例如:

在此所謂的「吃掉」對方棋子是當對方棋子正好擋在玩家己方棋子的斜前方,並且其後斜方沒有任何棋子時,己方棋子可以跳過對方棋子落至後斜方棋格上,並取走對方棋子,此動作稱為Jump,則是吃掉對方棋子,如下圖所示,紅棋在黑棋的斜前方,其後斜方亦沒有任何棋子,因此黑棋可以跳過紅棋落至其後斜方,並取走紅棋,反之亦然:

除了單次跳躍之外,西洋跳棋亦允許以多次跳躍的方式吃掉對方的棋子,僅需附合前述跳躍的條件,則可以多次跳躍的方式前進並取走對方的棋子,如下圖所示:

在西洋跳棋的術語中,單次跳躍稱為Jump、兩次跳躍稱為Double Jump、三次跳躍稱為Triple Jump、四次跳躍稱為Quadruple Jump。

當棋子成功到達對方的最後一排時,依西洋跳棋的規則,會在此棋子上再放上另一棋子,此動作稱為Crowning (加冕),表示此棋子已升格為King (國王),當棋子升格為國王之後,則可以向前或向後斜行移動,例如:

比賽勝負是依所剩棋子多寡決定,若雙方的國王數目相同,則算平手,另外,任何一方可視情況隨時棄權放棄比賽。

其致勝策略為:
  • 首先佔領一顆棋子,然後進一步爭取一連串的佔領動作。 
  • 找尋可同時跳過兩顆以上棋子的機會。
  • 策略性地犧牲己方的棋子以取得更大的佔領機會,例如若能夠利用下一個位置佔領對手兩顆以上棋子,那麼可以讓對手先佔領己方的一顆棋子。 
  • 進攻的同時也要考慮防禦,巧妙地部署棋子的位置以便用反佔領來回應對方的佔領,儘量不要使棋子太分散,那樣會給對手留下多次佔領的機會。 
  • 下棋時,要設法增加下一次可能移動的次數,並限制對手可以移動的次數,也可以策略性地部署棋子,以封鎖對手的棋子使其無法向前。 
  • 不要急於移動後排的棋子,只要這些棋子在後排,對手就無法使任何棋子稱王,當一定要移動後排的棋子時,嘗試先移動左側的第一和第三顆棋子。 
此遊戲規則可使用二維陣列定義每一棋格的狀態,例如下圖所示,其陣列大小為8×8,剛好為西洋棋盤的格數,並依序由左上角 (0, 0) 至右下角 (7, 7) 的棋格位置:

基於西洋跳棋的規則,棋子僅在有顏色的棋格上斜行移動,白色棋格則不作使用,因此可定義上述陣列中何者為白色棋格及有棋子的棋格,以方便判斷棋子位置。此外,由於兩種棋格是相互連續交錯的,因此可以使用迴圈及以2除之餘數判斷棋格形態

JavaFX 2 Checker如下所示。


Example: Link

© Chia-Hui Huang