[Greenfoot] Zeitverzögerung

Status
Nicht offen für weitere Antworten.

Gamma

Mitglied
Hallo,
Weiß jemand warum folgender Code nicht funktioniert?

Java:
/**
 * Write a description of class Orange here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Orange  extends Actor
{

 /**
     * Act - do whatever the Orange wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
      for(int a = 0; a >= 10000000; a++)
      {
       
       int b = (int)(Math.random()*10)+1;
       int c = (int)(Math.random()*10)+1;
        
        setLocation(b,c);
        
        }
    }
    
    
}
Es passiert nichts
MfG Gamma
 
Zuletzt bearbeitet:
a <= 10000000

Bei solchen Problem hilft oft ein kleines System.out.println(".."), um zu sehen, ob er überhaupt in einer Schleife oder so reingeht...

Schöner als Math.random() ist eine statische Variable vom Typ java.util.Random, und daran nextInt(10) + 1 aufgerufen.
 
Mit a=10; funktionierts auch nicht.
Mit next int kenn ich mich nicht aus.
Könntest dus mal in den Quellcode schreiben und diesen posten?

MfG Gamma
 
Du hast die Bedingung falsch herum. Du musst in der for-Scheife sagen, wie lange du drinbleiben willst, nicht, wann du raus willst. Schreib einfach <= statt >= und es sollte laufen.
 
Hab jetzt nochmal eine andere Frage zu Grennfoot:
Ich will erreichen, dass die Orange erst nach kurzer Zeit ihre Position ändert.
Hiermit aber verzögere ich nicht nur die Orange, sondern alles:

Java:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
/**
 * Write a description of class Orange here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Orange  extends Actor
{

 /**
     * Act - do whatever the Orange wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
      Greenfoot.delay(100);
       Random r = new Random();
       int b = Math.abs(r.nextInt()) % 10;
        Random s = new Random();
       int c = Math.abs(s.nextInt()) % 10;
              
        
         setLocation(b,c);
        
       
       

    
    
}}
 
Das ist vielleicht umständlich aber du kannst ja den Aufruf in einen neuen Thread machen:
Java:
Runnable run = new Runnable()   //neuer Thread
{
    act()
}
<Den Code, den du nebenher ausführen willst>
 
Ich weiß jetzt nicht ganz genau wie du das meinst, aber so wie ich das verstanden hab gehts nicht, weil die klasse Orange Actor untergeordnet sein muss (extends Actor) sonst versteht er nicht mehr befehle wie setLocation(x,y).
 
Ich glaub, du hast mich falsch verstanden: Runnable ist keine Klasse, sondern ein Thread, der parallel zum anderen Code ausgeführt wird (wenn vorhanden, auf einem anderen Prozessorkern) also wird act aufgerufen und gleichzeitig schon mal unten weitergemacht
 
Hab mir in der zwischenzeit ausgedacht, das man das ja auch mit schritten machen könnte (sry wenn ich nerve)
z ist die Schrittanzahl die in Spinne hochgezählt wird:
Java:
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
import java.awt.*;
import java.awt.event.*;
/**
 * Write a description of class Orange here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Orange extends Spinne
{

    public void run()
    {int zero = 0;
     int g = z/5;  
     while(g > zero){  
     Random r = new Random();
     int b = Math.abs(r.nextInt()) % 10;
     Random s = new Random();
     int c = Math.abs(s.nextInt()) % 10;
              
        
         setLocation(b,c);
        }
        }
 /**
     * Act - do whatever the Orange wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */

    public void act() 
    {
     run();
    
}

}

Wenn ich Schritt 5 machen will stürtz greenfoot ab. Nur mit Reset gehts wieder, aber der Run und der Act button funktionieren nur nach Neustart. Was ist da los?
 
Hallo, wir haben zurzeit Greenfoot in der Schule (ich krankheitsbedingt leider nur teilweise) und die Hausaufgabe ist für mich unentschlüsselbar; könnt ihr mir erklären was
/java
public void schleife_a()
{
for(int i=0;i<4;i++)
{
bewegen();
akkuAufnehmen();
}
}


public void schleife_b()
{

for(int j=4;j<5;j++)
{
bewegen();
akkuAufnehmen();
}
}


public void schleife_c()
{
for(int bla=-2;bla<3;bla+=2)
{
bewegen();
akkuAufnehmen();
}
}


public void schleife_d()
{
for(int i=5;i>0;i--)
{
bewegen();
akkuAufnehmen();
}
}


public void schleife_e()
{
for(int z=2;z<0;z+=10)
{
bewegen();
akkuAufnehmen();
}
}
/java


das "for(int klfjöalkjfd-a,.eoifaökl) heißt


mfG
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben