1. Dashboard
  2. Artikel
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. HTML - Webmaster Forum
  2. Programmierung - Entwickler Forum
  3. Forum für alle anderen Programmiersprachen

Snake

  • crAzywuLf
  • 25. Oktober 2009 um 09:46
  • crAzywuLf
    König(in)
    Reaktionen
    1
    Beiträge
    1.175
    • 25. Oktober 2009 um 09:46
    • #1

    Hi,
    ich baue gerade Snake in Java und ich verstehe einfach nicht wieso es nicht funktioniert^^ Hab nur wenig Ahnung von Java und hab mich über die Nacht ein wenig eingelesen und angefangen.
    Das Problem scheint irgendwie das Erweitern des Vektors zu sein...

    Die Snake erstelle ich zu beginn mit:

    Code
    public void createSnake(Integer length, Integer x, Integer y)
        {
            for (int i = 0; i <= length; i++) 
            {
                if (i == 0)
                {
                    this.snake.addElement(new SnakeObj(x, y, 1));
                }
                else
                {
                    this.snake.addElement(new SnakeObj(x, y, 0));
                }
                SnakeObj lastObj = (SnakeObj) snake.lastElement();
    
                lastObj.setVisible(true);
            }
        }
    Alles anzeigen

    Das funktioniert auch wunderbar.

    und wenn Sie was aufnimmt dann erweitere Ich Sie mit:

    Code
    private void grow()
        {
            SnakeObj snakeLast = (SnakeObj) this.snake.lastElement();
            System.out.println("[snake_grow] " + snakeLast.posX + " : " + snakeLast.posY);
            this.snake.addElement(new SnakeObj(snakeLast.posX, snakeLast.posY, 0));
            SnakeObj snakeNew = (SnakeObj) this.snake.lastElement();
            snakeNew.setVisible(true);
        }

    das macht er auch noch, aber wenn es dann in die Funktion zur Bewegung geht:

    Code
    public void run()
        {
            System.out.println("[snake_run()] d:" + this.runDirection);
            int oldPosX = -1;
            int oldPosY = -1;
            int newPosX = -1;
            int newPosY = -1;
    
            Iterator it = this.snake.iterator();
            while (it.hasNext())
            {
                System.out.println("1");
                SnakeObj loopObj = (SnakeObj) it.next();
                System.out.println("2");
                if (oldPosX == -1)
                {        
                    if (runDirection == "north")
                    {
                        loopObj.setLocation(loopObj.posX, loopObj.posY - Game.snakeSize);
                    }
                    else if (runDirection == "east")
                    {
                        loopObj.setLocation(loopObj.posX + Game.snakeSize, loopObj.posY);
                    }
                    else if (runDirection == "south")
                    {
                        loopObj.setLocation(loopObj.posX, loopObj.posY + Game.snakeSize);
                    }
                    else if (runDirection == "west")
                    {
                        loopObj.setLocation(loopObj.posX - Game.snakeSize, loopObj.posY);
                    }
                    this.searchFood();
                }
                else
                {
                    newPosX = loopObj.posX;
                    newPosY = loopObj.posY;
                    loopObj.setLocation(oldPosX, oldPosY);
                }
                if (oldPosX == -1)
                {
                    oldPosX = loopObj.posX;
                    oldPosY = loopObj.posY;
                }
                else
                {
                    oldPosX = newPosX;
                    oldPosY = newPosY;
                }
            }
        }
    Alles anzeigen

    Dann schmiert das Programm zwischen
    System.out.println("1");
    und
    System.out.println("2");
    ab mit der Fehlermeldung:

    Code
    Exception in thread "main" java.util.ConcurrentModificationException
        at java.util.AbstractList$Itr.checkForComodification(Unknown Source)
        at java.util.AbstractList$Itr.next(Unknown Source)
        at Snake.run(Snake.java:55)
        at Game.gameStart(Game.java:38)
        at Game.<init>(Game.java:26)
        at FormMenu.FormMenuGo(FormMenu.java:40)
        at Main.StartMenu(Main.java:31)
        at Main.main(Main.java:18)

    Hoffe das mir jemand helfen kann wie ich hier weiterkomme :)

    Dateien

    Snake.rar 17,31 kB – 84 Downloads

    Gruß crAzywuLf :D

    7 Mal editiert, zuletzt von synaptic (25. Oktober 2009 um 15:30) aus folgendem Grund: als gelöst markiert

  • synaptic
    Forum Guru
    Reaktionen
    11
    Beiträge
    10.917
    • 25. Oktober 2009 um 09:58
    • #2

    also zu deiner exception habe ich folgendes gefunden:
    http://www.softgames.de/forum/frage114221.html

    hatte selber so eine nopch nie, aber ich denke der mensch der die erste antwort schreibt hat auch dein problem auf den punkt getroffen..
    hab leider net viel zeit heut, sonst würd ich mir des ding mal ansehen
    wär noch nice zu wissen mit welcher ide du des ding gemacht hast (wegen des importierens)

  • crAzywuLf
    König(in)
    Reaktionen
    1
    Beiträge
    1.175
    • 25. Oktober 2009 um 10:12
    • #3

    Alter... Hammer... Ich danke dir, es funktioniert wunderbar, dachte echt nicht das ich so schnell eine Loesung dafuer finde :D

    Die Lösung ist den Vector zu kopieren, da der Iterator sonst nicht klar kommt:

    Code
    Vector currentSnake = new Vector();
            currentSnake.addAll(this.snake);
            Iterator it = currentSnake.iterator();

    kA Ich benutze das ganz normale Eclipse, kannste dir gerne anschauen. Ich muss das bis ende des Jahres für die Berufsschule bauen und ich dachte ich bastel das mal über die Nacht, aber dieses Problem hat meinen Zeitplan ein wenig zerstört...

    Gruß crAzywuLf :D

    Einmal editiert, zuletzt von crAzywuLf (25. Oktober 2009 um 10:16)

  • synaptic
    Forum Guru
    Reaktionen
    11
    Beiträge
    10.917
    • 25. Oktober 2009 um 10:20
    • #4

    ok eclipse müsst ich mir hier noch installieren.
    arbeite aktuell im büro mit eclipse und daheim für die schule mit netbeans...

  • crAzywuLf
    König(in)
    Reaktionen
    1
    Beiträge
    1.175
    • 25. Oktober 2009 um 10:21
    • #5

    hmm.. ich habe immernoch nicht gerafft wie man das Thema jetzt als gelöst makiert...:confused:

    Gruß crAzywuLf :D

  • synaptic
    Forum Guru
    Reaktionen
    11
    Beiträge
    10.917
    • 25. Oktober 2009 um 13:30
    • #6

    na den ersten beitrag editieren und des präfix "gelöst" auswählen aus dem dropdown oben links vorm titel...

  • crAzywuLf
    König(in)
    Reaktionen
    1
    Beiträge
    1.175
    • 25. Oktober 2009 um 13:44
    • #7
    Zitat von synaptic

    na den ersten beitrag editieren und des präfix "gelöst" auswählen aus dem dropdown oben links vorm titel...

    in der erweiterten Ansicht oder nicht? :confused:

    Bilder

    • hää.jpg
      • 62,77 kB
      • 800 × 500

    Gruß crAzywuLf :D

  • synaptic
    Forum Guru
    Reaktionen
    11
    Beiträge
    10.917
    • 25. Oktober 2009 um 15:30
    • #8

    jo aber im standard-design :)

Tags

  • forum
  • www
  • html
  • ie
  • http
  • links
  • design
  • programm
  • problem
  • location
  • beans
  • thread
  • mensch
  • installieren
  • büro
  • schule
  • titel
  • games
  • dropdown
  • eclipse
  • präfix
  • exception
  1. Datenschutzerklärung
  2. Impressum
Community-Software: WoltLab Suite™
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
Zitat speichern