修改tettadom

  1. 結構及版權

    路徑及檔名 功能 版權
    tetta.css 本網站的CSS檔* 公共領域
    tettadom.css tettadom的CSS檔 公共領域
    gpl.html GPL版權網頁* FSF
    index.html 本網站首頁* 公共領域
    favicon.ico tetta的圖示* 公共領域
    default.js tettadom預設值的JavaScript檔 公共領域
    tettadom.js tettadom的JavaScript檔 GPL
    zh-tw/* 繁體中文(台灣)子目錄 公共領域
    zh-tw/faq.html tetta和tettadom的常見問題 公共領域
    zh-tw/join.html 開發tetta遊戲* 公共領域
    zh-tw/help.html tettadom說明 公共領域
    zh-tw/modify.html 本網頁 公共領域
    zh-tw/rules.html tetta的規則及特色* 公共領域
    zh-tw/squares.html tetta裡的方陣* 公共領域
    zh-tw/tettadom.html tettadom遊戲 公共領域
    zh-tw/tips.html tetta的技巧* 公共領域
    zh-tw/versions.html tettadom的版本 公共領域
    zh-tw/language.js tettadom語言設定值的JavaScript檔 公共領域
    images/ 圖片子目錄* 公共領域

    * 不是tettadom專用,也可以用在其他tetta軟體。

  2. tettadom.html 的結構

    <?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>也都是不必要的,但是建議都保留。
  3. tettadom.js 的結構

    函數
    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
    超過時間的限制的警告訊息。
  4. tettadom.css 的結構

    dt
    給help.html使用
    #record, #tetta
    遊戲及記錄的表格。
    #record th, #record td
    記錄的表格裡的方格。
    #tetta
    遊戲的表格。
    #tetta td
    遊戲的表格裡的方格。
    #tetta td:hover
    滑鼠游標指到遊戲的表格裡的方格。
    .c0到.cf
    遊戲的方格圖案的類別。
  5. 修改tettadom

    tettadom的授權就是為了讓人方便修改給自己用。為了修改,你最好是了解HTML、CSS、JavaScript、DOM的原理以及彼此的關係。以下依照難度(由易到難)介紹修改的方式:

    1. 如果你想要修改遊戲的外觀,只需修改 tettadom.css 即可。
    2. 如果你想要修改遊戲的預設值,只需修改 default.jslanguage.js 即可。其中default.js和語言無關,language.js和語言有關。兩者的分別並不一定,可隨自己的喜好而定。
    3. 如果你想要修改遊戲的HTML檔 tettadom.html ,請注意它和 tettadom.js 有密切的關係,是不能隨意修改的。請仔細研究兩者的結構和彼此的關係。
    4. 如果你想要修改遊戲的JavaScript程式 tettadom.js ,請注意它和 tettadom.html 有密切的關係,是不能隨意修改的。請仔細研究兩者的結構和彼此的關係。還有,別忘記了,tettadom.js是GPL授權,散佈修改時請遵守相關規定。
  6. 翻譯tettadom

  7. 嵌入tettadom

    在你的網頁的主體加入 <iframe height="640" src="http://tetta.sourceforge.net/zh-tw/tettadom.html" width="576"></iframe> 。屬性hegith及width可以作調整。

玩! 說明 常見問題 規則 方陣 技巧 首頁 下載! 版本 專案 加入!

好玩的遊戲只有一種理由;不好玩的遊戲卻有幾百種理由。

SourceForge.net Logo