Hilfe bei Greenfoot ( random blickrichtung + vor();

Bunqie

Mitglied
Hi ,

meine aufgabe ist es den hamster in eine zufällige richtung gucken
zu lassen , aber jetzt brauche ich eure hilfe . ich bekomme die fehlermeldung :

"void type not allowed here"

Java:
public void meinZufallswert(){
        double meinZufallswert;
        meinZufallswert = (Math.round(Math.random()*5)+1);
        System.out.println(meinZufallswert);
    }

Java:
public void irrlicht() {
        if(meinZufallswert()==1.0) {
            setBlickrichtung(0);
            vor();
        }
            else
            if(meinZufallswert()==2.0) {
                setBlickrichtung(1);
                vor();
            }
                else
                if(meinZufallwert()==3.0) {
                    setBlickrichtung(2);
                    vor();
                }
                    else
                    setBlickrichtung(3);
                    vor();
                }

der fehler taucht genau bei "if(meinZufallswert()==1.0)" (den zwei inneren klammern) auf .
 
meinZufallswert gibt auch keinen Wert zurück, den man verarbeiten könnte, sie besteht nur aus Ausführungen.
Funktionieren würde:
Java:
public double meinZufallswert(double r){
r = (Math.round(Math.random()*5)+1);
 System.out.println(r);
return r;
 
jetzt habe ich es so stehen :

Java:
public double meinZufallswert(double r){
        r = (Math.round(Math.random()*5)+1);
        System.out.println(r);
        return r;
    }

Java:
 public void irrlicht() {
        if(meinZufallswert()==1.0) {
            setBlickrichtung(0);
            vor();
        }
            else
            if(meinZufallswert()==2.0) {
                setBlickrichtung(1);
                vor();
            }
                else
                if(meinZufallwert()==3.0) {
                    setBlickrichtung(2);
                    vor();
                }
                    else
                    setBlickrichtung(3);
                    vor();
                }

jetzt bekomme ich allerdings den fehler : method meinZufallswert in class Hamster cannot be applied to given types; required:double; found:no arguments; reason: actual and formal argument list differ in length
 
Deine Methode gibt nichts zurück.

Java:
public void meinZufallswert(){ //void bedeutet keine Rückgabe
        double meinZufallswert; // Variable sollte anders lauten als Methode
        meinZufallswert = (Math.round(Math.random()*5)+1);
        System.out.println(meinZufallswert);
    }

Du rufst jedesmal die Methode auf, die wiederum bei jedem IF eine neue Zufallszahl generiert - sicher nicht gewollt.
Vergleiche die Varialbe und nicht die Methode!

Java:
public void irrlicht() {
        if(meinZufallswert()==1.0) { //hier wird ein Zufallswert produziert
            setBlickrichtung(0);
            vor();
        }
            else
            if(meinZufallswert()==2.0) { //hier wird ein NEUER Zufallswert produziert
                setBlickrichtung(1);
                vor();
            }
                else
                if(meinZufallwert()==3.0) { //hier wird ein NEUER Zufallswert produziert
                    setBlickrichtung(2);
                    vor();
                }
                    else
                    setBlickrichtung(3); //hier wird ein NEUER Zufallswert produziert
                    vor();
                }

probiere es mal in dieser Richtung:
Java:
public double getRandom(){ //besser auf int umstellen
    double myRandom;
    myRandom = (int)(Math.random()*5+1); //Zahlen von 1 bis 5
    return myRandom;
}    

public void irrlicht() {
    Double myRandom = getRandom(); //einen Wert generieren und speichern
    System.out.println(myRandom);
    if(myRandom==1.0) {
        System.out.println("1");
    }else if(myRandom==2.0) {
        System.out.println("2");
        }else if(myRandom==3.0) {
            System.out.println("3");
            }else{
            System.out.println("4 oder 5"); 
        }
}
 
Java:
public double meinZufallswert(double r){
r = (Math.round(Math.random()*5)+1);
 System.out.println(r);
return r;

sry mein Fehler, müsste so lauten:
Java:
public double meinZufallswert(){
double r = (Math.round(Math.random()*5)+1);
 System.out.println(r);
return r;
 
ok danke .. zwei fragen habe ich noch :

kannst du mir das mit return und double r = erklären ?

und wie schaff ich es das keine fehlermeldungen kommen wenn der hamster ans "ende der welt" stößt ?
 
Code:
return
gibt immer einen Wert zurück, in diesem Falle r.
Code:
double r=...
ist eine Initialisierung.
Kannst auch zuerst
Code:
double r;
deklarieren und dann
Code:
r=...

und wie schaff ich es das keine fehlermeldungen kommen wenn der hamster ans "ende der welt" stößt ?
welche kommt denn?
 
MauerDaException: Die Kachel (8,9) ist durch eine Mauer blockiert!
at Hamster.vor(Hamster.java:482)
at Hamster.irrlicht(Hamster.java:390)
at Hamster.act(Hamster.java:75)
at greenfoot.core.Simulation.actActor(Simulation.java:565)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:523)
at greenfoot.core.Simulation.runContent(Simulation.java:213)
at greenfoot.core.Simulation.run(Simulation.java:203)
 
ich kenn leider den kompletten Code nicht...
Mach doch einfach einen Sonderfall, der überprüft, ob der Hamster das Ende der Welt erreicht hat.
 

Neue Themen


Zurück
Oben