Guru
Date of registration: Dec 11th 2001
Location: Hämelerwald
Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)
This post has been edited 4 times, last edit by "Joachim" (Jun 10th 2006, 2:48pm)
Quoted
Implementieren Sie folgende Methoden:
ausgeben Gibt das aktuelle Spielfeld auf die Konsole aus.
...Schreiben Sie eine Applikation, die ein 20x20 Spielfeld mit Zufallswerten instanziiert und 10 Iterationen vergehenj läßt (und auf der Konsole ausgibt).
This post has been edited 2 times, last edit by "sos1981" (Jun 11th 2006, 11:39pm)
Guru
Date of registration: Dec 11th 2001
Location: Hämelerwald
Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)
Einfach implementieren.Quoted
Original von Nadja
kann mir jemand sagen ,wie ich das miz dem
Interface kannGrafischAngezeigtWerden machen muß?
Nö, das ist doch schon vorgegeben: http://www.sim.uni-hannover.de/~xmb/SS06/uebungen/applet/.Quoted
zuerst muß man doch folgendes machen:
kannGrafischAngezeigtWerden.class erzeugen!
Genau.Quoted
dann muß ich doch das Interface auch in der Klasse Spielfeld implementieren ,oder????
Ganz einfach das Interface implementieren gemäß der zugehörigen Dokumentation. Dazu mußt Du natürlich nur die Methoden vollständig neu schreiben, deren Funktion Du noch nicht bereits durch andere Methoden abgedeckt hast. Diese kannst Du nämlich implementieren, indem Du die entsprechenden Methoden aufrufst, die Du bereits hast.Quoted
Wie sollte es jetzt gehen?????
Muß ich jetzt jede Methode des Interfaces ausführlich definieren?
This post has been edited 2 times, last edit by "Joachim" (Jun 12th 2006, 9:31am)
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class Spielfeld { private boolean[][] spielfeld; public void Spielfeld(int sizeX, int sizeY) { spielfeld = new boolean[sizeX][sizeY]; } public void Spielfeld() { this(20, 20, -1); } public void Spielfeld(int sizeX, int sizeY, int startWert) { this(sizeX, sizeY); for(int i=0;i<sizeX;i++) { // ... } } |
Source code |
|
1 2 3 4 5 6 |
Spielfeld.java:25: call to this must be first statement in constructor this(20, 20, -1); ^ Spielfeld.java:29: call to this must be first statement in constructor this(sizeX, sizeY); ^ |
Turner, Serveradmin & Workaholic
Date of registration: Apr 25th 2006
Location: Südstadt
Occupation: (iter (B.Sc. Inf, 8)) \n (be-a-slave ("SRA", "Bachelor Thesis")) \n (be-a-programmer-slave ("Freelancer", "Programming"))
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class Spielfeld { private boolean[][] spielfeld; public void Spielfeld() { this(sizeX, sizeY); } public void Spielfeld(int sizeX, int sizeY) { this(sizeX, sizeY, -1); } public void Spielfeld(int sizeX, int sizeY, int startWert) { spielfeld = new boolean[sizeX][sizeY]; for(int i=0;i<sizeX;i++) { // ... } } |
Guru
Date of registration: Dec 11th 2001
Location: Hämelerwald
Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)
Diese Interface dient ja nur dazu, daß die vorgefertigte GUI Deine Spielfeld-Implementierung verwenden kann. Also muß auch nur die Klasse Spielfeld dieses Interface implementieren.Quoted
Original von Nadja
muß man dann die Methoden vom Interface in meiner Applikation aufrufen können? oder nur in der Klasse Spielfeld implementieren ?
Quoted
Original von Warui
.oO(Oder liegts an dem Rückgabewert des Konstruktors?)
This post has been edited 1 times, last edit by "Informatik Minister" (Jun 12th 2006, 12:58pm)
Quoted
Original von maffe
Aber da wird doch gar nichts zurückgegeben
Source code |
|
1 |
public Spielfeld() {..} |
This post has been edited 2 times, last edit by "Informatik Minister" (Jun 12th 2006, 1:18pm)
Trainee
Date of registration: Oct 12th 2005
Location: Hildesheim
Occupation: B.Sc. Informatik / 1. Semester
Source code |
|
1 2 3 4 |
final int nachbarn[][] = { {-1,-1}, { 0,-1}, { 1,-1}, {-1, 0}, { 1, 0}, {-1, 1}, { 0, 1}, { 1, 1}}; |
Source code |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
protected int gibAnzahlNachbarn(int zeile, int spalte){ int zaehler = 0; for (int k = 0; k < 8; ++k) { int nbzeile = zeile + nachbarn[k][0]; int nbspalte = spalte + nachbarn[k][1]; if (nbzeile >= 0 && nbzeile < this.yAusdehnung() && nbspalte >= 0 && nbspalte < this.xAusdehnung()) { if (SSpielfeld[nbzeile][nbspalte]) { ++zaehler; } } } return zaehler; } |
Source code |
|
1 2 3 4 5 6 7 8 |
if (nbzeile >= 0 && nbzeile < this.yAusdehnung() && nbspalte >= 0 && nbspalte < this.xAusdehnung()) { if (SSpielfeld[nbzeile][nbspalte]) { ++zaehler; } } } return zaehler; } |
Guru
Date of registration: Dec 11th 2001
Location: Hämelerwald
Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)
Kein Wunder, die Betrachtung solcher Nachbarn schließt Du mit der Bedingung "nbzeile >= 0 && nbzeile < this.yAusdehnung() && nbspalte >= 0 && nbspalte < this.xAusdehnung()" ja auch aus. Der Ansatz mit Modulo, der in diesem Thread schon mehrfach erwähnt wurde, ist schon der richtige. Das Problem an der Sache ist nur leider, daß Java anders verhält, als man es als Rechnen in der Restklasse Z_... erwarten würde.Quoted
Original von ruffy85
Nun drängt die Zeit und ich komme einfach nicht weiter mit der Randüberschreitung, alles Andere arbeitet fehlerfrei. Hier mal die Ausschnitte aus meinem Code, die sich auf die Bestimmung der Anzahl der Nachbarn beziehen, vielleicht sieht ja einer etwas, was ich übersehe Solange man nicht an einen der Ränder kommt, werden alle Nachbarn korrekt berechnet. Sobald man am Rand ist, fehlen die Nachbarn, die den Rand überschreiten würden...
Die würde ich als "static" deklarieren, weil sie nicht von der jeweiligen Instanz abhängen; zudem als "private".Quoted
Definition von Nachbarn...
Source code
1 2 3 4 final int nachbarn[][] = { {-1,-1}, { 0,-1}, { 1,-1}, {-1, 0}, { 1, 0}, {-1, 1}, { 0, 1}, { 1, 1}};
This post has been edited 1 times, last edit by "Joachim" (Jun 12th 2006, 3:12pm)
Trainee
Date of registration: Oct 12th 2005
Location: Hildesheim
Occupation: B.Sc. Informatik / 1. Semester
This post has been edited 1 times, last edit by "ruffy85" (Jun 12th 2006, 3:43pm)
Quoted
Original von sos1981
PS: wenn du Probleme mit der Methoden ausgeben haben solltest, dass denk doch mal darüber nach, evtl. eine Art graphische Ausgabe auf der Konsole zu versuchen, indem du viell. für jedes lebendige Feld ein + und für ein totes Feld ein leerzeichen printest.
Damit müsste dann auch die Applikation kein Problem mehr darstellen.
Gruss
Florian
This post has been edited 1 times, last edit by "Horseboy" (Jun 12th 2006, 4:07pm)