修改tettadom
-
結構及版權
* 不是tettadom專用,也可以用在其他tetta軟體。
-
- <?xml version="1.0" encoding="UTF-8"?>
- XML 1.0文件的宣告
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
- XHTML 1.1文件類型的宣告
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-tw">
- HTML文件
- <head>
- 表頭
- <link href="../tettadom.css" rel="stylesheet" title="tettadom" type="text/css">
- CSS檔的連結
- <meta http-equiv="content-type" content="text/html; charset=UTF-8">
- MIME類型及字元編碼
- <title>
- 標題
- tettadom
- 內容
- <body>
- 主體
- <table id="tetta">
- 遊戲的表格
- <tr>
- 為符合XHTML 1.1的規格
- <td>
- 為符合XHTML 1.1的規格
- <p>
- 按鈕控制列,不必要
- <input id="start" type="button">
- 移到最前
- <input id="fastback" type="button">
- 快速後退
- <input id="back" type="button">
- 後退
- <input id="memorize" type="button">
- 記憶
- <input id="fore" type="button">
- 前進
- <input id="fastfore" type="button">
- 快速前進
- <input id="end" type="button">
- 移到最後
- <input id="moves" type="button">
- 移動步數-重玩遊戲
- <input id="time" type="button">
- 經過時間-暫停/繼續遊戲
- <input id="new" type="button">
- 新遊戲
- <input id="save" type="button">
- 儲存遊戲
- <input id="about" type="button">
- 關於tettadom
- <p>
- 選單控制列,不必要
- <label>
- 方陣的階數,不必要
- 階數
- 選單的標題
- <select id="order">
- 單一階數的選單
- <option>
- 為符合XHTML 1.1的規格
- 00
- 兩位數字,為了顯示正確
- <label>
- 遊戲規則,不必要
- 規則
- 選單的標題
- <select id="rules">
- 多重規則的選單
- <option>
- 規則1
- 1 行-列
- 內容
- <option>
- 規則2
- 2 行/列-拉丁
- 內容
- <option>
- 規則3
- 3 希臘拉丁
- 內容
- <table id="record">
- 記錄的表格
- <tr>
- 標題列
- <th>
- 第1列的標題
- 記錄
- 內容
- <th colspan="3">
- 第2-4欄的標題
- 完成數
- 內容
- <th colspan="3">
- 第5-7欄的標題
- 平均步數
- 內容
- <th colspan="3">
- 第8-10欄的標題
- 平均時間
- 內容
- <tr>
- 標題列
- <th>
- 第2列的標題
- 規則
- 內容
- <script src="../default.js" type="text/javascript">
- 載入default.js
- <script src="../language.js" type="text/javascript">
- 載入language.js
- <script src="../tettadom.js" type="text/javascript">
- 載入tettadom.js,這元素必須在其他元素的後面
- <p>
- 連結列,不必要
- <a href="help.html">
- tettadom說明
- 說明
- 內容
- <a href="faq.html">
- tetta和tettadom的常見問題
- 常見問題
- 內容
- <a href="rules.html">
- tetta的規則及特色
- 規則
- 內容
- <a href="squares.html">
- tetta裡的方陣
- 方陣
- 內容
- <a href="tips.html">
- tetta的技巧
- 技巧
- 內容
- <a href="../index.html">
- tetta的官方網站
- 首頁
- 內容
- <a href="http://sourceforge.net/project/showfiles.php?group_id=115228">
- 下載tetta遊戲
- 下載!
- 內容
- <a href="versions.html">
- tettadom的版本
- 版本
- 內容
- <a href="modify.html">
- 修改tettadom
- 修改!
- 內容
- <a href="http://sourceforge.net/projects/tetta/">
- tetta-一個方陣解謎遊戲
- 專案
- 內容
- <a href="join.html">
- 開發tetta遊戲
- 加入!
- 內容
- <p>
- 格言列,不必要
- <q>
- tetta的格言
- 好玩的遊戲只有一種理由;不好玩的遊戲卻有幾百種理由。
- 內容
- <p>
- SourceForge的標誌按鈕列,為符合SourceForge的要求
- <a href="http://sourceforge.net">
- SourceForge的連結
- <img alt="SourceForge.net Logo" height="62" src="http://sflogo.sourceforge.net/sflogo.php?group_id=115228&type=5" width="210" />
- SourceForge的標誌按鈕
- 附註
-
- 除了表格和選單之外,上面的元素跟次序無關(載入tettadom.js的<script>元素除外)。
- tettadom.js只控制有屬性id的元素,所以連結列和格言列都不必要的,但是建議都保留。
- 屬性title都是不必要的(所以上面都沒顯示,標示成元素說明),但是建議都保留。
- 元素<label>也都是不必要的,但是建議都保留。
-
- 函數
-
- toradix(number,digits,radix)
- 將非負整數number轉換成以radix為底數及最多digits位數的字串,前面補零。
- showtime()
- 計時器的事件處理函數,檢查是否超過時間的限制,如果是,顯示警告訊息後重玩遊戲(replay());否則在屬性id為time的元素裡顯示時間。
- issuccess()
- 檢驗方陣是否已經完成規則。傳回值:1 規則1,圖1;2 規則1,圖2;4 規則2,圖3;8 規則2,圖4;16 規則2,圖5;32 規則2,圖6;64 規則3,圖7。
- showmoves()
- 在屬性id為moves的元素裡顯示移動步數,並設定按鈕狀態。
- showtetta()
- 在屬性id為tetta的表格元素裡顯示遊戲方陣(設定class)及移動步數(showmoves())。
- swap(k,k0)
- 對調兩個方格cells[k](選取的方格)、cells[k0](全黑的方格),並顯示移動步數(showmoves())。
- move()
- 單擊方格的事件處理函數。如果單擊全黑的方格,則後退一步(back());否則檢查是否超過移動步數的限制,如果超過,顯示警告訊息;否則對調單擊的方格和全黑的方格並檢驗方陣是否已經完成規則(issuccess()),如果是,更新cookie record及屬性id為record的表格元素,並顯示恭喜訊息。
- fore()
- 單擊屬性id為fore的按鈕的事件處理函數,前進一步,並顯示移動步數(showmoves())。
- back()
- 單擊屬性id為back的按鈕的事件處理函數,後退一步,並顯示移動步數(showmoves())。
- memorize()
- 單擊屬性id為memorize的按鈕的事件處理函數,記憶目前的步數。
- fastback()
- 單擊屬性id為fastback的按鈕的事件處理函數,移動到上一個記憶的步數,並顯示移動步數(showmoves())。
- fastfore()
- 單擊屬性id為fastfore的按鈕的事件處理函數,移動到下一個記憶的步數,並顯示移動步數(showmoves())。
- start()
- 單擊屬性id為start的按鈕的事件處理函數,移動到最前面,並顯示移動步數(showmoves())。
- end()
- 單擊屬性id為end的按鈕的事件處理函數,移動到最後面,並顯示移動步數(showmoves())。
- replay()
- 單擊屬性id為moves的按鈕的事件處理函數,重玩遊戲。
- changerules()
- 改變屬性id為rules的選單選項的事件處理函數,改變遊戲規則,並重玩遊戲(replay())。
- resume()
- 單擊屬性id為time的按鈕的事件處理函數,暫停或繼續遊戲。
- createtetta()
- 在屬性id為tetta的表格元素裡建立新的遊戲方陣,但是不設定方格裡元素的class。
- newgame()
- 單擊屬性id為new的按鈕的事件處理函數,玩新遊戲,但是不建立新的遊戲方陣(createtetta())。
- newtetta()
- 建立新的遊戲方陣(createtetta()),並玩新遊戲(newgame())。
- changeorder()
- 改變屬性id為order的選單選項的事件處理函數,改變方陣的階數(從3開始),並建立新的遊戲方陣後玩新遊戲(newtetta())。
- load()
- 不存在的函數,一載入tettadom.js就會自動執行。設定所有元素的事件處理函數,並設定按鈕顯示的字串;移除屬性id為order的選單選項(00),並加入選項3到16;如果沒有cookie record的話,將所有記錄設定為零,否則載入記錄,再顯示所有記錄;如果沒有cookie tetta的話,就不更改所有遊戲變數的預設值,否則載入遊戲變數,再顯示遊戲方陣;設定計時器的事件處理函數,週期1秒;設定屬性id為rules的選單選項;設定屬性id為order的選單選項。
- save()
- 單擊屬性id為save的按鈕的事件處理函數,儲存遊戲目前的進度,但是不建立新的遊戲方陣(createtetta())。
- about()
- 顯示tettadom的版權訊息。
- 全域變數
-
- cells[256]
- 方格,最多共16 * 16 = 256個元素。
- completes[98]
- 完成數,最多共7 * 14 = 98個元素。
- maxmemory
- 最大的記憶步數,最大是階數的平方 * 4 - 1。
- maxmoves
- 最大的移動步數,最大是階數的平方 * 4 - 1。
- memory
- 目前的記憶步數,最大是階數的平方 * 4 - 1。
- moves
- 目前的移動步數,最大是階數的平方 * 4 - 1。
- pause
- 目前是否暫停的布林值,true表示暫停,false表示繼續。
- steps[1024]
- 記憶的步數,最多共階數的平方 * 4個元素(steps[0]不代表什麼)。
- success
- 目前完成的規則,0表示還沒完成,其他整數:1 規則1,圖1;2 規則1,圖2;4 規則2,圖3;8 規則2,圖4;16 規則2,圖5;32 規則2,圖6;64 規則3,圖7。
- time
- 目前的經過秒數。
- totalmoves[98]
- 總移動步數,最多共7 * 14 = 98個元素。
- totaltime[98]
- 總經過秒數,最多共7 * 14 = 98個元素。
- zeros[1024]
- 移動的方格,最多共階數的平方 * 4個元素(zeros[0]表示一開始的方陣的全黑的方格)。
- _tetta
- 遊戲的表格。
- _time
- 經過時間-暫停/繼續遊戲的按鈕。
- _moves
- 移動步數-重玩遊戲的按鈕。
- _start
- 移動到最前的按鈕。
- _fastback
- 快速後退的按鈕。
- _back
- 後退的按鈕。
- _memorize
- 記憶的按鈕。
- _fore
- 前進的按鈕。
- _fastfore
- 快速前進的按鈕。
- _end
- 移到最後的按鈕。
- _order
- 方陣的階數的選單。
- _rules
- 遊戲規則的選單。
- _record
- 記錄的表格。
-
以下也都是
default.js
裡的變數
- order
- 方陣的階數。
- rules
- 遊戲規則,由以下數字相加:1 規則1,圖1;2 規則1,圖2;4 規則2,圖3;8 規則2,圖4;16 規則2,圖5;32 規則2,圖6;64 規則3,圖7(如127 = 1 + 2 + 4 + 8 + 16 + 32 + 64,表示任何規則都可以完成)。
- expiretetta
- Cookie tetta的過期時間(毫秒)。
- expirerecord
- Cookie record的過期時間(毫秒)。
- top
- 遊戲的方格上面的圖案,含空白字元。
- bottom
- 遊戲的方格下面的圖案,含空白字元。
- _start_
- 移動到最前的按鈕的圖案。
- _fastback_
- 快速後退的按鈕的圖案。
- _back_
- 後退的按鈕的圖案。
- _memorize_
- 記憶的按鈕的圖案。
- _fore_
- 前進的按鈕的圖案。
- _fastfore_
- 快速前進的按鈕的圖案。
- _end_
- 移到最後的按鈕的圖案。
- _new_
- 新遊戲的按鈕的圖案。
- _save_
- 儲存遊戲的按鈕的圖案。
- _about_
- 關於tettadom的按鈕的圖案。
-
以下也都是
language.js
裡的變數
- congrat
- 恭喜完成方陣的訊息。
- toomany
- 超過移動步數的限制的警告訊息。
- timeup
- 超過時間的限制的警告訊息。
-
- dt
- 給help.html使用
- #record, #tetta
- 遊戲及記錄的表格。
- #record th, #record td
- 記錄的表格裡的方格。
- #tetta
- 遊戲的表格。
- #tetta td
- 遊戲的表格裡的方格。
- #tetta td:hover
- 滑鼠游標指到遊戲的表格裡的方格。
- .c0到.cf
- 遊戲的方格圖案的類別。
-
修改tettadom
tettadom的授權就是為了讓人方便修改給自己用。為了修改,你最好是了解HTML、CSS、JavaScript、DOM的原理以及彼此的關係。以下依照難度(由易到難)介紹修改的方式:
- 如果你想要修改遊戲的外觀,只需修改
tettadom.css
即可。
- 如果你想要修改遊戲的預設值,只需修改
default.js
或
language.js
即可。其中default.js和語言無關,language.js和語言有關。兩者的分別並不一定,可隨自己的喜好而定。
- 如果你想要修改遊戲的HTML檔
tettadom.html
,請注意它和
tettadom.js
有密切的關係,是不能隨意修改的。請仔細研究兩者的結構和彼此的關係。
- 如果你想要修改遊戲的JavaScript程式
tettadom.js
,請注意它和
tettadom.html
有密切的關係,是不能隨意修改的。請仔細研究兩者的結構和彼此的關係。還有,別忘記了,tettadom.js是GPL授權,散佈修改時請遵守相關規定。
-
翻譯tettadom
- 你必須翻譯語言子目錄(如en/或zh-tw/)下所有的檔案,並且放在另一個子目錄,名稱格式為語言編碼(-國家或地區編碼)。語言編碼請參考
ISO 639
;國家或地區編碼請參考
ISO 3166
。
- 如果你想要貢獻你的翻譯給我們,請注意必須釋出成公共領域軟體。如果你想要保留版權,請自行保留。
- 到目前為止,tetta及tettadom的原始說明是繁體中文(台灣)。如果可以的話,請從繁體中文(台灣)翻譯。
-
嵌入tettadom
在你的網頁的主體加入 <iframe height="640" src="http://tetta.sourceforge.net/zh-tw/tettadom.html" width="576"></iframe> 。屬性hegith及width可以作調整。
玩!
說明
常見問題
規則
方陣
技巧
首頁
下載!
版本
專案
加入!
好玩的遊戲只有一種理由;不好玩的遊戲卻有幾百種理由。