• 沒有找到結果。

第三章 數位化數學遊戲介紹

第二節 老馬識途遊戲

壹、老馬識途遊戲 一、遊戲介紹

老馬識途遊戲其實和西洋棋盤上的騎士循環漫遊同構。只是原本西洋棋盤上 走在格子中換成中國象棋走在交點上,而中國象棋馬的走法和西洋棋盤上騎士的 走法相同,都是走日。但是在棋盤的大小上,西洋棋盤為8×8共64格,而中國象 棋盤為5×9共45個交點。循環漫遊的定義是把騎士棋子放在棋盤上任何一格, 漫 遊64步後, 返回起點, 途中經過每一方格正好一次。而老馬識途遊戲途中經過 每一交點正好一次,走45步後即獲得勝利,不一定要回到起點。

我們先來介紹一下騎士循環漫遊,18世紀時,Euler首先提出下列問題:「在 8×8西洋棋盤上置一騎士,是否能找到63次的移動,使該騎士走遍棋盤上每一方 格呢?」,在8×8西洋棋盤上的騎士循環漫遊發現有1245種走法,騎士循環漫遊 有一特點, 即途中任何一格, 都可選為起點, 若把沿途經過的每一個方格的 中點和下一個方格的中點畫一直線相連, 就得到一條閉合曲線。凡是沿同一條 曲線上的漫遊, 不論起點在那一格, 也不論漫遊的方向(前進或後退), 都視 為等價。一條代表循環漫遊的閉合曲線, 一般情形下將棋盤任意旋轉或翻面後 一共可產生八條不同的曲線, 彼此視為等價。因此在計算不等價的循環漫遊的 數目時, 要先研究曲線的對稱性。

循環漫遊只有在階數是偶數(比四大) 的方形棋盤上才出現, 理由如下: 先 把棋盤上某一角落上的方格塗上黑色, 再把相鄰兩方格塗上白色, 依此類推把 全部格子塗上黑白兩色, 使相鄰二格顏色不同。騎士漫遊時, 每一步都是由黑

格走到白格, 或白格到黑格。階數為奇數的棋盤,格子總數也是奇數, 騎士由 角上的黑格出發, 走遍全部格子後, 最後一格又是黑格, 若要回到起點(黑格) 是不可能的事。

在中國象棋的棋盤上,馬能否從某些點出發,可以不重複地跳遍半個棋盤;

而從另外一些點出發,卻不能完成。如下圖(圖一)半個棋盤裏,紅點有22 個,

藍點有23 個,若馬步由紅點開始,下一步必須走到藍點,很明顯的最後會有一 個藍點落單,無法完成馬步走完半個棋盤,所以必須由藍點出發。

圖一 圖二 圖三

給一圖G(圖二),以V 來表示所有頂點的集合,E 表示所有邊的集合,記成 G=(V,E),通過途中的每一頂點且只通過一次的路徑稱為漢米爾頓路徑;若是要 求必須再回到起始頂點的回路,則稱為漢米爾頓迴圈(圖三)。也就是說老馬識途 遊戲的解為漢米爾頓路徑而騎士循環漫遊則為漢米爾頓迴圈。

老馬識途遊戲對一般的國中來說,算是較難的遊戲,也因此在設計遊戲時增 加了一些設定來讓學生趣味度增加及更有效率:

(一)起手有回

考量到學生可以用試誤的方法來找到答案或靈感,特地增加回手的設計,遊 戲進行時,學生每走一步,前一步將被標上代表那是第幾步的號碼,而學生走到 死路時,可以思考並決定要從中途哪一步再開始換方式走,而不用每次全部重頭 走。

(二)限時完成

由許志農教授建議遊戲設計120秒倒數計時,增加在課程中可以遊玩的學生 人數,提升教學效率,而有的學生在看別人玩的時候有靈感,也很容易有機會可 以上台發揮。

經研究者本身於課堂中實施的狀況,大部份的學生無法一次走完。而大部份 的學生積極尋找解題方法的時間約在30秒內到90秒內,過了這段時間,學生比較 容易放棄或是遇到瓶頸無法突破,這時候120秒倒數完換另一位同學來試試讓全 班可以保持專注,也容易在度激發其他人的靈感。

二、製作數位化老馬識途遊戲

我們介紹「老馬識途遊戲」時如何將一個遊戲分成許多小問題,並使用函數 將這些小問題一一解決,統整成為我們的遊戲。茲將「老馬識途遊戲」分成五個 大功能來設計:

(一)棋盤上的布置

本遊戲需要在 5×9 個棋盤交點上布置可與玩家互動的元件,使用陣列來達 成,但因為馬走日步,為了讓玩家點選到最邊的元件時,遊戲內部程式依然 有走日步的 8 個元件陣列值可存取,故於程式設計上的方便我們在棋盤外另 外加了兩圈,使得陣列擴增成為(2+5+2)×(2+9+2)的 9×13 二維陣列。此外依 功能我們還分兩個陣列互相搭配來控制可與玩家互動的元件,分別為:

1.元件顯示陣列:控制棋盤上的圖樣影片元件,遊戲一開始,讓棋盤最右 上方的交點上顯示「馬」;其他所有的交點顯示空交點,待玩家於遊戲 中點選時顯示「馬」。此陣列中在「馬」位置上的圖樣影片元件所對應 的陣列值顯示為 1,棋盤上其他的圖樣影片元件對應的陣列值顯示為 2,

