|
You last visited: Today at 15:01
Advertisement
[Java] Grid füllt sich nur zur Hälfte?!
Discussion on [Java] Grid füllt sich nur zur Hälfte?! within the General Coding forum part of the Coders Den category.
02/12/2012, 15:24
|
#1
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
[Java] Grid füllt sich nur zur Hälfte?!
Hey E*pvpers.
Hab im Moment die Aufgabe im Info Lk, das "Game of Life" in Greenfoot zu schreiben. Ist halt ein zellulärer Automat.
Jedenfalls wollte ich das Grid erstmal mit zufälligen Zellen füllen. Also eine Zelle kann entweder den Zustand "Tot" haben(In dem 2d Array also false) oder "Lebendig",(demtentsprechend im Array true).
Dazu hab ich folgenden Programmcode:
PHP Code:
public void zufaelligeFuellung(){
for(int x = 0 ; x< getHeight(); x++){
for(int y = 0; y < getWidth(); y++){
int a = Greenfoot.getRandomNumber(2);
if(a == 1){
cells[x][y] = true;
bg.drawImage(ALIVE, x*10, y*10);
}else{
cells[x][y] = false;
bg.drawImage(DEAD, x*10, y*10);
}
}
}
}
GreenfootImage ALIVE, DEAD und bg wurden schon erstellt. Hab ich jetzt nicht expliziert nochmal aufgeführt.
Das Ergebnis sieht dann folgendermaßen aus:
Das Feld füllt sich also nicht ganz mit den Zellen. Mir ist nicht ganz klar warum, weil ich in den for-Schleifen ja die Feldbegrenzungen als Abbruchwerte angegeben hab.
Vllt kann mir da jmd helfen.
~Greets
Belur
|
|
|
02/12/2012, 15:33
|
#2
|
elite*gold: 50
Join Date: Mar 2010
Posts: 1,373
Received Thanks: 521
|
Bei "bg.drawImage(ALIVE, x*10, y*10);" x und y vielleicht vertauscht, sodass er in den nicht sichtbaren Bereich zeichnet?
Sonst lass dir mal irgendetwas ausgeben, wenn x und y die Koordinate von bisher nicht gezeichneten Kästen sind (bsp: x = 30 und y = 0), um fest zu stellen ob es an der Schleife oder am Zeichnen liegt.
|
|
|
02/12/2012, 15:49
|
#3
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Hmm.
Hab jetzt mal manuell geguckt:
bg.drawImage(ALIVE, 400, 45);
Da macht er eine Zelle wo er vorher nichts gemacht hat bei der Methode.
Leider weiß ich nicht warum. Weil bis zum x-Wert 40 würde ja auch so kommen denn das Spielfeld ist ja so definiert:
public CellWorld() {
super(48, 32, 10);
}
Bis zum x-Wert 40 müsste er theoretisch kommen, da das Feld ja 48 lang ist.
Und die 400 halt, weil eine Zelle 10 Pixel groß ist. In der Schleife gehts nicht und manuell schon -.-"
|
|
|
02/12/2012, 16:06
|
#4
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
du vertauschst x und y.
Code:
for(int x = 0 ; x < getHeight(); x++){
for(int y = 0; y < getWidth(); y++){
x ist die weite -> nach rechts gehend,
y ist die höhe -> nach unten gehend.
richtig wäre also:
Code:
for(int x = 0 ; x < getWidth(); x++)
{
for(int y = 0; y < getHeight(); y++)
{
|
|
|
02/12/2012, 16:19
|
#5
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Danke
Habs grad mal geändert, das Ergebnis bleibt jedoch leider das selbe.
|
|
|
02/12/2012, 16:30
|
#6
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
zeig mal deinen neuen code...
möchte wetten, du hast es jetzt 2x geändert :P
|
|
|
02/12/2012, 16:32
|
#7
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
PHP Code:
public void zufaelligeFuellung(){
for(int x = 0 ; x< getWidth(); x++){
for(int y = 0; y < getHeight(); y++){
int a = Greenfoot.getRandomNumber(2);
if(a == 1){
cells[x][y] = true;
bg.drawImage(ALIVE, x*10, y*10);
}else{
cells[x][y] = false;
bg.drawImage(DEAD, x*10, y*10);
}
}
}
}
|
|
|
02/12/2012, 16:37
|
#8
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
sicher, dass du richtig neu kompiliert und ausgeführt hast?
bei dem alten bild wars nämlich 100% der fehler, wird genau bis zur höhe von links nach rechts befüllt.
EDIT:
überprüf mal ob getWidth und getHeight nicht fehlerhaft copypasted sind und beide die höhe zurückgeben oder ähnliches.
|
|
|
02/12/2012, 16:48
|
#9
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Habs nochmal überprüft.
getWidth und getHeight geben die richtigen größen aus.
Manchmal krieg ich bei dem Methodenaufruf auch den OutOfBounds Fehler, obwohl das eigentlich garnicht sein kann, da das Array ja genauso groß ist wie das Feld, also die Arraygrenzen getWidth und getHeight sind.
Richtig kompiliert ist auch alles.
|
|
|
02/12/2012, 16:55
|
#10
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
cells ist also
Code:
boolean[][] cells = new boolean[getWidth()][getHight()];
(aufpassen mit getwidth und gethight in der richtigen reihenfolge...)
achja noch genereller stilhinweis, du solltest ne extra funktion draw() machen, die den inhalt von cells zeichnet, die zeichenroutinen haben in zufaelligeFuellung() nichts zu suchen.
EDIT:
getwidth liefert 48 zurück, gethight 32?
|
|
|
02/12/2012, 17:32
|
#11
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Wie wärs wenn du erstmal die Java Code Conventions liest?
|
|
|
02/12/2012, 17:32
|
#12
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Ahhh. Danke. Da lag der Fehler. Als ich das Array erstellt hab, hab ich x und y Werte vertauscht.
Ja das mit dem Draw werd ich warscheinlich noch machen. Wollt nur erstmal so ne Idee von dem Programm bekommen wie das läuft mit den Zellen etc.
Vor allem das ändern muss ich mir nochmal angucken und überlegen ob ich dafür nicht ein 2tes Array brauche (nur für den Fall, dass du weißt wie dieses "Game of Life" funktioniert)
Aber danke nochmal. Jetzt klappts einwandfrei.
|
|
|
02/12/2012, 17:38
|
#13
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Zu langsam entfernt, habs trotzdem gesehen :>
Wenn du die Java Code Conventions angeblich gelesen hast, wieso hälst du dich nicht dran? Wäre ich dein Lehrer, hätte ich dir die halbe Methode rot angestrichen.
|
|
|
02/12/2012, 17:45
|
#14
|
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
|
Ich bin Genuss meine Programme noch allein zu schreiben und warscheinlich wird sie auch nie jmd anderes öffnen.
Wenn ich etwas publizieren wollen würde, würd ich mich an die außeren Förmlichkeiten halten ^^
Zudem gibts ja nichtmal eine feste Code-Konvention die für alle gilt. Ist ja oft von Firma zu Firma bzw von Projekt zu Projekt unterschiedlich, wie man das handhaben will. Ob die geschweifte Klammer in die selbe oder in die nächste Zeile kommt etc ^^
Und da dieses kleine Experiment ja eig eh nur für mich ist und das alles für mich logisch ist, hab ichs mir mal rausgenommen nicht alles zu kommentieren.
Aber ist ja auch ziemlich egal ^^
Habs eig wieder entfernt um diese Diskussion zu vermeiden
|
|
|
02/12/2012, 20:35
|
#15
|
elite*gold: 42
Join Date: Jun 2008
Posts: 5,425
Received Thanks: 1,888
|
Wenn nicht anders abgesprochen gelten diese  für java.
|
|
|
 |
|
Similar Threads
|
WarRock füllt Glücksschuss
10/06/2011 - WarRock - 14 Replies
Hallo com wollte euch informieren
das glücksschuss langsam aber sicher wieder gefüllt wird
habe mit einen Freund gesprochen aus dem G1 team
der sagte in einer Doppelupdate funktion
wird er gefüllt erster teil erfüllt alte items entfernt
der zweite teil wird die füllung&vergebung der items sein
das update wird noch diese woche sein in der nacht von
freitag auf samstag
Thanks nicht vergessen (;:awesome:
|
[SUCHE] Jemnd, der sich mit den java docs von Bukkit auskennt
06/11/2011 - Minecraft - 4 Replies
Hallo,
ich suche jmd,
der mir bei ein paar problemem beim erstellen meines eigenen plugisn behilflich sein kann
Und er bekommt auch 20 e*g - 40 e*g
Er sollte sich mit java und Mit den javadocs von Bukkit auskennen und Skype hat.
wer intresse hat bitte in skype melden: metin2.markus
P.s.: Ich ahb es hier, weil ich es ihm als danke gebe.
Mfg
.NoThx
|
Java lässt sich nicht mehr installieren
02/12/2011 - Technical Support - 10 Replies
Hallo,
ich wollte heute mein Java updaten und habe die
+alte Version deinstalliert
-hier kam das erste Problem, denn eine für die deinstallation notwendige dll war nicht verfügbar. Daraufhin habe ich Java über die Systemsteuerung deinstalliert.
+mit JavaRa die Reste entfernt
+Versucht jreu-6u23 zu installieren
-Nun sagt mir der Installer es wäre schon eine Version installiert. Wenn ich aber auf erneut installieren klicke kommt eine Meldung vom Windows Installer "Diese Aktion ist nur...
|
Monster HP füllt sich wieder voll auf Ôô
01/05/2011 - Flyff - 4 Replies
Hi,
Ich habe mir einen V15 Server gemacht...
derzeit geht sogut alles... außer EINER sache!
Ich weis nicht ob das normal ist aber bei meinem Freund ist es auch so,
jedesmal wenn ich ein Monster spawne (Devos, Rangda usw...)
und ich ihn anggreife, geht erst etwas HP weg aber dann ist die wieder voll Ôô
Was ist das Ôô ?
und wie kann ich das beheben?
|
All times are GMT +1. The time now is 15:01.
|
|