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; } } }