Rumah > Java > javaTutorial > Bagaimanakah Swing KeyBindings Boleh Membolehkan Dua Pemain Mengawal Dayung Berasingan Menggunakan Kekunci Berbeza dalam Permainan Java?

Bagaimanakah Swing KeyBindings Boleh Membolehkan Dua Pemain Mengawal Dayung Berasingan Menggunakan Kekunci Berbeza dalam Permainan Java?

Linda Hamilton
Lepaskan: 2024-12-21 00:27:17
asal
651 orang telah melayarinya

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

Menggunakan Pengikatan Kekunci

Untuk menangani isu utama membenarkan dua pemain mengawal dayung berasingan menggunakan kekunci yang berbeza, penyelesaian yang dicadangkan adalah menggunakan Ayun Pengikat Kunci. Pendekatan ini memberikan kelebihan berikut:

  • Ikatan kunci adalah berasingan daripada logik permainan yang lain dan membolehkan fleksibiliti yang lebih besar.
  • Ikatan utama adalah responsif walaupun permainan tidak berada dalam fokus, tidak seperti pendengar utama.

Kod Contoh

Contoh kod yang disediakan menunjukkan cara melaksanakan pengikatan kunci dalam aplikasi Java anda:

//Create a GameKeyBindings object associated with the game panel and the two paddle entities.
GameKeyBindings gameKeyBindings = new GameKeyBindings(gp, player1Entity, player2Entity);
Salin selepas log masuk

Dalam kelas GameKeyBindings, pengikatan kunci ditakrifkan untuk setiap pergerakan dayung:

//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.
Salin selepas log masuk

Penjelasan Collections.synchronizedSet(new HashSet())

Baris Collections.synchronizedSet(new HashSet()) mencipta set disegerakkan untuk menyimpan kekunci yang ditekan. Dengan menggunakan set yang disegerakkan, anda memastikan bahawa berbilang benang boleh mengakses dan memanipulasi set secara serentak tanpa menyebabkan kerosakan atau ketidakkonsistenan data.

Dalam kod yang disediakan, set disegerakkan digunakan untuk menjejak kekunci yang sedang ditekan. Maklumat ini diperlukan untuk logik permainan untuk menentukan dayung yang patut digerakkan.

Maklumat Tambahan

  • Tidak perlu menogol benang berasingan untuk mencapai kefungsian yang diingini.
  • Pengikatan kunci ialah penyelesaian yang lebih mantap dan elegan untuk mengendalikan input kunci daripada menggunakan kunci pendengar.
  • Contoh kod yang disediakan ialah pelaksanaan yang mudah dan mudah; pengoptimuman dan penambahbaikan selanjutnya boleh ditambah mengikut keperluan.

Atas ialah kandungan terperinci Bagaimanakah Swing KeyBindings Boleh Membolehkan Dua Pemain Mengawal Dayung Berasingan Menggunakan Kekunci Berbeza dalam Permainan Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan