Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe hier eine Zellmatrix mit je 4 Zeilen und Spalten. Jede Zelle ist mit einem boolean belegt.
Die Matrix habe ich in einem zweidimensionalen boolean-Array vorliegen.
Nun hat ja jede Zelle 8 Nachbarzellen. Der Linke Rand schließt quasi an den rechten an und der obere an den unteren. Jetzt möchte ich, dass jede Zelle mit ihren 8 Nachbarzellen verglichen wird und je nach dem welche Werte die haben ihren Wert wechselt oder nicht.
Mein Problem ist jetzt nur der Vergleich der Zellen. Wie kann ich für alle Zellen einen eine Allgemeine Vergleichsformel finden?
Für z.B. zelle[1][1] werden:
Versuchs mal mit diesem Ansatz: Für Zelle[j]:
z[(i-1+4)%4][(j-1+4)%4], z[(i-1+4)%4][j], z[(i-1+4)%4][(j+1)%4], z[(j+1)%4], z[(i+1)%4][(j+1)%4], z[(i+1)%4][j], z[(i+1)%4][(j-1+4)%4], z[(j-1+4)%4]
Jap das funktioniert so. Besten Dank.
Jetz kann ich jede Nachbar-Zelle ansprechen und habe noch folgendes Problem:
In jeder Zelle steht ein boolean. Nun ist z.b. eine Regel:
Wenn die aktuelle Zelle True ist, dann bleibt sie nur dann True, wenn 2 oder 3 der 8 Nachbarzellen True sind. Wenn weniger als 2 oder mehr als 3 True sind, wird sie zu False.
Wie kann ich das nun in eine If-Abfrage packen? ???:L
Das wird wohl eine Version von "Conways Game of Life", das finde ich super.
Du solltest einfach die zellen zählen, die true sind. Etwas eleganter würde es vielleicht gehen, wenn du statt einem boolean Array ein int Array mit 0 für tot und 1 für lebend hättest. Dann könntest du einfach die 8 Felder zusammenzählen und wüsstest dann, ob die Zelle in der Mitte lebt oder stirbt.
Kannst du nicht das boolean Array komplet gegen ein int Array austauschen? Ansonsten zählst du eher die true Werte der Nachbarn, anstatt ein Array zu casten. Das könntest du kaum elegant lösen, sondern müsstest zwei for-Schleifen machen und darin folgendes aufrufen:
intarray[j] = boolarray[j]?1:0;
Das würde ich selber gern machen, aber die Aufgabenstellung lässt das leider nicht zu.
Wie kann man denn die boolean werte zählen lassen?
Doofe frage, aber ich mache java erst seit 2 Wochen