Guten Abend,
ich studiere z.Z. Wirtschaftsinformatik (1.Semester) und habe mir für die Semesterferien einige Projekte zum Üben vorgenommen. Ich wollte nun das Spiel Wortjagd (App Store ? ?Wortjagd?) als Konsolenanwendung nachprogrammieren. Dabei gibt es ein 4x4 Spielfeld mit Buchstaben welche zu sinnvollen Wörtern kombiniert werden müssen. Ein Buchstabe darf nur einmal verwendet und nur mit seinen Nachbarn (links, rechts, oben, unten, diagonal) kombiniert werden. Ich habe nun Probleme aus dem Spielfeld die richtigen Wörter herrauszufinden. Programmiert habe ich erstmal die Klasse für das Feld:
Hier ist mein Versuch des Hauptprogramms:
Wie ihr seht komm ich bei der Funktion vergl welche die Prüfung durchführen soll nicht weiter. Ich weiß es muss rekursiv sein. Habe es auch schon versucht mit dem 8-Damen-Problem zu vergleichen da wir dieses schon in der Uni hatten aber ich komm einfach nicht auf die Lösung.
Wäre um ein paar Tipps sehr dankbar!
ich studiere z.Z. Wirtschaftsinformatik (1.Semester) und habe mir für die Semesterferien einige Projekte zum Üben vorgenommen. Ich wollte nun das Spiel Wortjagd (App Store ? ?Wortjagd?) als Konsolenanwendung nachprogrammieren. Dabei gibt es ein 4x4 Spielfeld mit Buchstaben welche zu sinnvollen Wörtern kombiniert werden müssen. Ein Buchstabe darf nur einmal verwendet und nur mit seinen Nachbarn (links, rechts, oben, unten, diagonal) kombiniert werden. Ich habe nun Probleme aus dem Spielfeld die richtigen Wörter herrauszufinden. Programmiert habe ich erstmal die Klasse für das Feld:
Java:
public class Wortfeld {
private char [] feld; //das Spielfeld
private int pointer; //aktuelle Position auf dem Spielfeld
public int [] pointer_temp;
public Wortfeld () {
}
public Wortfeld (char [] feld) {
setFeld (feld);
setPointer (0);
pointer_temp = new int [10];
}
public int [] Nachbar () { //Gibt die Nachbarn der Aktuellen Position zurück
@SuppressWarnings("unused")
int temp [];
switch (pointer) {
case 0: return (temp = new int [] {1,5,4});
case 1: return (temp = new int [] {0,4,5,6,2});
case 2: return (temp = new int [] {1,5,6,7,3});
case 3: return (temp = new int [] {2,6,7});
case 4: return (temp = new int [] {0,1,5,9,8});
case 5: return (temp = new int [] {0,1,2,6,10,9,8,4});
case 6: return (temp = new int [] {1,2,3,7,11,10,9,5});
case 7: return (temp = new int [] {3,2,6,10,11});
case 8: return (temp = new int [] {4,5,9,12,13});
case 9: return (temp = new int [] {4,5,6,10,14,13,12,8});
case 10: return (temp = new int [] {5,6,7,11,15,14,13,9});
case 11: return (temp = new int [] {7,6,10,14,15});
case 12: return (temp = new int [] {8,9,13});
case 13: return (temp = new int [] {12,8,9,10,14});
case 14: return (temp = new int [] {13,9,10,11,15});
case 15: return (temp = new int [] {14,10,11});
default: return (temp = new int [0]);
}
}
public char[] getFeld() {
return feld;
}
public void setFeld(char[] feld) {
this.feld = feld;
}
public int getPointer() {
return pointer;
}
public void setPointer(int pointer) {
this.pointer = pointer;
}
}
Hier ist mein Versuch des Hauptprogramms:
Java:
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String [] loesung = new String [] {"rad"}; //Wird Später von einer Textdatei eingelesen
char [] matrix = new char [] {'r','a','d','h','k','t','h','u','z','p','g','t','h','u','m'}; // Wird später //zufällig generiert
Wortfeld w = new Wortfeld (matrix);
for (String x : loesung) {
if (vergl (w,x,0)) System.out.println (x); //Soll erstmal alle Lösungen ausgeben
}
}
public boolean vergl (Wortfeld w, String s, int i) {
char [] temp = s.toCharArray();
int [] x = w.Nachbar();
if (i == s.length()) {
return true;
}
else {
if (temp [i] == w.getFeld()[w.getPointer()]) {
for (int a = 0; a < x.length;a++) {
if (temp [i+1] == w.getFeld()[x[a]]){
w.pointer_temp[i] = w.getPointer();
w.setPointer(x[a]);
vergl (w,s,i+1);
}
}
w.setPointer(w.pointer_temp[i-1]);
}
}
}
}
Wie ihr seht komm ich bei der Funktion vergl welche die Prüfung durchführen soll nicht weiter. Ich weiß es muss rekursiv sein. Habe es auch schon versucht mit dem 8-Damen-Problem zu vergleichen da wir dieses schon in der Uni hatten aber ich komm einfach nicht auf die Lösung.
Wäre um ein paar Tipps sehr dankbar!