シンプルなプラットフォーマーであるJavaでゲームを作ろうとしていますが、コードを実行するときに問題があります。キーを押しても反応がないようです。私が考えることができる唯一のことは、適切に機能していないと思うのは、keyPressed および keyReleased 関数です。以下は関連するコードです。
public ReflexPanel() {
initBoard();
setFocusable(true);
addKeyListener(this);
Timer timer = new Timer(1000/120, this);
timer.start();
}
private void initBoard() {
loadMenu();
int w = menu.getWidth(this);
int h = menu.getHeight(this);
setPreferredSize(new Dimension(w, h));
}
private void step() {
if(mainMenu){
if(ePressed) {
System.exit(0);
}
if(hPressed) {
loadScores();
repaint();
}
}
}
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == 'e') {
ePressed = true;
}
if (e.getKeyCode() == 'h') {
hPressed = true;
}
}
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == 'e') {
ePressed = false;
}
if (e.getKeyCode() == 'h') {
hPressed = false;
}
}
@Override
public void actionPerformed(ActionEvent e) {
step();
}
ePressed 変数と hPressed 変数は、デフォルトで false に設定された単なるブール値であり、loadScores は png ファイルを呼び出します。