• 沒有找到結果。

●資訊四丙楊尚儒

在這次製作專題的過程之中,所遇到的問題在經過與老師的研究 和一次又一次的測試之後終於有了初步的成果,製作專題讓我學到了 很多的經驗,我認為一個系統的製作如不在設計的初期有詳細的計 畫,那麼是很難能夠完成的,要完成一件事情先要有計畫,有了計畫 在逐步的去實行才有進度,才有成果。預定的計畫雖然往往不能如預 定的實行,但是呢沒有預定的計畫那麼便往往無法開始。用電腦解決 問題的方法,可以分為如何在電腦中表現資料和如何將判斷的方法變 成演算規則,在製作專題的過程中得到了很多的經驗,加強了找尋資 料的能力,網路上的資料庫幾乎是什麼資料都找的到。所以找資到的 能力也,閱讀資料的訓練也很有幫助。我要對指導老師致上最深的謝 意,感謝你給予我機會,讓我有機會得到別人所沒有的特殊經驗,我 也要感謝我的另一名組員,沒有你的配合又不會有今天的成果。

●資訊四丙侯彥廷

感謝組員跟老師,專題從開始做的時候,老師也給我們一些做專 題的建議,組員也不介意我的程式很差,還會慢慢講解palm 程式主 要的流程,讓我省去找尋資料的時間。

參考資料

[1] Palm, Inc.5400 Bayfront Plaza Santa Clara, CA 95052 USA Palm OS SDK Reference Document Number 3003-003 June 23, 2000 http://homepages.enterprise.net/jmarshall/palmos/

[2]Lonnon R.Foster/原著,陳永昱/譯,PalmOS程式設計大全(譯自 Palm OS Programming Bible),旗標,民90

[3]Robert Mykland/原著, 吳卓俊/譯,PalmOS程式設計大全(譯自 PalmOS Programming From the Ground Up),McGrawHill,2001.4 [4]紅外線標準協會 http://www.irda.org/

[5]PalmOpenSource.com http://www.palmopensource.com/

[6]PalmSource http://www.palmos.com/dev/support/

[7] rec.games.chess新闻组, 关于PGN、FEN记谱规范(上), http://www.chessit.net/file_topic/computerchess/pgn-fen-1.htm [8] 逢甲大學,資訊工程學系專題報告,逢甲大學手持式校園導覽 系,學生:林政巨(四丁) 陳英俊(四丁) 黃志雄(四丁)指導教授:

劉安之,p12-14,中華民國九十年十一月

附錄 PGN 的西洋棋記譜格式

轉載自 http://www.ckes.tn.edu.tw/~zmz/nac004.htm

本文

版權宣告:此篇轉載於

http://www.chessit.net/file_topic/computerchess/pgn-fen-1.htm,並獲 得原譯者授權轉載並修改成繁體格式,著作權歸原作者及譯者所 有。如仍有侵權情事,煩請來信告知zhengzmz@ms16.hinet.net。

出處: Chess world 的 PGN Archive 譯者: michael

類型: 編譯

原文: 原文內容

關於 PGN、FEN 記譜規範(上)

來源:rec.games.chess 新聞組

PGN(Portable Game Notation)”可移植式的棋局記號法”,是一種 以ASCII 文字檔案表示西洋棋棋局資料的標準設定。PGN 設計成使 人們很容易進行閱讀和編寫,電腦程式很容易進行解析和產生。定義 和傳播PGN 的目的,是為了促進公開對局資料的共用交流,包括來 自全世界的棋手(不管有無組織)、出版人和電腦西洋棋研究的。

PGN 不是萬能;也沒有什麼標準無所不能。它被希望作為資料交

[Event "F/S Return Match"] //賽事名 [Site "Belgrade, Serbia JUG"] //地點 [Date "1992.11.04"] 該局日期

[Round "29"] //第 29 輪

[White "Fischer, Robert J."] //白方: Fischer, Robert J.

[Black "Spassky, Boris V."] //黑方: Spassky, Boris V.

[Result "1/2-1/2"] //結果:和棋

1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3 O-O 9. h3 Nb8 10. d4 Nbd7 11. c4 c6 12. cxb5 axb5 13. Nc3 Bb7 14. Bg5 b4 15. Nb1 h6 16. Bh4 c5 17. dxe5 Nxe4 18. Bxe7 Qxe7 19.

exd6 Qf6 20. Nbd2 Nxd6 21. Nc4 Nxc4 22. Bxc4 Nb6 23. Ne5 Rae8 24.

Bxf7+ Rxf7 25. Nxf7 Rxe1+ 26. Qxe1 Kxf7 27. Qe3 Qg5 28. Qxg5 hxg5 29. b3 Ke6 30. a3 Kd6 31. axb4 cxb4 32. Ra5 Nd5 33. f3 Bc8 34. Kf2 Bf5 35. Ra7 g6 36. Ra6+ Kc5 37. Ke1 Nf4 38. g3 Nxh3 39. Kd2 Kb5 40.

