Hi,
I am trying to add objects from a certain class called ' blok'. They have to spawn in 'Breakout'.
Is that possible?
When i use the following code it won' t work, what should I do?
For blok and
For Breakout.
It gives the following error:
'non-static method addObject(greenfoot.Actor,int,int) cannot be referenced from a static context'
Thanks in advantage,
Jelle
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.List;
/**
* Write a description of class Blok here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Blok extends Actor
{
/**
* Act - do whatever the Blok wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public static int blokjes = 30;
public void act()
{
Actor bal = getOneIntersectingObject(Bal.class);
if(bal !=null) //check if the ball hits the block, if so remove the block and make the ball move the other way back and var blokjes -- and check for stop(if blokjes is 0)
{
blokjes --;
if(blokjes<1)
{
Greenfoot.stop();
}
getWorld().removeObject(this);
Bal.speedY = -Bal.speedY;
if(blokjes==15)
{
getWorld();
Breakout.level_2();
}
}
}
}
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Breakout here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Breakout extends World
{
/**
* Constructor for objects of class Breakout.
*
*/
public Breakout()
{
// Create a new world with 600x400 cells with a cell size of 1x1 pixels.
super(400, 600, 1);
setBackground("bricks2.gif");
populate();
}
public void populate()
{
// Plaats hier de objecten in de wereld
// xBatje is de x-coordinaat van het midden van het middelste batje
int xBatje = 200;
int yBatje = 550;
GreenfootImage b1Img = new GreenfootImage("bat1.png");
// De breedte van het middelste batje
int widthBatje = b1Img.getWidth();
GreenfootImage b2Img = new GreenfootImage("bat2.PNG");
// De breedte van een zij-batje
int widthSideBatje = b2Img.getWidth();
// Creeer het middelste batje en plaats het in de wereld
Batje batje = new Batje(b1Img,
//linkergrens is de breedte van het linker zij-batje + de helft van de breedte van het middelste batje
widthSideBatje + widthBatje / 2,
//rechtergrens is de breedte van de wereld - (de helft van de breedte van het middelste batje + de breedte van het rechterbatje)
getWidth() - (widthSideBatje + widthBatje / 2)
);
addObject(batje, xBatje, yBatje);
// Creeer het linker zij-batje en plaats het in de wereld
LBatje leftBatje = new LBatje(b2Img,
//linkergrens is de breedte van het linker zij-batje
b2Img.getWidth() / 2,
//rechtergrens is de breedte van de wereld - (de helft van de breedte van het linker batje + de breedte van het middelste batje + de breedte van het rechterbatje)
getWidth() - (widthSideBatje / 2 + widthBatje + widthSideBatje)
);
// initiele x-coordinaat (midden) is het midden van het middelste batje - de helft van de breedte van het middelste batje - de helft van de breedte van het linker zij-batje
addObject(leftBatje, xBatje - widthBatje / 2 - widthSideBatje / 2, yBatje);
// Creeer het rechter zij-batje en plaats het in de wereld
Batje rightBatje = new RBatje(b2Img,
//linkergrens is de breedte van het linker zij-batje + de breedte van het middelste batje + de helft van de breedte van het rechter batje
widthSideBatje + widthBatje + widthSideBatje / 2,
//rechtergrens is de breedte van de wereld - (de helft van de breedte van het rechter batje)
// de + 1 is waarschijnlijk het resultaat van een afrondingsfout
getWidth() - (b2Img.getWidth() / 2 + 1)
);
addObject(rightBatje, xBatje + widthBatje / 2 + widthSideBatje / 2, yBatje);
addObject(new Bal(), 200, 200);
addObject(new L1(), 17,584);
addObject(new L2(), 50,584);
addObject(new L3(), 83,584);
Bal.levens = 3;
int a=0;
while(a<5)
{
addObject(new Blok(), 100+50*a, 100);
a=a+1;
}
int b=0;
while(b<5)
{
addObject(new Blok(), 100+50*b, 50);
b=b+1;
}
int c=0;
while(c<5)
{
addObject(new Blok(), 100+50*c, 150);
c=c+1;
}
Blok.blokjes = 30; //resets the var
}
public static void level_2() {
int a=0;
while(a<5)
{
addObject(new Blok(), 100+50*a, 100);
a=a+1;
}
int b=0;
while(b<5)
{
addObject(new Blok(), 100+50*b, 50);
b=b+1;
}
int c=0;
while(c<5)
{
addObject(new Blok(), 100+50*c, 150);
c=c+1;
}
}
}
