Hallo, ich wollte ein Spiel programmieren, aber ich weiß nicht welches Design besser geeignet ist.
In dem Spiel gibt es Figuren, die von einem Spieler oder vom Computer gesteuert werden können. Und ich habe dafür 2 Varianten:
Ich weiß nicht ob ich innere Klassen für die Mehrfachimplementierung für Methoden verwenden soll, oder Vererbung, damit der Spieler das Verhalten des Bots erweitern und überschreiben kann.
Hoffentlich könnt ihr helfen.
In dem Spiel gibt es Figuren, die von einem Spieler oder vom Computer gesteuert werden können. Und ich habe dafür 2 Varianten:
Java:
public class Figur {
MoveAble moveModul;
AttackAble attackModul;
public Figur(boolean isPlayer) {
if (isPlayer) {
Player player = new Player();
setModule(player, player);
} else {
Bot bot = new Bot();
setModule(bot, bot);
}
}
private void setModule(MoveAble m, AttackAble a) {
moveModul = m;
attackModul = a;
}
public void update() {
moveModul.move();
attackModul.attack();
}
private class Player implements MoveAble, AttackAble, MouseListener, MouseMotionListener, KeyListener {
@Override
public void attack() {
//Player-Verhalten
}
@Override
public void move() {
//Player-Verhalten
}
@Override
public void keyTyped(KeyEvent e) {
//..
}
@Override
public void keyPressed(KeyEvent e) {
//..
}
@Override
public void keyReleased(KeyEvent e) {
//..
}
@Override
public void mouseDragged(MouseEvent e) {
//..
}
@Override
public void mouseMoved(MouseEvent e) {
//..
}
@Override
public void mouseClicked(MouseEvent e) {
//..
}
@Override
public void mousePressed(MouseEvent e) {
//..
}
@Override
public void mouseReleased(MouseEvent e) {
//..
}
@Override
public void mouseEntered(MouseEvent e) {
//..
}
@Override
public void mouseExited(MouseEvent e) {
//..
}
}
private class Bot implements MoveAble, AttackAble {
@Override
public void attack() {
//Bot-Verhalten
}
@Override
public void move() {
//Bot-Verhalten
}
}
}
Java:
public class Figur implements MoveAble, AttackAble {
@Override
public void move() {
//Bot-Verhalten
}
@Override
public void attack() {
//Bot-Verhalten
}
}
public class Player extends Figur implements MouseListener, MouseMotionListener, KeyListener {
@Override
public void move() {
//Player-Verhalten
}
@Override
public void attack() {
//Player-Verhalten
}
//implementierende Methoden...
}
Ich weiß nicht ob ich innere Klassen für die Mehrfachimplementierung für Methoden verwenden soll, oder Vererbung, damit der Spieler das Verhalten des Bots erweitern und überschreiben kann.
Hoffentlich könnt ihr helfen.