내가 지금처럼, 텍스트 파일에서 읽고 있어요 :객체의 toString에 문자열 비교() 메소드를 동적으로
while ((line = br.readLine()) != null) {
String[] a = line.split("\\: ");
key = a[0];
action = a[1];
gameKeys.add(key, action);
}
파일이 뭔가 같은
SPACE: FIRE_ACTION
E: USE_ACTION
이 부분이 작동 될 경우 , key
및 action
모두 내가 원하는 것입니다.
gameKeys
가 Map
좋아해서 선언이다
private static Map<Keyboard.Key, Action> gameKeys = new HashMap<>();
Keyboard.Key
이 필드가 등 SPACE
, A
, RETURN
같은 동작이다 다른 동작을 유지하는 인터페이스; 이러한 작업에는 작업을 반환하는 toString()
메서드가 있습니다. new FireAction.toString()
은 FIRE_ACTION
을 반환합니다. 액션의
예 : key
경우 "SPACE"
및 action
이 "FIRE_ACTION"
이었다처럼 add
방법은, gameKeys
수행 된 후 그래서
public class FireAction implements Action {
@Override
public void execute() {
System.out.println("Fire key pressed!");
}
@Override
public String toString() {
return "FIRE_ACTION";
}
}
, 나는, 다음, 객체로 파일의 구성 요소를 설정하기 위해 노력하고있어 would have <Keyboard.Key.SPACE, new FireAction()>
어쨌든 나는 이것을 할 수 있습니까?
그러나 이것은 훌륭한 것처럼 들리지만 (이것은 일종의 어리석은 질문입니다.)'Action' 인터페이스 내에지도를 선언하고 Action을 구현하는 클래스에서지도의 값을 설정하겠습니까? – Tetramputechture
@Tetramputechture 사용자 입력 (예 : 클래스 'ActionHandler')을 관리하는지도를 만드는 것이 좋습니다. 그런 다음이 클래스는'Action' 객체/Key -> Action 바인딩에 대해 알고 있습니다. – ifloop
@Tetramputechture 나는 나의 대답을 편집했다, 그것을 깨끗하게하는 희망 : – ifloop