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

沒有留言:

張貼留言