Objektorientierung, hilfe

Knuspakeks

Mitglied
Bisher bin ich soweit gekommen den Konstruktor zu erstellen der einen String entgegennimmt und daraus ein zweidimensionales Array macht
Die getCell Methode überprüft ob das Koordinatenpaar innerhalb des feldes liegt oder eben nicht
getNeighborhood gibt die Sigantur zurück die oben im Quelltext erwähnt wird

Allerdings soll ich den Konstruktor jetzt erweitern, er soll in zweierschritten durch die Spielfeldbeschreibung laufen und jeweils die nachbarschaftssignatur ausrechnet und diese als index in das array NEIGHBORHOOD_TO_FILENAME verwendet um damit GameObject-Objekte konstruiert. Die Koordinaten müssen dabei halbiert werden.

Kann mir jemand helfen einen Ansatz zu finden oder das mit mir zsm durchrechnet, meinetwegen auch mit anderen Daten?

Quelltext:
/**
* Diese Klasse repräsentiert ein Spielfeld. Ihr Konstruktur bekommt dieses als
* String-Array übergeben.
*/
class Field
{
/**
* Die Dateinamen der Bodengitterelemente, die direkt mit einer
* Rotation 0 verwendet werden können. Der Index ergibt sich
* aus der Summe der folgenden Zahlen:
* 1: In Richtung 0 (+1, 0) gibt es eine Verbindung.
* 2: In Richtung 1 (0, +1) gibt es eine Verbindung.
* 4: In Richtung 2 (-1, 0) gibt es eine Verbindung.
* 8: In Richtung 3 (0, -1) gibt es eine Verbindung.
*/
private static final String[] NEIGHBORHOOD_TO_FILENAME = {
"floor",
"floor-e-0",
"floor-e-1",
"floor-l-0",
"floor-e-2",
"floor-i-0",
"floor-l-1",
"floor-t-1",
"floor-e-3",
"floor-l-3",
"floor-i-1",
"floor-t-0",
"floor-l-2",
"floor-t-3",
"floor-t-2",
"floor-x"
};
char dieter[][];
/** Ein Testfall, der alle Nachbarschaften enthält. */
static void test()
{
// Auskommentieren, sobald Konstruktor vorhanden
new Field(new String[] {
"O-O-O-O ",
"| | ",
"O O-O-O O",
"| | | | |",
"O-O-O-O-O",
"| | | | |",
"O O-O-O O",
" | |",
" O-O-O-O"
});
}
public Field(String[]field){
dieter=new char[field.length][];
for(int x=0;x<field.length;x++){
dieter[x]=new char[field[x].length()];
for(int y=0; y<field[x].length();y++){
dieter[x][y]=field[x].charAt(y);
}
}
}
private int getNeighborhood(int x, int y){
int counter=0;
if(getCell(x+1,y)!= ' '){
return counter=1;
}
else if(getCell(x,y+1)!= ' '){
return counter=2;
}
else if(getCell(x-1,y)!= ' '){
return counter=4;
}
else if(getCell(x,y-1)!= ' '){
return counter=8;
}
else{
return counter=0;
}

}
private char getCell(int x, int y){
if(x>=0 && y>=0 && dieter[y].length-1>x && dieter.length-1>y){
return dieter[x][y];
}
else{
return ' ';
}
}
}
 

Senftube

Aktives Mitglied
Hallo Scherzkeks .-),
Ob dir da jemand helfen kann ?. Du entwickelst ein Spiel das keiner kennt und willst dann, an der Strategie was ändern. Vermutlich hast du kein konkretes Java-Probelrm sondern weisst nur nicht wie du die neue Anforderung implementieren sollst.
Wenn es jetzt Monoploy wäere und du sollest einen fünften Bahnhof vor der Schlossalee einbauen, dann ja.
Erkläre erstmal die Spielidee.
 

MoxxiManagarm

Top Contributor
Dein Problem ist sehr schwer aufzufassen. Wenn ich dein Problem richtig verstanden habe:
Du weißt nicht wie du sinnvoll zum richtigen Imagenamen (Index) kommst. Denn...

