Hallo zusammen,
ich würde gerne mal von Eu ich meinen Code reviewen lassen.
Zum einen möchte ich wissen, ob der Code (der bisher besteht) ordentlich (sprich objektorientiert) gemacht ist.
Ferner habe ich noch ein Problem.
Ich habe eine Klasse KeyListenerHelper gebaut, die die Tastendrücke auswertet. Ich weiß nicht, wie ich das verdrahte, wenn die Taste Space gedrückt wird ein neuer Wurf geworfen wird.
Manchmal fehlt es mir noch an der richrtigen ojektorientierten Denke glaube ich.
Anbei mein Code…
Ich habe einfach mal drauf los programmiert, würde aber gern mal ein Klassendiagramm dazu malen habe da aber irgendwie keinen richtigen Ansatz.
Ich glaube auch, daß ich mir dadurch manchmal Steine in den Weg lege, wenn ich das vorher nicht durchstrukturiert habe. Aber irgendwie fehlt mir da der Ansatz…
static Würfel w1 = new Würfel();
static Würfel w2 = new Würfel();
static Würfel w3 = new Würfel();
static Würfel w4 = new Würfel();
static Würfel w5 = new Würfel();
public static void main(String Args[]) {
final int INT_RUNDEN = 0; // Bis zu 13 Runden
final int INT_SPIELZUEGE = 1; // 3 Runden max.
System.out.println("Kniffel
");
Oberfläche oberfläche = new Oberfläche(w1, w2, w3, w4, w5);
Spiel spiel = new Spiel(w1, w2, w3, w4, w5);
for (int i = 0; i <= INT_RUNDEN; i++) {
for (int j = 1; j <= INT_SPIELZUEGE; j++) {
System.out.println("Unsortiert");
spiel.neuerWurf();
oberfläche.aktualisierenOberfläche(w1, w2, w3, w4, w5);
// int[] a = { w1.getErgebnis(), w2.getErgebnis(),
// w3.getErgebnis(), w4.getErgebnis(), w5.getErgebnis() };
// System.out.println(a.length);
// int[] b = Hilfsklasse.bubblesort(a);
// w1.setErgebnis(b[0]);
// w2.setErgebnis(b[1]);
// w3.setErgebnis(b[2]);
// w4.setErgebnis(b[3]);
// // w5.setErgebnis(b[4]);
// System.out.println("
nach Sortieren");
// System.out.println(b[0]);
// System.out.println(b[1]);
// System.out.println(b[2]);
// System.out.println(b[3]);
// System.out.println(b[4]);
}
}
}
}
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class KeyListenerHelper implements KeyListener {
Würfel w1, w2, w3, w4, w5;
Spiel spiel = new Spiel(w1, w2, w3, w4, w5);
public KeyListenerHelper(Würfel w1, Würfel w2, Würfel w3, Würfel w4,
Würfel w5) {
this.w1 = w1;
this.w2 = w2;
this.w3 = w3;
this.w4 = w4;
this.w5 = w5;
}
@Override
public void keyPressed(KeyEvent e) {
System.out.println("
Es wurde eine Taste gedrückt...");
int key = e.getKeyCode();
if (key == e.VK_F1) {
if (w1.blnHaltenWürfel == false) {
w1.blnHaltenWürfel = true;
} else
w1.blnHaltenWürfel = false;
}
System.out.println("w1" + w1.blnHaltenWürfel);
//
//
//
//
//
if (key == e.VK_F2) {
if (w2.blnHaltenWürfel == false) {
w2.blnHaltenWürfel = true;
} else
w2.blnHaltenWürfel = false;
}
System.out.println("w2" + w2.blnHaltenWürfel);
//
//
//
//
//
if (key == e.VK_F3) {
if (w3.blnHaltenWürfel == false) {
w3.blnHaltenWürfel = true;
} else
w3.blnHaltenWürfel = false;
}
System.out.println("w3" + w3.blnHaltenWürfel);
//
//
//
//
//
if (key == e.VK_F4) {
if (w4.blnHaltenWürfel == false) {
w4.blnHaltenWürfel = true;
} else
w4.blnHaltenWürfel = false;
}
System.out.println("w4" + w4.blnHaltenWürfel);
//
//
//
//
//
if (key == e.VK_F5) {
if (w5.blnHaltenWürfel == false) {
w5.blnHaltenWürfel = true;
} else
w5.blnHaltenWürfel = false;
}
System.out.println("w5" + w5.blnHaltenWürfel);
if (key == e.VK_SPACE) {
System.out.println("neuer Wurf");
spiel.neuerWurf();
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.*;
public class Oberfläche {
Würfel w1, w2, w3, w4, w5;
JFrame f;
JTextField tf1 = new JTextField("Würfel 1");
JTextField tf2 = new JTextField("Würfel 2");
JTextField tf3 = new JTextField("Würfel 3");
JTextField tf4 = new JTextField("Würfel 4");
JTextField tf5 = new JTextField("Würfel 5");
JButton b1 = new JButton("1");
JButton b2 = new JButton("2");
JButton b3 = new JButton("3");
JButton b4 = new JButton("4");
JButton b5 = new JButton("5");
JButton b6 = new JButton("neuer Wurf");
Oberfläche(final Würfel w1, final Würfel w2, final Würfel w3,
final Würfel w4, final Würfel w5) {
f = new JFrame();
KeyListenerHelper kl = new KeyListenerHelper(w1, w2, w3, w4, w5);
f.add(tf1);
f.add(tf2);
f.add(tf3);
f.add(tf4);
f.add(tf5);
f.add(b1);
f.add(b2);
f.add(b3);
f.add(b4);
f.add(b5);
f.add(b6);
f.addKeyListener(kl);
aktualisierenOberfläche(w1, w2, w3, w4, w5);
f.setLayout(new FlowLayout(FlowLayout.LEFT));
f.setSize(300, 400);
f.setVisible(true);
f.setFocusable(true);
f.requestFocusInWindow();
}
void aktualisierenOberfläche(Würfel w1, Würfel w2, Würfel w3, Würfel w4, Würfel w5) {
tf1.setText(String.valueOf(w1.ergebnis));
tf2.setText(String.valueOf(w2.ergebnis));
tf3.setText(String.valueOf(w3.ergebnis));
tf4.setText(String.valueOf(w4.ergebnis));
tf5.setText(String.valueOf(w5.ergebnis));
}
}
public class Würfel {
int intAugenzahl;
int ergebnis;
boolean blnHaltenWürfel=false;
Würfel() {
}
int rollenWürfel() {
ergebnis = (int) ((Math.random()) * 6 + 1);
return ergebnis;
}
int getErgebnis() {
return ergebnis;
}
void setErgebnis(int ergebnis) {
this.ergebnis=ergebnis;
}
}
public class Spiel {
static Würfel w1;
static Würfel w2;
static Würfel w3;
static Würfel w4;
static Würfel w5;
Spiel(Würfel w1, Würfel w2, Würfel w3, Würfel w4, Würfel w5) {
this.w1 = w1;
this.w2 = w2;
this.w3 = w3;
this.w4 = w4;
this.w5 = w5;
}
public void neuerWurf() {
if (w1.blnHaltenWürfel == false)
w1.rollenWürfel();
if (w2.blnHaltenWürfel == false)
w2.rollenWürfel();
if (w3.blnHaltenWürfel == false)
w3.rollenWürfel();
if (w4.blnHaltenWürfel == false)
w4.rollenWürfel();
if (w5.blnHaltenWürfel == false)
w5.rollenWürfel();
}
}
Auch was das Zerlegen gemäß MVC (Model View Controller) angeht bitte ich mal ein paar Sätze zu schreiben…
Danke.
Gruss
Matthias
Manchmal denke ich einen Knoten in den Kopf…