2012年2月1日 星期三

Flash : phrase2 成語大挑戰 (2012.06.03 更新)

過年前把新學期國語可用的 Flash 小遊戲都準備好了,這學期要開始來加強成語的部份,因此把 自己在2006 年三月寫,做得滿陽春的「成語大挑戰」拿出來重新研究。當初製作這個工具是想運用教育部 CAI 「成語挑戰屋」裡的題庫而寫的簡單遊戲,題庫還以 PHP 寫了個轉換程式,但是牽就於原來題庫的格式,轉換完的資料並不好解讀及自製,於是花了一點時間修改了運作的程序,加強了它的功能,也順便研究了教育部「國語辭典簡編本」的查詢語法,以 PHP 寫了一個小小的題庫產生器,這樣,以後再出題目時就可以輕鬆製作了。

功能介紹
  • 新版的「成語大挑戰」適用在詞語填空類型的題目。
  • 支援中文和英文,而中文如果有依格式輸入注音在指定的欄位中,會自動加上直式注音。
  • 玩的時候畫面上可以顯示解釋(提示)。
  • 如果題庫的「例句」欄位有資料,同樣的題庫就會有兩種玩法。
  • 可自訂選項的個數。
  • 可自訂題庫欄位的分隔符號。
第一關:成語填字
第二關:句子填成語
英文句子填單字(第一關模式)

目錄結構

這個小遊戲所需要的基本檔案有兩個:
  • phrase2.swf  (程式)
  • phrase2_set.txt (設定檔,選單設定或是題庫設定)
如果 phrase2_set.txt 是用來當選單,當然就需要再建一個資料夾(datafolder 記得配合改設定內容)來放題庫設定檔。


設定檔格式

「成語大挑戰」預設會開啟的設定檔檔名為「phrase_set.txt」,而裡放則可以放「選單設定」或是「題庫設定」。
請注意:無論是選單設定檔或是題庫設定,記得要儲存為 UTF-8 編碼的格式,不然,中文字有可能會變成一堆亂碼。

選單設定可用的參數
特別注意 & 符號、等號(=) 和欄位分隔的逗號( , )
  • title :選單畫面上方要出現的標題字。
  • datafolder:題庫設定檔存放資料夾的名稱。
  • separator:選單設定中分隔各欄位的分隔符號,如果沒有設定,預設是使用半形的逗號「,」來分隔各欄位。
  • menu_lines:選單設定,每一行是一個選單,
    一行要有兩個欄位,依序為:

    「選項名稱」,「題庫檔檔名」

    以上圖的例子來說,選單會出現14個選項,當使用者按下最後一個「三下第14課」的選項時,程式會幫我們到 datafolder 也就是 「phrase_data 」的目錄中載入檔名為「k-06-14.txt」的題庫檔來解析。
  • 上面的設定檔範例會出現下圖的選單畫面:

題庫設定可用的參數
k-06-14.txt 題庫以四個分隔符號(預設為逗號)分隔五個欄位
english_set.txt 這個範例更改了分隔符號(用井字號)
  • speed:控制泡泡落下來的速度,預設為 10,數度愈大,每次移動的愈多(速度愈快)。
  • options_length:玩的時候最多會出現幾個選項,預設為四個,如果可供候選的答案少於這個設定,程式會自動調整。
  • separator:可設定每一行題庫裡各欄位的分隔符號,預設為一個半形逗號,如果是中文的題庫,使用預設值即可。如果是出英文題目,而句中剛好用到半形逗號時,只好改這個設定,並將題庫中所有的欄位分隔符號都改為這裡所指定的符號。上圖中綠色箭頭指出它將分隔符號改為井字號(#),所以底下題庫中每一行都會有四個井字號來分隔五個欄位。
  • question_lines:題庫設定。
    一行一道題庫,每一行應該要有五個欄位(以半形逗號隔開),依序為:

    「答案」,「題目」 ,「注音」 ,「解釋(提示)」 ,「例句」

    第三個欄位的「注音」如果有設定,對應第二個欄位「題目」的國字,程式會自動幫答案及題目的國字加上直式注音。例如:

    &question_lines=
     ,傾盆大雨,ㄑㄧㄥ ㄆㄣˊ ㄉㄚˋ ㄩˇ,比喻雨勢又急又大。,本來出太陽,突然下起傾盆大雨。
    &

    注音的部份,  因為題目欄位「傾盆大雨 「 ㄑㄧㄥ 」和「 ㄆㄣˊ 」和「  ㄉㄚˋ 」和「  ㄩˇ 」之間都有一個半形的空格,出題時,注音會自動加在「 雨」和「傾盆大雨 」旁邊。
咦!每一行題庫都只放了一個標準答案,那如何讓使用者有多個選項可以選呢?
這支程式選項的產生方法如下:
  • 先將題庫一行行抓出來解析。
  • 如果是第一關時,把每一題的正確答案(第一個欄位)蒐集起來當候選的選項(題目是第二個欄位)。
    如果是第二關時,把每一題的第二個欄位蒐集起來當作候選的選項(題目則改用第五欄位的例句)。
  • 將前述蒐集的選項一個個檢查,去掉重覆的部份。
所以,選項的部份不用傷腦筋,程式會自動產生。


中文題庫產生器

教育部有好幾個線上電子字辭典,如果不拿來好好的運用,實在有一點浪費。這一次我選用的是「教育部國語辭典簡編本」,我們可以利用它來幫我們查出某個語詞的注音、解釋和例句。
為了方便使用,我利用 PHP 寫了一個能夠「批次查詢」的小工具,這樣,剩下的工作就是剪貼到題庫設定檔中了。
例如想製作 (群)(異) (貪)(雞)(游)(尾)五個生字的生字成語:
群策群力
標新立異
貪小失大
呆若木雞
力爭上游
虎頭蛇尾 
就把生字 (答案,第一個欄位) 放在第一個字,然後加一個半形逗號 ( , 欄位分欄符號),變成下面的內容:
群,群策群力
異,標新立異
貪,貪小失大
雞,呆若木雞
游,力爭上游
尾,虎頭蛇尾
然後填入題庫產生器的表單中,這樣,我們再把結果複製到題庫檔中,前面例子的 k-06-14.txt 就完成了。

查詢到的結果被反白選取了
檔案下載
相關連結
更新紀錄
  • 2012.06.03 加入可控制泡泡落下速度的參數 speed。
  • 2012.04.18 題庫可以加入聲音的欄位 ,如果有第六個欄位,而且是 .mp3 結尾的話,程式會顯示聲音播放器,並試著載入聲音檔來播放。
  • 2012.01.31 加入回饋的音效、背景音樂及支援英文題庫的部份。
  • 2012.01.30 完成題庫產生器。
  • 2012.01.30 修改設定檔載入的方式、中文加注音、設定檔格式......等部份。
  • 2006.03.26 初版


4 則留言:

  1. 又撈到寶了,非常感謝雄老師的貢獻,是我們學生一直保持對中文的熱度。

    回覆刪除
  2. 上面這位朋友您好,
    很高興知道您和學生喜歡我的作品,
    有空再來坐坐哦!

    回覆刪除
  3. 老師謝謝您分享如此實用的遊戲。 =)

    不曉得為什麼在使用中文題庫產生器時,會出現以下資訊

    Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known in /home/gsyan/www/works/jdict.php on line 33

    Warning: file_get_contents(http://dict.concised.moe.edu.tw/cgi-bin/jdict/search.cgi?R1=V1&QueryString=群策群力) [function.file-get-contents]: failed to open stream: php_network_getaddresses: getaddrinfo failed: hostname nor servname provided, or not known in /home/gsyan/www/works/jdict.php on line 33

    並且無法出現反白字列,想詢問老師是否有什麼解決的辦法。

    謝謝您!

    回覆刪除
    回覆
    1. 您好:
      應該是我們學校主機的 DNS 設定有問題, 暫時將教育部網站網址改用 IP, 您再試試。

      刪除

 
© 2009. Design by Pocket