Code:
Der Index ergibt sich aus der Summe der
folgenden Zahlen: 1: In Richtung 0 (+1, 0) gibt es eine Verbindung. 2: In
Richtung 1 (0, +1) gibt es eine Verbindung. 4: In Richtung 2 (-1, 0) gibt
es eine Verbindung. 8: In Richtung 3 (0, -1) gibt es eine Verbindung

und das ist hier ja kaum eine sinnvolle Summenbildung:
Java:
private int getNeighborhood(int x, int y) {
        int counter = 0;
        if (getCell(x + 1, y) != ' ') {
            return counter = 1;
        } else if (getCell(x, y + 1) != ' ') {
            return counter = 2;
        } else if (getCell(x - 1, y) != ' ') {
            return counter = 4;
        } else if (getCell(x, y - 1) != ' ') {
            return counter = 8;
        } else {
            return counter = 0;
        }
    }

Letztlich ist es am Besten dir die 4 Richtungen als wahr und falsch zu speichern. Oder in anderen Worten 1 und 0. Die 4 einsen und nullen kannst du als Binärzahl interpretieren. Wenn alle 4 Richtungen gegeben sind, dann hast du die Binärzahl 1111 = 15, also den Index 15, was in deinem Array dann "floor-x" entspricht. Hast du aber nur die Richtung (0, +1), dann ist deine Binärzahl 0001, was auch der Zahl 1 entspricht und daher dann zu "floor-e-0" gemappt wird.
 

Knuspakeks

Mitglied
Es gibt dazu keine Spielidee, aber ja ich weiß nicht wie ich das implementieren soll, die Aufgabe war nur das der Konstruktor den String übergeben bekommt und aus diesem String ein Spielfeld erzeugt:
Die Liste mit den Floors ist halt l für eine Abzweigung, eine kurve, i für eine gerade strecke, t für eine Kreuzung t Kreuzung, und x für eine normale Kreuzung und e für eine halbe strecke. Die zahlen dahinter stecken für die rotation.
Die Testmethode beinhaltet ja schon einen String un der Konstruktor soll daraus am ende ein Spielfeld erzeugen allerdings beinhaltet der String ja auch "-" zwischen den Kreisen und den langen strichen, deswegen in zweierschritten da das "-" kein Spielelement darstellt sondern die rotation.
 

Knuspakeks

Mitglied
@MoxxiManagarm ne die implementierung ist schon richtig so, allerdings muss der counter zurückgegeben werden und nur der counter ohne ihn auf null zu setzen
Die Nachbarschaftssignatur ist dazu da das man im Spielfeld auch weiß wo man sich befindet und damit der Konstruktor dann weiß was er erzeugen soll
 

VfL_Freak

Top Contributor
desweiteren: nutze die Code-Tags, so bekommt man ja Augenkrebs :confused:
Und schreib' bitte den einleitenden Text so, dass ihn auch ein Aussenstehender verstehen kann ..... :rolleyes:
VG Klaus
 

MoxxiManagarm

Top Contributor
Dann addiere halt auch.

Java:
private int getNeighborhood(int x, int y) {
        int counter = 0;

        if (getCell(x + 1, y) != ' ') counter += 1;
        if (getCell(x, y + 1) != ' ') counter += 2;
        if (getCell(x - 1, y) != ' ') counter += 4;
        if (getCell(x, y - 1) != ' ') counter += 8;
      
        return counter;
}

Aber die Binärvariante solltest du trotzdem kennen.

Java:
public class IndexerDemo {
    public static int toIndex(boolean b1, boolean b2, boolean b3, boolean b4) {
        int index = (b1 ? 1 : 0);
        index = (index << 1) + (b2 ? 1 : 0);
        index = (index << 1) + (b3 ? 1 : 0);
        index = (index << 1) + (b4 ? 1 : 0);
      
        return index;
    }
  
    public static void main(String... args) {
        // die boleans entsprechen bei dir:
        // [hat(0, -1), hat(-1, 0), hat(0, +1), hat(+1, 0)]
        System.out.println(toIndex(false, true, false, true)); // prints: 5
        System.out.println(toIndex(true, true, true, true)); // prints: 15
    }
}
 