Rd6 Kc5 41. Ra6 Nf2 42. g4 Bd3 43. Re6 1/2-1/2

上面的例子,是最基本的紀錄,如果還要了解的更多更繁雜的紀 錄項目的話,可以到我們所參考的網站查查,我只把最基本會用的說

明一下,也就是機器會擷取來用的多加說明。

[Event "FIDE World Championship"] //國際棋聯世界錦標賽

6)Black 黑方棋手名字,與白方的規則沒有區別。

一步棋帶將軍(普通的”將軍”)的就在後面加個“+” ,將死就 是用“#”表示。舉個複雜點的棋譜寫法,比如:fxg1=Q#,意思就是 黑方f2 上的兵吃掉 g1 格的某白子,升變為後,並且將死白方。

附錄 PDB 檔案結構

對於單機使用而言,使用Palm Inc.所提供的SDK 以及CDK,可以很 方便的處理資料庫中的內容,包括建立資料庫、刪除資料庫、讀取紀 錄、寫入紀錄、刪除紀錄等等。

但是目前HotSync 只提供Windows 及Mac 的版本,如果有資料庫是 存放在Linux 或是資料庫系統中的話﹝例如:MySQL、Sybase﹞,就 必須轉換成PDB 檔案,再安裝到Palm Device 上面。

2-2、概述:

PalmOS 使用的檔案格式有三種,分別列舉如下:

• Palm database(PDB)

o用來存放應用程式會使用到的資料。

• Palm query application(PQA)

o包含WWW 內容的PDB 檔集合。

• Palm resource(PRC)

o應用程式。

在桌上型電腦中,這三種檔案的副檔名分別為PDB、PQA 以及PRC,

但實際上,PalmOS 是依據檔案的Header 來判斷檔案格式(包括 database name 和database type)。

接下來的一節我們先以表格的方式,介紹PDB 檔案的結構以及每

個欄位的意義。

2-3、資料結構:

PDB Header(72 bytes)

Record Entry Type(最大65535*8 bytes)

Record Date(資料庫內容)~END PDB Header

0 Name(database name)

20 Attributes version

24 CreationDate(建立時間)(備註1)

28 ModificationDate(最後更新時間) (備註1)

2C LastBackupDate(最後備份時間) (備註1)

30 ModificationNumber(被更新次數)

34 AppInfoID(PDBHeader 到appInfo 的local offset)

38 SortInfoID(PDBHEader 到sortInfo 的local offset) 3C Type(PDB type)

40 Creator(PDB creator) 44 UniqueIDSeed

48 RecordList

… (資料庫內容開啟位置)

RecordList Type

Next RecordList ID DWORD 下一筆RecordList 的local offset

NumRecords WORD RecordList 中的Record數量

Placeholder bytes 2 bytes 如果此RecordList 有一筆以上的紀錄,則 第一筆Record 的local offset 從這裡開始記錄。

RecordEntry Type

Local Chunk ID DWORD PDB 檔開始到該Record 的local offset

Attributes 1 byte Record 屬性 UniqueID 3 bytes Record ID 備註:

1、creation Date、modificationDate、以及lastBackupDate 是從1904/1/1 到開始到現在的秒數,要在Desktop 上計算這個數值,可以使用標準 C 函式中的time()加上2082844800 即可。

2、PalmOS 使用的ByteOrdering 是由低到高,例如,16 進位的 0x01020304在PC 的記憶體中表示為0x04030201,在PalmOS 的記憶 體中表示為0x01020304。所以,在PC 上的計算出來的local offset 或 是數字,都必須倒轉,才能儲存在PalmOS 的檔案中。(範例程式中 的SwapDWORD、SwapWORD)

3、Record 屬性 Delete bit(7)

Dirty bit(6) Busy bit(5) Secret bit(4) Category(3-0)

• Delete bit:its entry in the database header remains until the next synchronization with the PC。

• dirty bit:已被更新。

• busy bit:某個應用程式正在讀取record。

• secret bit:records that should not be displayed before the user password has been entered on the device。

2-4、PDB 檔案結構範例:

介紹完PDB 檔案的結構以及欄位,我們使用二進位的方式來觀看一 個PDB 檔的實際內容:

PDB 檔案的Header,從0000 到0055 都屬於這個部份的內容

PDB 檔案有關資料的內容,二筆紀錄之間用0000 隔開。

附錄 操作手冊

當我們把IrChess.prc 使用 hardsync 把 IrChess.prc 灌進 palm 之後,我 們自然可以在palm 螢幕上面找到一個”Chess”這個路徑(如下圖紅 色框框起來的地方),

圖A-1 palm 桌面

就會進入到下圖,沒錯就是西洋棋遊戲的畫面,讓我們試著走一步試 試看吧。。。

圖A-2 進入西洋棋畫面

棋子的訊息:

由於預設為白色先下,那我一開始選黑色邊的話,就會出現”Sel Wrong Side”表示選錯邊了,當然如果已經進行了一些棋步之後,選 錯了邊也是會有”Sel Wrong Side”。

