2013-09-26 5 views
0

Я делаю Orthogonal Tiled Map Java-игру, когда мой корабль перемещается к границам x и y, нажимая направление. Key останавливает перемещение (по назначению), но если я продолжаю нажимать клавишу My character выходит из экрана.Java Game - нажатие клавиши

Вот код, я использую:

@Override 
    public boolean keyDown(int keycode) { 
      ship = world.getShip(); 

      switch(keycode){ 
        case Keys.W: 
         if (ship.getPosition().y<28.5f){ 

          ship.getVelocity().y = 1;} 
          else { 
           ship.getVelocity().y = 0; 
          } 
          break; 
        case Keys.S: 
         if (ship.getPosition().y1){ 
          ship.getVelocity().y = -1;} 
         else { 
          ship.getVelocity().y = 0; 
        } 
          break; 
        case Keys.A: 
          if (ship.getPosition().x0) 
          ship.getVelocity().x = -1.5f; 
          else{ 
           ship.getVelocity().x = 0; 
          } 
          break; 
        case Keys.D: 
          if (ship.getPosition().x<39){ 

          ship.getVelocity().x = 1; 
          } 
          else{ 
           ship.getVelocity().x = 0; 
          } 
          break; 
    default: 
          break; 
      } 
      return true; 
    } 

    @Override 
    public boolean keyUp(int keycode) { 
      ship = world.getShip(); 
      switch(keycode){ 
        case Keys.W: 
          if(ship.getVelocity().y == 1) 
            ship.getVelocity().y = 0; 
          break; 
        case Keys.S: 
          if(ship.getVelocity().y == -1) 
            ship.getVelocity().y = 0; 
          break; 
        case Keys.A: 
          if(ship.getVelocity().x == -1.5f) 
            ship.getVelocity().x = 0; 
          break; 
        case Keys.D: 
          if(ship.getVelocity().x == 1) 
            ship.getVelocity().x = 0; 
          break; 

        default: 
          break; 
      } 
      return true; 
    } 

Что я должен сделать, чтобы сохранить свой корабль на экране, если ключ держит толкнул?

+0

Пожалуйста, используйте форматирование кода для кода, ввода/вывода и структурированных документов, таких как HTML или XML. Для этого выберите образец и нажмите кнопку '{}' над формой отправки сообщений/редактирования. –

ответ

1

Что мне делать, чтобы мой корабль находился на экране, если ключ держится?

Начать использовать текущие API. keyUp() и keyDown() были устаревшими с тех пор, как JDK1.1

Начните с чтения Motion Using the Keyboard для более современных идей о том, как обращаться с чем-то подобным. В примерах кода выполняется проверка основных границ, чтобы убедиться, что вы не можете перемещать компонент с экрана.

Смежные вопросы