MoxxiManagarm

Top Contributor
Also ist dein Problem die Aufgabe 3 gesamt. Aber du sollst doch keinen neuen Konstruktor erstellen, sondern deinen bestehenden erweitern. Was du nun brauchst ist statt (oder zusätzlich zu) char[][] dieter nun ein int[][] signature mit
Java:
int[][] signature = new int[dieter.length / 2 + 1][maxSubLength(dieter) / 2 + 1];

Das befüllst du dann mithilfe von deinen vorhergehenden Methoden. Wo genau liegt hier dein Problem?
Das Array kannst du dann verwenden um deine GameObjects anhand des "gemappten" Strings zu laden.

Deine getNeighbourhood Methode war dennoch vorher falsch, sie hatte nicht addiert.

Zur Erläuterung was die toIndex Methode macht bei false true false true:
Code:
0       int index = (b1 ? 1 : 0);
00      index = (index << 1)
01       + (b2 ? 1 : 0);
010     index = (index << 1)
010      + (b3 ? 1 : 0);
0100    index = (index << 1)
0101     + (b4 ? 1 : 0);

5         return index;
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Objektorientierung Allgemeine Java-Themen 28
J "Problem Objektorientierung" Allgemeine Java-Themen 20
4 Objektorientierung Allgemeine Java-Themen 2
M Objektorientierung Allgemeine Java-Themen 2
D Objektorientierung erlernen Allgemeine Java-Themen 15
A Ansatz Objektorientierung, Methoden Vererbung Allgemeine Java-Themen 2
W Hilfe bei Methode Allgemeine Java-Themen 14
M Javascript Hilfe bei ToDoList? Allgemeine Java-Themen 1
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
T Hilfe bei negation von suchabfrage Allgemeine Java-Themen 2
Peterw73 Hilfe bei Java gesucht Allgemeine Java-Themen 3
N Hilfe bei RegEx benötigt Allgemeine Java-Themen 3
A Hilfe beim Verständnis Allgemeine Java-Themen 16
V Hilfe mit Java Code Allgemeine Java-Themen 4
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
alinakeineAhnungv Hilfe bei einem Straßenbahn-Projekt von mir Allgemeine Java-Themen 18
Aboya Kugel mit Hilfe von Dreiecken rekursiv zeichnen Allgemeine Java-Themen 2
K Anzeigemöglichkeit von Bildern in JavaFX mit Hilfe von MongoDB GridFS Allgemeine Java-Themen 0
A Preisberechnung, Hilfe Allgemeine Java-Themen 4
M Bräuchte Hilfe bei der Aufgabe Allgemeine Java-Themen 1
s_1895 Hilfe bei Java Tic Tac Toe Allgemeine Java-Themen 8
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
B Bei Email: FW / AW... - Hilfe bei String suche Allgemeine Java-Themen 21
U Erste Schritte Hilfe bei simplem Glücsspiel in Java Allgemeine Java-Themen 4
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
D Hilfe bei Informatik Hausaufgaben Allgemeine Java-Themen 30
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
F NetBeans Hilfe!!! Allgemeine Java-Themen 23
H Schiffe versenken JButton Schiffe mit GUI verbinden Hilfe! Allgemeine Java-Themen 2
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
S GetMethode erstellen mit Hilfe von Parametern Allgemeine Java-Themen 9
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
B Hilfe bei Übungsblätter Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
C Hilfe Bei Vegas Slide Allgemeine Java-Themen 0
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
Ice4P4rty Hilfe Bei Promillerechner Allgemeine Java-Themen 9
C Atfx mit Hilfe von OpenAtfx auslesen Allgemeine Java-Themen 1
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
G Hilfe bei Projektarbeit Allgemeine Java-Themen 5
GenerationLost Input/Output Custom Serialization - hilfe bei Realisierung Allgemeine Java-Themen 8
J Hilfe!!! Ausbildung Allgemeine Java-Themen 14
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
B Swing Hilfe bei Abfrage von Benutzernamen und Passwort Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
S Hilfe bei Gui Allgemeine Java-Themen 3
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
GRAZZ0R Hilfe zum Spiel Mensch ärger dich nicht Allgemeine Java-Themen 1
C Hilfe bei den Ausgaben Allgemeine Java-Themen 4
K Hilfe bei GUI für Pizza-Service Allgemeine Java-Themen 11
J Hilfe bei Datumsberechnung aus Textfeld Allgemeine Java-Themen 10
I Bitte Drngend hilfe Allgemeine Java-Themen 2
C Hilfe bei NoClassDefFoundError Allgemeine Java-Themen 14
C Hilfe bei einer Fehler meldung Allgemeine Java-Themen 3
I Methoden Schnelle Hilfe benötigt - Kleines Video/Slideshow aus mehreren Bildern erstellen Allgemeine Java-Themen 3
C Hilfe bei einer Point Ausgabe Allgemeine Java-Themen 7
S Probleme mit meinem MacBook Pro DRINGEND HILFE erbeten! Allgemeine Java-Themen 17
N Erste Schritte [HILFE] effizienter,leistungsfähigermbackground Pixelbot Allgemeine Java-Themen 5
A Hilfe gesucht Allgemeine Java-Themen 44
X ArrayList will nicht so wie ich will. Hilfe Allgemeine Java-Themen 8
C Hilfe bei einer Fehlermeldung Allgemeine Java-Themen 5
C Hilfe bei MalformedURLException Allgemeine Java-Themen 7
D Baum zeichnen hilfe Allgemeine Java-Themen 4
M Hilfe bei parseInt Allgemeine Java-Themen 4
F Compiler-Fehler Hilfe bei Startup error Allgemeine Java-Themen 3
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
M Input/Output Java + OCR ? Erfahrungen und bitte um Hilfe Allgemeine Java-Themen 12
M Brauche Hilfe bei Quellcodeverständnis Allgemeine Java-Themen 4
B Zahlen ausgeben hilfe! Allgemeine Java-Themen 8
S Java USB dringend Hilfe! Allgemeine Java-Themen 6
X Hilfe bei Programm Allgemeine Java-Themen 5
zer0zer0 Best Practice apache common cli - optionen für hilfe ausblenden Allgemeine Java-Themen 5
F Bitte um Hilfe! Allgemeine Java-Themen 5
S Hilfe bei geeignetem Pattern (Decorierer) Allgemeine Java-Themen 2
D Brauche Hilfe bei Rechnung (Exponentiation) Allgemeine Java-Themen 12
F Brauche Hilfe bei Java Allgemeine Java-Themen 6
S Hilfe bei simplem Programm Allgemeine Java-Themen 3
J Ein blutiger Anfänger braucht Hilfe Allgemeine Java-Themen 7
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
A ALTER TABLE mit Hilfe von RegEx zerlegen, splitten Allgemeine Java-Themen 5
B Dringend Hilfe gesucht für Struktogramm Allgemeine Java-Themen 11
C Brauche Hilfe mit Modulo Strategie Allgemeine Java-Themen 2
S Brauche Hilfe: Prüfungsaufgabe Java Allgemeine Java-Themen 8
J Probleme bei kompilieren ... Bitte um Hilfe Allgemeine Java-Themen 2
G java.exe in System 32. Hilfe!!! Allgemeine Java-Themen 8
M google plus java api - Anfänger sucht Hilfe Allgemeine Java-Themen 7
M Hilfe mit JOptionPane Allgemeine Java-Themen 2
I Hilfe: Klasse Vieleck Allgemeine Java-Themen 5
I javax.sound.sampled.* - Hilfe zu den Controls Allgemeine Java-Themen 8
C Hilfe bei Adressbuch-Programmierung, wie am Besten mit JList implementieren Allgemeine Java-Themen 2
S Hilfe bei der Cosinusapproximation Allgemeine Java-Themen 10
K Arraylist Hilfe Allgemeine Java-Themen 13

Ähnliche Java Themen

Neue Themen


Oben