Reihenfolge von zeichnen befehl und spielberechnung



  • hallo leute

    ich hab mir hier ein kleines spiel programmiert (snake)
    und das als java applet

    jetzt ist dass problem:
    die reihenfolge von benutzereingabe, paint befehl und abbruch bedingung

    es ist so:
    meine schlange rutscht auf eine wand zu, jetzt ist das quadrat vor der wand optisch noch frei, aber die koordinaten des schlangenkopfes sind schon auf diesem freien feld, sprich ich hab verloren obwohl ich sehe dass noch ein freies feld zwischen schlange und wand ist, so ists natürlich unmöglich die reihe direkt unter der wand entlangzuschlängeln

    die reihenfolge der funktionen ist so:

    // Java Applet Klasse
    public void run() {
        while (!quit) {
             quit =  snake.berechne();
             repaint();
             thread.sleep(50);
        }
    }
    
    public boolean keyDown(Event e, int key) {
       snake.eingabeVerarbeiten(key);
       return true;
    }
    
    // Snake Klasse
    // blabla der ganze interne private kram usw
    public boolean berechne() {
        schlangenKoerperNachZiehen();
        schlangeBewegen();
        schlangeAufSpielfeldSetzen();
        if ( !essen_gesetzt )   // eigendlich für das problem nicht wichtig
             essenSetzen();
        essen_finden();
        if ( pruefeObVerloren() )
             return true;
        return false;
    }
    
    private boolean pruefeObVerloren() {
         Position p = snake.getNextHeadPosition();  // in etwa ist das so geschrieben
         if ( p == WAND )
             return true;
         else 
             return false;
    }
    // die funktion die die eingabetaste aus der appletklasse entgegen nimmt ändert nur die bewegungsrichtung der schlange
    

    wo liegt mein denkfehler?
    oder wo ist die reihenfolge falsch?
    oder ist es wegen den threads nicht möglich das problem zu beheben?

    mfg mosho



  • mh ich merke grad dass ich mir angewöhnen sollte erst zu denken und DANN zu fragen

    nicht umgekehrt
    hab einfahc in der berechne methode die abbruchbedingungsprüfung ganz nach oben an den anfang gesetzt


Anmelden zum Antworten