Мой вопрос в том, как я могу заставить мои методы move()
работать с использованием KeyEvents
, т.е. KeyEvent.VK_DOWN
? В настоящее время я пытаюсь использовать import java.awt.event.KeyEvent;
, в котором я буду использовать клавиши со стрелками, а НЕ клавиши цифровой клавиатуры для перемещения игрока в двухмерной сетке. У меня есть действия moveUp();
moveRight();
moveDown();
и moveLeft();
в моем суперклассе User
и классе Player extends User
и содержит метод ключевого события. Когда я использую клавиши со стрелками, актер просто не двигается, однако, когда я вручную нажимаю на актера в сетке и выбираю метод, он будет двигаться. Поэтому мои методы перемещения работают, поэтому я предполагаю, что моя установка KeyEvent не работает. Фотографии, показывающие, как я вручную управляю методами, прилагаются.
Пользователь, содержащий методы перемещения
package info.gridworld.actor;
import info.gridworld.grid.Grid;
import info.gridworld.grid.Location;
public class User extends Actor {
private boolean isStopped = false;
public User()
{
setColor(null);
}
public void moveUp(){
moveTo(getLocation().getAdjacentLocation(Location.NORTH));
}
public void moveDown(){
moveTo(getLocation().getAdjacentLocation(Location.SOUTH));
}
public void moveLeft(){
moveTo(getLocation().getAdjacentLocation(Location.WEST));
}
public void moveRight(){
moveTo(getLocation().getAdjacentLocation(Location.EAST));
}
}
Класс игрока содержит KeyEvents
package game.classes;
import info.gridworld.actor.User;
import java.awt.event.KeyEvent;
public class Player extends User{
public Player(){
}
public void keyPressed(KeyEvent e){
int keys = e.getKeyCode();
if((keys == KeyEvent.VK_UP)){
moveUp();
}
else if((keys == KeyEvent.VK_DOWN)){
moveDown();
}
else if((keys == KeyEvent.VK_LEFT)){
moveLeft();
}
else if((keys == KeyEvent.VK_RIGHT)){
moveRight();
}
}
}
Основной класс
package game.classes;
import info.gridworld.grid.*;
public class PlayerRunner{
private static GameGrid world = new GameGrid();
public static void main(String[] args)
{
Player player = new Player();
world.add(new Location(0, 0), player);
world.show();
}
}
World
не получает ключевую информацию? - person MadProgrammer   schedule 10.06.2014gridworld
API, который работает немного по-другому ... не говоря о том, что это невозможно, но если мы сможем найти что-то, что работает с API, это даст лучшие результаты, если это не удастся. ..взломать, взломать, взломать ;) - person MadProgrammer   schedule 10.06.2014Actor
черезWorld#getGrid#get
... я думаю... раньше не использовали API;) - person MadProgrammer   schedule 10.06.2014