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

Java Applet 英文打字遊戲:雙緩衝、音效、右鍵選單難度調整

     編輯:Java 相關知識

經典 Applet 版打字遊戲,展示雙緩衝繪圖、音效回饋(擊中/擊錯/背景音樂)、右鍵選單動態調整難度、字母不重複隨機生成與自動重生機制。雖 Applet 已被瀏覽器淘汰,程式碼仍具教學價值,可輕鬆移植至 Swing/JavaFX。

架構概覽

  • MyPanel (Applet + Runnable):初始化、雙緩衝建立、音效載入、右鍵選單、遊戲迴圈。
  • letter:字母物件池(位置、速度、字元、重生)。
  • A (MouseAdapter):右鍵彈出選單。
  • B (KeyAdapter):擊鍵判定、播放音效、更新統計。

關鍵技術細節

雙緩衝消除閃爍

public void init() {
    width = getSize().width; height = getSize().height;
    img = createImage(width, height);   // 離屏圖像
    off = img.getGraphics();            // 離屏繪圖上下文
}
public void paint(Graphics g) {
    off.setColor(getBackground());
    off.fillRect(0, 0, width, height);  // 清除離屏
    myletter.paintLetters(off);         // 畫在離屏
    off.drawString(stats, 200, 200);    // 畫統計
    g.drawImage(img, 0, 0, this);       // 一次性貼上螢幕
}
public void update(Graphics g) { paint(g); } // 禁用預設清除

音效整合

A1 = getAudioClip(getDocumentBase(), "Audio/AUDIO1.au"); // 擊中
A2 = getAudioClip(getDocumentBase(), "Audio/AUDIO2.au"); // 擊錯
A3 = getAudioClip(getDocumentBase(), "Audio/AUDIO3.au"); // 背景循環
// 開始時 A3.loop(),結束時 A3.stop()

字母邏輯(同改良版)

  • 9 固定 X 座標槽位,隨機挑選不重複。
  • 字元 A-Z 隨機,陣列內不重複。
  • 超出螢幕底部 → isOmittedSum++ → reStart() 重生。

HTML 啟動頁

<html>
<body bgcolor="pink">
<applet code="MyPanel.class" width="750" height="380">
</applet>
</body>
</html>

編譯:javac MyPanel.java → 執行:appletviewer MyPanel.html

移植建議

  1. 將 Applet 改為 JFrame,init() → 建構子,start()/stop() → 視窗開關事件。
  2. getAudioClip 改用 AudioSystem.getAudioInputStream + Clip。
  3. 移除 appletviewer 相依,直接 java MyPanel 執行。
  4. 保留雙緩衝與字母邏輯,僅替換繪圖入口。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved