Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 15:01

  • Please register to post and access all features, it's quick, easy and FREE!

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.

Reply
 
Old   #1
 
Belur's Avatar
 
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 xgetHeight(); x++){
            for(
int y 0getWidth(); y++){ 

                
int a Greenfoot.getRandomNumber(2);

               if(
== 1){
                    
                 
cells[x][y] = true;
                    
bg.drawImage(ALIVEx*10y*10);
                    
                    
                    
                }else{
                    
                    
cells[x][y] = false;
                    
bg.drawImage(DEADx*10y*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
Belur is offline  
Old 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.
jacky919 is offline  
Thanks
1 User
Old 02/12/2012, 15:49   #3
 
Belur's Avatar
 
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 -.-"
Belur is offline  
Old 02/12/2012, 16:06   #4
 
Dr. Coxxy's Avatar
 
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++)
  {
Dr. Coxxy is offline  
Thanks
1 User
Old 02/12/2012, 16:19   #5
 
Belur's Avatar
 
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.
Belur is offline  
Old 02/12/2012, 16:30   #6
 
Dr. Coxxy's Avatar
 
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
Dr. Coxxy is offline  
Old 02/12/2012, 16:32   #7
 
Belur's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
PHP Code:
public void zufaelligeFuellung(){
        for(
int x xgetWidth(); x++){
            for(
int y 0getHeight(); y++){ 

                
int a Greenfoot.getRandomNumber(2);

                if(
== 1){

                    
cells[x][y] = true;
                    
bg.drawImage(ALIVEx*10y*10);

                }else{
                    
cells[x][y] = false;
                    
bg.drawImage(DEADx*10y*10);
                }

            }
        }
    } 
Belur is offline  
Old 02/12/2012, 16:37   #8
 
Dr. Coxxy's Avatar
 
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.
Dr. Coxxy is offline  
Old 02/12/2012, 16:48   #9
 
Belur's Avatar
 
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.
Belur is offline  
Old 02/12/2012, 16:55   #10
 
Dr. Coxxy's Avatar
 
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?
Dr. Coxxy is offline  
Thanks
1 User
Old 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?
MoepMeep is offline  
Old 02/12/2012, 17:32   #12
 
Belur's Avatar
 
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.
Belur is offline  
Old 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.
MoepMeep is offline  
Old 02/12/2012, 17:45   #14
 
Belur's Avatar
 
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
Belur is offline  
Old 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.
MoepMeep is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.