例如:我選了白色的騎士,程式就會在騎士的圖案周圍畫出綠框,以 顯示你點了哪一顆棋子,下面的欄位則會顯示”Sel White Chess”就是 你選了白色的棋子的意思,選了棋子之後,當然就是要走棋子囉。

如果走的地方不符合該棋子的規則,則會顯示”Move Error”移動錯誤 的訊息。

如果是正確的移動棋步的話,就是棋子移動過去,而不會有特殊的訊 息了。

當有一小兵走到對面的盡頭之後,就可以選擇想要換的棋子,

Queen(皇后),Rook(城堡),Bishop(主教),Knight(騎士) ,如下圖:

你可以選一想要的棋子,程式將會自動幫你轉變。

圖A-3 訊息-換棋

在國王走了某一步會有被吃的危機的話,會有”Table Error”的錯誤訊

息。

例如:在想要城堡護主的時候,如果做了護主這步棋會有被吃的危險 (也就是不合法的城堡護主) ,產生了”Table Error”訊息。

Last Next 按鈕的功能:

Last:用來看棋盤回到上一步的功能。

Next:配合”Last”觀看棋盤下一步的功能。

我們走了幾步,按下”Last”鈕,棋盤則回復到上一步的棋盤。

待我們一直”Last”到最初的原樣的時候,則欄位會出現”Record is head”表示已經到了紀錄的最開始了。

再按一次”Last”的話,則欄位會顯示”Record is NULL”表示已經沒有 上一筆的紀錄了,不論再按幾次”Last”都一樣。

讓我們開始按”Next”試看看吧,棋子會以之前走的路徑,一步一步走。

按”Next”到最後我們停住的那一步,再多按一下的話,就會顯 示”Record is tail”表示已經到了紀錄的最後了。

如果是直接點棋盤上的任意處的話,則會直接顯示最後,讓使用者開 始接下去下。

選單的介紹:

點擊左上角的”Chess”或是 menu 鍵,就會出現如下的選單。

包括Start Edit Options 三大項

圖A-4 選單-Start 選單-Start:

分有NEW Save Load

NEW:不用說大家都知道,這個就是直接開一個新局,從頭開始下。

Save:當使用者點擊了 Save 或是在英文手寫區下寫出”S”則會進入 Save,如下圖:Game Name 可以寫入 24 個字元,Memo 可以打一些 有的沒的,點”ok”就會以 pdb 的格式紀錄在 palm 的資料庫裡面了。

圖A-5 選單-Start-Save 在palm 的資料庫裡,可以看到剛紀錄的 pdb 檔案。

Load:點擊”Load”或是在手寫的地方寫 L 就會進入 Load 畫面,選擇 剛才紀錄的檔案,按下”ok”就會回到棋盤上,顯示的就是之前所下的 棋。

選單-Edit

分有Undo Open/Close IR Connect/DisConnect SIDE ChangeColor TakeBack Forward

圖A-6 選單-Edit Undo:

當我們點擊了”Undo”之後,會有跟”Last”鍵依樣的現象,但不同的 是,Undo 以後,就沒辦法”Next”了,就等於是悔一步棋,而且欄位 會有”White Move”或是”Black Move”表示悔棋後,現在這一步的上一 步,是白色(或是黑色)的走過了。

Open/Close IR:

當我們點擊了”Open/Close IR”之後,會有對話窗”IR Port Is Open”出 現,提示你已經把紅外線的介面打開了,

而如果再點及一次”Open/Close IR” ,就會出現”IR Port Is Close” ,表 示紅外線介面已經關閉。

Connect/DisConnect:

此功能是建立在”IR Port Is Open”的狀態下才成立,而且要雙方都已

擊”Connect/DisConnect”如果成功的搭上線了,則伺服器端會在欄位 上顯示”user Lsapok”且 server 端預設為白色(PS 如果想換黑色,可 用”ChangeColor”來更換顏色) ,而用戶端則是在欄位出現”Down is Black”的訊息表示為黑色。

若紅外線沒有調整好適當的收發距離,而彼此無法連線,則會有Ir Err 視窗”no IrDA in range”的訊息出現,表示需要調整好紅外線的接收。

當我們在連線狀態下,正常的下棋的話,則下完一步的人,其欄位會 顯示”IR Move”表示該對方下,而另一方就會顯示”You Move”表示為 該自己下。

如果對方是已經連線且對弈了一段時間之後,雙方紅外線沒有良好的 溝通的話,導致於失去連線,則會有”Ir Err”的訊息視窗”Check IR Device Direction” ,表示已經失去連線,如果要再繼續下的話,請重 新Connect,而且如果最後一步棋是有下沒有傳過去的話,則會回到

如果對方是已經連線且對弈了一段時間之後,雙方紅外線沒有良好的 溝通的話,導致於失去連線,則會有”Ir Err”的訊息視窗”Check IR Device Direction” ,表示已經失去連線,如果要再繼續下的話,請重 新Connect,而且如果最後一步棋是有下沒有傳過去的話,則會回到

在文檔中 PGN西洋棋的Palm IR應用 (頁 39-60)

相關文件