Come gestisco le pressioni dei tasti simultanee in Java?

Come gestisco le pressioni dei tasti simultanee in Java?

Sto cercando di scrivere un gioco e ho bisogno di gestire più pressioni di tasti contemporaneamente.

Quando tengo premuto un tasto (diciamo di andare avanti) e poi tengo premuto un altro tasto (ad esempio, per girare a sinistra), il nuovo tasto viene rilevato ma il vecchio tasto premuto non viene più rilevato.

Un modo sarebbe quello di tenere traccia di quali chiavi sono attualmente inattivo.

Quando ricevi un evento tasto premuto, aggiungi la nuova chiave alla lista; quando ricevi una chiave Evento rilasciato, rimuovi la chiave dall’elenco.

Quindi, nel tuo ciclo di gioco, puoi eseguire azioni in base a ciò che è presente nell’elenco delle chiavi.

Ecco un esempio di codice che illustra come eseguire un’azione quando viene premuto CTRL + Z:

import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; class p4 extends Frame implements KeyListener { int i=17; int j=90; boolean s1=false; boolean s2=false; public p4() { Frame f=new Frame("Pad"); f.setSize(400,400); f.setLayout(null); Label l=new Label(); l.setBounds(34,34,88,88); f.add(l); f.setVisible(true); f.addKeyListener(this); } public static void main(String arg[]){ new p4(); } public void keyReleased(KeyEvent e) { //System.out.println("re"+e.getKeyChar()); if(i==e.getKeyCode()) { s1=false; } if(j==e.getKeyCode()) { s2=false; } } public void keyTyped(KeyEvent e) { //System.out.println("Ty"); } /** Handle the key pressed event from the text field. */ public void keyPressed(KeyEvent e) { System.out.println("pre"+e.getKeyCode()); if(i==e.getKeyCode()) { s1=true; } if(j==e.getKeyCode()) { s2=true; } if(s1==true && s2==true) { System.out.println("EXIT NOW"); System.exit(0); } } /** Handle the key released event from the text field. */ } 

In generale, ciò che stai descrivendo può essere ottenuto usando le maschere di bit .