Могу ли я изменить переменную с помощью KeyListener? - PullRequest
0 голосов
/ 01 декабря 2018
public void keyPressed(KeyEvent e) {
                int setNum = 1;
                if(e.getKeyCode() == 'u'|| e.getKeyCode() == 'U' && setNum == 1) {
                    setNum = 2;
                }

Это часть кода игры 2Player Tetris: настройка ключа

                if(e.getKeyCode() == 'u'|| e.getKeyCode() == 'U' && setNum == 2) {
                    setNum = 1;
                }
                if(setNum == 1) {
                    if(e.getKeyCode() == 'a' || e.getKeyCode() == 'A') {
                        board1.tryMove(board1.curPiece, board1.curX - 1, board1.curY);
                    }   
                    if(e.getKeyCode() == 'd' || e.getKeyCode() == 'D') {
                        board1.tryMove(board1.curPiece, board1.curX + 1, board1.curY);
                    }
                    if(e.getKeyCode() == 's' || e.getKeyCode() == 'S') {
                        board1.oneLineDown();
                    }
                    if(e.getKeyCode() == 'w' || e.getKeyCode() == 'W') {
                        board1.tryMove(board1.curPiece.rotateLeft(), board1.curX, board1.curY);
                    }   
                    if(e.getKeyCode() == KeyEvent.VK_SHIFT) {
                        board1.dropDown();
                    }
                    if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
                        board2.tryMove(board2.curPiece, board2.curX + 1, board2.curY);
                    }
                    if(e.getKeyCode() == KeyEvent.VK_LEFT) {
                        board2.tryMove(board2.curPiece, board2.curX - 1, board2.curY);
                    }
                    if(e.getKeyCode() == KeyEvent.VK_DOWN) {
                        board2.oneLineDown();               
                    }
                    if(e.getKeyCode() == KeyEvent.VK_UP) {
                        board2.tryMove(board2.curPiece.rotateLeft(), board2.curX, board2.curY);
                    }
                    if(e.getKeyCode() == KeyEvent.VK_SPACE) {
                        board2.dropDown();  
                    }

                }

Когда setNum = 1;Игрок 1 может играть с WASD, а игрок 2 может играть с помощью клавиши со стрелкой

                else if(setNum == 2) {
                    if(e.getKeyCode() == '2' || e.getKeyCode() == '2') {
                        setNum = 1; 
                    }
                    if(e.getKeyCode() == 'a' || e.getKeyCode() == 'A') {
                        board2.tryMove(board2.curPiece, board2.curX - 1, board2.curY);
                    }   
                    if(e.getKeyCode() == 'd' || e.getKeyCode() == 'D') {
                        board2.tryMove(board2.curPiece, board2.curX + 1, board2.curY);
                    }
                    if(e.getKeyCode() == 's' || e.getKeyCode() == 'S') {
                        board2.oneLineDown();
                    }
                    if(e.getKeyCode() == 'w' || e.getKeyCode() == 'W') {
                        board2.tryMove(board2.curPiece.rotateLeft(), board2.curX, board2.curY);
                    }   
                    if(e.getKeyCode() == KeyEvent.VK_SHIFT) {
                        board2.dropDown();
                    }
                    if(e.getKeyCode() == KeyEvent.VK_RIGHT) {
                        board1.tryMove(board1.curPiece, board1.curX + 1, board1.curY);
                    }
                    if(e.getKeyCode() == KeyEvent.VK_LEFT) {
                        board1.tryMove(board1.curPiece, board1.curX - 1, board1.curY);
                    }
                    if(e.getKeyCode() == KeyEvent.VK_DOWN) {
                        board1.oneLineDown();               
                    }
                    if(e.getKeyCode() == KeyEvent.VK_UP) {
                        board1.tryMove(board1.curPiece.rotateLeft(), board1.curX, board1.curY);
                    }
                    if(e.getKeyCode() == KeyEvent.VK_SPACE) {
                        board1.dropDown();  
                    }

                }

и setNum = 2;Player1 может играть с помощью клавиши со стрелкой, а Player2 может играть с помощью клавиши Wasd.

  • Я хочу создать код, который После нажатия клавиши «U» измените настройку ключа с помощью player1 и player2.(WASD SHIFT <-> клавиша со стрелкой и пробел)

Но мой код не работает.Как я могу это сделать?

1 Ответ

0 голосов
/ 01 декабря 2018

Полезный ответ заключается в том, что, вероятно, следует выполнить обработку ключа, прежде чем покинуть прослушиватель событий.То есть вызовите соответствующий метод с соответствующими аргументами из анонимного внутреннего класса.

Буквальный минимальный ответ будет состоять в том, чтобы переместить объявление setNum в соответствующую область.Если соответствующая область видимости не является классом (т. Е. Это не поле), то у вас есть дополнительная проблема, заключающаяся в том, что он должен быть эффективно окончательным, но есть множество других вопросов, связанных с этим.

...