首頁 > Java > java教程 > Swing 鍵綁定如何讓兩個玩家在 Java 遊戲中使用不同的鍵控制單獨的槳?

Swing 鍵綁定如何讓兩個玩家在 Java 遊戲中使用不同的鍵控制單獨的槳?

Linda Hamilton
發布: 2024-12-21 00:27:17
原創
650 人瀏覽過

How Can Swing KeyBindings Enable Two Players to Control Separate Paddles Using Different Keys in a Java Game?

使用按鍵綁定

為了解決允許兩個玩家使用不同的按鍵控制單獨的球拍的主要問題,建議的解決方案是使用Swing 鍵綁定。這種方法具有以下優點:

  • 按鍵綁定與遊戲邏輯的其餘部分分開,並具有更大的靈活性。
  • 即使遊戲未運行,按鍵綁定也能響應專注,不像關鍵聽眾。

程式碼範例

提供的程式碼範例示範如何在Java 應用程式中實作鍵綁定:

//Create a GameKeyBindings object associated with the game panel and the two paddle entities.
GameKeyBindings gameKeyBindings = new GameKeyBindings(gp, player1Entity, player2Entity);
登入後複製

在程式中實作鍵綁定:

//Key binding for Player 1's paddle: Up arrow key
gp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_W, 0, false), "W pressed");
gp.getActionMap().put("W pressed", new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent ae) {
        entity.UP = true;
    }
});

//Key binding for Player 2's paddle: Down arrow key
gp.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0, false), "down pressed");
gp.getActionMap().put("down pressed", new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent ae) {
        entity2.DOWN = true;
    }
});

// Similar key binding definitions for releasing the keys.
登入後複製

在程式中實作鍵綁定:

在程式中實作鍵綁定:

在GameKeyBindings 類別中,為每個球拍的移動定義鍵綁定:

Collections.synchronizedSet(new HashSet())

  • Collections.synchronizedSet(new HashSet()) 行建立一個同步集來按下的鍵。透過使用同步集,您可以確保多個執行緒可以同時存取和操作該集,而不會導致資料損壞或不一致。
  • 在提供的程式碼中,同步集用於追蹤目前按下的按鍵。遊戲邏輯需要此資訊來確定哪些球拍應該移動。
  • 其他資訊
無需切換單獨的執行緒即可實現所需的功能。 按鍵綁定是比使用按鍵更強大、更優雅的處理按鍵輸入的解決方案提供的程式碼範例是一個簡單直接的實作;可以根據需要添加進一步的最佳化和增強。

以上是Swing 鍵綁定如何讓兩個玩家在 Java 遊戲中使用不同的鍵控制單獨的槳?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板