The variable "placed" in class "Bin" doesn`t get changed even tho "placedyet" in class "Cannon" is changed. I`ve tried to find the problem with the inspect tool and before that I changed the code and added an extra variable to exclude the problem in the "Cannon-"class, but everything works except that "placed" gets changed. Can you guys take a look. I think i`m just overseeing something. Here`s the code from "Bin-"class:
and here`s the code from "Cannon-"class:
import greenfoot.*;
public class Bin extends FixedPoints
{
private GreenfootImage baseImg = new GreenfootImage("Bin.png");
GreenfootImage image = new GreenfootImage(baseImg);
int x = 50;
int y = 50;
boolean placed = true;
Cannon placedyet;
public void act()
{
placedyet = getWorld().getObjects(Cannon.class).get(0);
placed = placedyet.placedyet();
if(placed)
{
setImage("Bin.png");
if(isTouching(Cannon.class)) //wird größer
{
x = 60;
y = 60;
image.scale(x, y);
setImage(image);
}
else //wird kleiner
{
x = 50;
y = 50;
image.scale(x, y);
setImage(image);
}
}
else
{
setImage("Invisible.png");
}
}
}
import greenfoot.*;
public class Cannon extends Actor
{
int mx;
int my;
boolean a = false;
boolean placed = false;
public boolean placedyet;
private GreenfootImage cannondrag = new GreenfootImage("Cannondrag.png");
public boolean placedyet()
{
return placedyet;
}
public void act()
{
if(a)
{
placedyet = true;
}
else
{
placedyet = false;
}
if(!placed)
{
notplaced();
}
if(placed)
{
placed();
}
}
public void notplaced() // Man kann die Kanone setzen
{
setImage("Cannondrag.png");
a = true;
MouseInfo mouse = Greenfoot.getMouseInfo();
if(mouse != null)
{
mx = mouse.getX();
my = mouse.getY();
}
setLocation(mx, my);
if(Greenfoot.mouseClicked(this) && getY() < 550 && !isTouching(Trennwand.class) && !isTouching(Cannon.class) && !isTouching(Weg.class) && !isTouching(Spawn.class) && !isTouching(Finish.class))
{
placed = true;
}
}
public void placed() //Die Kanone steht
{
setImage("Cannon.png");
a = true;
if(Greenfoot.mouseClicked(this))
{
}
}
}