而我們在棋盤外另外加了的兩圈所對應的陣列值顯示為 0,即在布置遊 戲面板時棋盤外的兩圈不布置圖樣影片元件。

2.元件動作陣列:此陣列所顯示的是棋盤上的圖樣影片元件可不可點選,

只有在「馬」的日步上的圖樣影片元件所對應的陣列值顯示為 1,棋盤 上其他不可走的圖樣影片元件對應的陣列值顯示為 2,而我們在棋盤外 另外加了的兩圈所對應的陣列值顯示為 0,而其在布置遊戲面板時棋盤

外的兩圈不布置圖樣影片元件,故點不會產生玩家點錯的情況。

(四)勝利判斷

於函數中設定利用步數記錄變數值是否達到 45 步,來判斷玩家是否得到勝 利。

(五)其他功能函數

1.返回:配合返回鈕,將全部參數及陣列回歸初始狀態,並跳回前一頁。

2.重玩:配合重玩鈕,將全部參數、計時器、返回鈕、重玩鈕、棋盤上的 布置及陣列回歸初始狀態,重新設定所有物件的監聽。

3.勝利和平手:和計時器搭配控制失敗影片、勝利影片及煙火。

4.關閉所有圖樣影片元件:為避免遊戲結束後玩家仍可點選操控圖樣影片 元件,故獨立一個函數利用用巢狀 for 迴圈和 if 語法,來控制關閉所有 圖樣影片元件監聽和關閉按鈕模式,之後有任何地方要用到時,只要呼 叫此函數即可。

5.隱藏版解答:老馬識途遊戲對一般的國中來說,算是較難的遊戲,考量 到教學時的方便,故於此遊戲面板右上角指導教授與遊戲設計者處,製 作一隱藏按鈕,來作為隱藏版解答控制依據,按下之後會跳到解答頁,

呈現兩個版本的解答,分別是分兩邊繞圈的解和繞整圈的解法。

6.倒數計時:為了增加遊戲的趣味及增加遊戲時的效率,本遊戲加入了倒 數計時,每次遊戲限時120秒,時間到時玩家若未走完45步則失敗。

貳、馬不停蹄遊戲 一、遊戲介紹

馬不停蹄遊戲其實是將老馬識途遊戲改變成兩人對戰版本,一個人玩老馬識 途遊戲時目標是要能找到一條能走完 45 個點的路徑,而兩人玩時則是要讓對方 無路可走,如下圖所示:

相較於前者找出完整答案的高難度,兩人對戰就顯得較為簡單一些,而要讓 對方無路可走,自己有路可走所應用到的策略除了嘗試錯誤的方法之外,也可採 用老馬識途遊戲的解題思考再加以變化,然而兩個遊戲都有互相找解題策略的用 處。

在馬不停蹄遊戲設計時由許志農教授建議遊戲設計加上坐標,則在實際課堂 實施時,可以由對戰學生唸坐標老師操作的方式來執行,除了遊戲內容之外,亦 可使用在國中七年級下學期直角坐標教學中的應用,讓學生藉著唸出坐標點來熟 悉直角坐標的思考方式。

二、製作數位化馬不停蹄遊戲

我們介紹設計「馬不停蹄遊戲」時如何將一個遊戲分成許多小問題,並使用 函數將這些小問題一一解決,統整成為我們的遊戲。茲將「馬不停蹄遊戲」分成 五個大功能來設計:

(一)棋盤上的布置

本遊戲需要在 5×9 個棋盤交點上布置可與玩家互動的元件,使用陣列來 達成,但因為馬走日步,為了讓玩家點選到最邊的元件時,遊戲內部程式依 然有走日步的 8 個元件陣列值可存取,故於程式設計上的方便我們在棋盤外 另外加了兩圈,使得陣列擴增成為(2+5+2)×(2+9+2)的 9×13 二維陣列。此外 依功能我們還分兩個陣列互相搭配來控制可與玩家互動的元件,分別為:

1.元件顯示陣列:控制棋盤上的圖樣影片元件,遊戲一開始,讓棋盤最右 上方的交點上顯示「馬」;其他所有的交點顯示空交點,待玩家於遊戲 中點選時顯示「馬」。此陣列中在「馬」位置上的圖樣影片元件所對應 的陣列值顯示為 1,棋盤上其他的圖樣影片元件對應的陣列值顯示為 2,

而我們在棋盤外另外加了的兩圈所對應的陣列值顯示為 0,即在布置遊 戲面板時棋盤外的兩圈不布置圖樣影片元件。

2.元件動作陣列:此陣列所顯示的是棋盤上的圖樣影片元件可不可點選,

只有在「馬」的日步上的圖樣影片元件所對應的陣列值顯示為 1,棋盤 上其他不可走的圖樣影片元件對應的陣列值顯示為 2,而我們在棋盤外 另外加了的兩圈所對應的陣列值顯示為 0,而其在布置遊戲面板時棋盤 外的兩圈不布置圖樣影片元件,故點不會產生玩家點錯的情況。

(二)馬步的移動

再將計數參數除以 2 的餘數,來作為隱藏或顯示類似十字坐標行、列名 稱對照的控制依據。