首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JBuilder 2005 開發 Applet 遊戲全攻略:從界面到數位簽名部署

     編輯:Java 相關知識

專案背景:指法練習遊戲

本文以一個經典的「指法練習 Applet 遊戲」為載體,完整示範 JBuilder 2005 開發 Applet 的全流程,涵蓋 GUI 設計、動畫繪製、音效播放、事件處理、多執行緒、I/O 存取、Applet 打包、安全沙箱突破 (數位簽名)、JRE 插件自動安裝等核心知識點。

遊戲設計與架構

使用者介面

  • 主畫面:Canvas 畫布,分 10 欄,字母隨機下落。
  • 控制面板:三個按鈕 (開始/暫停、停止、儲存成績) 與統計標籤 (總數、正確、失敗)。
  • 佈局:BorderLayout 整體,畫布置中,控制面板置東,內部採 GridLayout(9,1)。

類別結構與執行緒模型

  • TypeTrainApplet (繼承 JApplet):主類別,負責 UI 建構、事件響應、統計更新。
  • DropCharThread (內部類別,繼承 Thread):單一字母下落執行緒,負責繪製、移動、碰撞檢測、清除。
  • GenerateDropThread (內部類別,繼承 Thread):產生器執行緒,定時建立 DropCharThread 實例。

關鍵設計點:

  • 統計變數 (totalCount 等) 使用 volatile 保證多執行緒可見性。
  • 遊戲參數 (步長、間隔、欄數、產生頻率) 透過 HTML <param> 傳入,無需改代碼即可調整難度。
  • 繪圖採雙重緩衝技巧:Graphics.setXORMode() 實現字母移動無殘影。
  • 暫停/繼續機制:所有執行緒同步於 canvas 物件,透過 wait()/notifyAll() 協調。

核心功能實作細節

1. 字母下落執行緒 (DropCharThread)

流程:繪製字母 → 循環檢測 (未擊中、未到底、遊戲運行中) → 暫停檢查 (wait) → 清除舊位置 → 更新座標 → 繪製新位置 → 睡眠 → 循環。循環結束後統計結果、播放擊中音效、更新介面。

2. 音效整合

使用 Applet.getAudioClip() 載入 hit.wav,擊中時呼叫 play(),顯著提升遊戲手感。

3. 產生器執行緒 (GenerateDropThread)

定時 (可配置) 產生隨機字母 (a-z) 與隨機欄位 (1-10),啟動 DropCharThread。同樣支援暫停同步。

4. 鍵盤事件處理

覆寫 keyPressed,過濾非字元鍵,將按鍵字元存入 pressKeyChar,供下落執行緒檢測碰撞。

5. 遊戲狀態控制 (三按鈕)

  • 開始/暫停:狀態機 (0=停止, 1=運行, 2=暫停) 切換,圖示動態切換,啟動/通知產生器執行緒。
  • 停止:重置狀態為 0,通知所有執行緒結束,禁用停止按鈕,恢復開始圖示。
  • 儲存成績:嘗試寫入本地 D:\result.txt,未簽名時被沙箱攔截 (SecurityException)。

6. 生命週期管理

覆寫 start()/stop(),設定 isClose 標誌,下落執行緒定期檢查,避免瀏覽器關閉時存取已銷毀的 Graphics 導致 NullPointerException。

突破沙箱:數位簽名完整流程

理論基礎

  • 訊息摘要:資料指紋,驗證完整性。
  • 訊息驗證碼 (MAC):共享金鑰加密摘要,防竄改。
  • 數位簽名:私鑰加密摘要,公鑰驗證,確認來源身份 (非對稱加密)。
  • 數位憑證:綁定身份與公鑰,經 CA 簽名信任鏈驗證。

實作步驟

  1. 產生金鑰庫與憑證:keytool -genkey -alias myAlias -keyalg RSA -keystore myKeystore -validity 3650,設定金鑰庫密碼與金鑰密碼。
  2. JBuilder 打包精靈:File → New → Archive → Applet JAR,勾選壓縮,包含所有 game/*.class 及資源檔 (圖片、音效)。
  3. 簽名設定:精靈最後步驟勾選 Digitally sign this archive,指定金鑰庫、別名、密碼、類型 (JKS)。
  4. 修改 HTML:在 <applet> 標籤加入 archive="game.JAR",將 HTML 放至 JAR 同目錄。
  5. 瀏覽器驗證:IE 偵測到簽名 Applet 彈出安全警告,接受後授予完整權限,儲存檔案功能正常運作。

確保執行環境:JRE 插件自動安裝

使用 JDK 附帶 HtmlConverter.exe 轉換 HTML,生成 <object> (IE) 與 <embed> (Navigator) 標籤,指定 codebase 指向 Sun JRE 下載頁。若客戶端無 JRE 或版本過低,將自動下載安裝指定版本 (如 1.5.0),確保 Applet 在標準環境運行。企業內網部署可將 CAB 檔與 XML 配置置於自有伺服器,修改路徑實現離線安裝。

總結

這個看似簡單的遊戲實則串聯了 Applet 開發的完整知識鏈:從 UI 設計、多執行緒動畫、事件驅動、資源管理,到安全模型突破與跨瀏覽器部署。數位簽名解決了「外來客」不被信任的困境,HtmlConverter 解決了「環境不一致」的痛點。掌握這套流程,即掌握了 Java 客戶端應用分發的核心技術。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved