# Greenfoot Schulprojekthilfe



## Remii (21. Feb 2011)

Hallo allerseits,

Mein Freund und ich müssen für die Schule ein kleines Spiel mit Greenfoot programmieren. Und dies soll so aussehen: Der Hauptdarsteller ist eine Ameise, welche Erdbeeren essen muss, um größer zu werden. Innerhalb einer bestimmten Zeit sollen einige Erdbeeren gegessen werden. Nun zu den Problemen:
1.) Die Erdbeeren sollen nach einer vorgegebenen Zeit verschwinden und am Ort x wieder auftauchen. Wir haben es bereits geschafft, dass welche zufällig auftauchen, aber wir wissen nicht wie wir sie verschwinden lassen sollen.
2.) mirrorHorizontally(). Unser letztes Bild (Spiderman ) soll wenn er sich bewegt, gespiegelt werden. Also haben wir beim Online Tut. von Greenfoot nachgeschaut und haben mirrorHorizontally() gefunden. Doch er macht Probleme wegen Variablen. ???:L
Weitere Probleme folgen im Laufe des Fortschritts 
so far
Danke im Voraus
Remii und abuhamame 



Quelltext, falls nötig:

```
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
import java.util.ArrayList;
import java.awt.Color;
/**
 * Write a description of class Versuch1 here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Versuch1  extends Actor
{ 
    private int leavesEaten;
    private GreenfootImage Versuch0;
    private static final double WALKING_SPEED = 5.0; 
    
    

    public Versuch1()
    {
        leavesEaten = 0;


        
    }
/**
     * Turn 'angle' degrees towards the right (clockwise).
     */
    public void turn(int angle)
    {
        setRotation(getRotation() + angle);
    }
    

    /**
     * Move forward in the current direction.
     */
    public void move()
    {
        double angle = Math.toRadians( getRotation() );
        int x = (int) Math.round(getX() + Math.cos(angle) * WALKING_SPEED);
        int y = (int) Math.round(getY() + Math.sin(angle) * WALKING_SPEED);
        
        setLocation(x, y);
    }
   
 /**
     * Act - do whatever the Versuch1 wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    
    public void act() 
    {
      if(Greenfoot.isKeyDown("right"))
        { 
            turn(10);
        }
    
        if(Greenfoot.isKeyDown("left"))
        {
            turn(-10);
        }
        
        
        if(Greenfoot.isKeyDown("up"))
        {                
            move(); 

            
        }
        
        
        if(Greenfoot.isKeyDown("down"))
        {
            turn(-10);
            move();
        }
        
        if(foundLeaf()) {
            eatleaves();}
            }
            
    public boolean foundLeaf()
    {
        Actor leaf = getOneObjectAtOffset(0, 0, Leaf.class);
        if(leaf != null) {
            return true;
        }
        else {
            return false;
        }
    }
    
        
    /**
     * Eat a leaf.
     */
    public boolean eatLeaf()
    {
        boolean eatenleaf = false;
        Actor leaf = getOneObjectAtOffset(0, 0, Leaf.class);
        if(leaf != null) {
            // eat the leaf...
            getWorld().removeObject(leaf);
            leavesEaten = leavesEaten + 1;
            eatenleaf = true;
        }
     return eatenleaf;}
    public void  eatleaves() {
         if(eatLeaf()) {
            
             setImage("Versuch"+leavesEaten+".png");

             
             
             
        } 
        }    
    }
```


€: World:

```
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class AnimalsWorld here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class AnimalsWorld  extends World
{

    /**
     * Constructor for objects of class AnimalsWorld.
     * 
     */
    public AnimalsWorld()
    {    
        // Create a new world with 600x400 cells with a cell size of 1x1 pixels.
        super(600, 400, 1); 
        addObject(new Versuch1(), 150,150);
        addObject(new Leaf(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
        addObject(new Leaf(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
        addObject(new Leaf(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
        addObject(new Leaf(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
        addObject(new Leaf(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
        addObject(new Leaf(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
        addObject(new Leaf(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
        addObject(new Leaf(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
        addObject(new Leaf(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
        addObject(new Leaf(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
        addObject(new Leaf(), Greenfoot.getRandomNumber(600), Greenfoot.getRandomNumber(400));
       
    }        
        
    }
```

P.S. leaf = Erdbeere

Versuchx = Bild


----------



## Marco13 (23. Feb 2011)

Die Objekte nach einer Weile wieder verschwinden zu lassen würde man wohl mit einem Timer oder einem eigenen Thread machen. Auf der World kann man sich z.B. mit getObjects oder getObjectAt alle oder einzelne Objekte abholen. Von denen könnte man dann zufällig eins auswählen, und das mit world.removeObject entfernen und woanders einfügen. 
Das mit dem mirror und dem Spiderman... ich weiß nicht wovon du da gerade geredet hast, weil ich an Batman gedacht habe.


----------



## Kevin94 (25. Feb 2011)

Ich würde die Klasse Leaf folgendermasen ergänzen:


```
public class Leaf extends Actor implements Runnable
{
     public Leaf()
     {
            Thread t=new Thread(this);
            t.start();
     }

     public void run()
     {
            try{
                Thread.sleep(1000);//wenn das Blatt 1s nach der Erzeugung verschwinden soll
            }
            catch(InterruptedException ex){}
            getWorld().removeObject(this);//entfernt dasObject aus der Welt
     }

}
```


----------

