Hallo,
ich habe mich jetzt für ein Konzept für die Steuerung einer Spielfigur in einem kleinen Spiel entschieden und ich würde gern wissen, was ihr davon haltet.
Es beinhaltet im großen und ganzen ein Interface und zwei Klassen.
PlayerController implementiert das Interface und prägt die Methoden aus und Player hat quasi einen Controller im Bauch und verwendet darüber die Methoden.
Was denkt ihr? Außerdem erbt Player noch von der abstrakten Klasse GameObject, die 3 Methoden hält, die quasi jedes Objekt im Spiel inne haben soll. Hier jetzt nur update() gezeigt.
Danke für etwaige Antworten.
ich habe mich jetzt für ein Konzept für die Steuerung einer Spielfigur in einem kleinen Spiel entschieden und ich würde gern wissen, was ihr davon haltet.
Es beinhaltet im großen und ganzen ein Interface und zwei Klassen.
PlayerController implementiert das Interface und prägt die Methoden aus und Player hat quasi einen Controller im Bauch und verwendet darüber die Methoden.
Was denkt ihr? Außerdem erbt Player noch von der abstrakten Klasse GameObject, die 3 Methoden hält, die quasi jedes Objekt im Spiel inne haben soll. Hier jetzt nur update() gezeigt.
Danke für etwaige Antworten.
Java:
public interface IController {
boolean isRequestingUp();
boolean isRequestingDown();
boolean isRequestingLeft();
boolean isRequestingRight();
Java:
public class PlayerController implements IController{
private Input input;
public PlayerController(Input input) {
this.input = input;
}
@Override
public boolean isRequestingUp() {
return input.isPressed(KeyEvent.VK_UP);
}
@Override
public boolean isRequestingDown() {
return input.isPressed(KeyEvent.VK_DOWN);
}
@Override
public boolean isRequestingLeft() {
return input.isPressed(KeyEvent.VK_LEFT);
}
@Override
public boolean isRequestingRight() {
return input.isPressed(KeyEvent.VK_RIGHT);
}
Java:
public class Player extends GameObject{
private IController controller;
public Player(IController controller) {
super();
this.controller = controller;
}
@Override
public void update() {
int deltaX = 0;
int deltaY = 0;
if(controller.isRequestingUp()){
deltaY--;
}
if(controller.isRequestingDown()){
deltaY++;
}
if(controller.isRequestingLeft()){
deltaX--;
}
if(controller.isRequestingRight()){
deltaX++;
}
position = new Position(position.getX() +deltaX,position.getY() +deltaY );
}