So my level gets created when it is score= 5 for Level 1 (MyWorld). However the turtle cannot hit the strawberries in the new level. Why?
that is the error code.
Here is my code for the whole game. If anyone wants to help please go to my scenarios. The second one "Yummy Strawberries v.2.0.1". Here is my code though for every world and actor:
That was my title screen above.
That is the MyWorld World. (level 1)
that is level 2 world code.
That is the bee actor code (the thing that eats the turtle).
That is my counter.
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class Strawberry here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class Strawberry extends Actor
{
/**
* Act - do whatever the Strawberry wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
HitEnemy();
}
public void HitEnemy()
{
if (isTouching (Turtle.class))
{
World myWorld = getWorld();
MyWorld space = (MyWorld)myWorld;
Counter counter = space.getCounter();
counter.addScore();
getWorld().removeObject (this);
}
}
}
That is my Strawberry actor. I suspect that the mistake is somewhere in the public void hit enemy section. But i dont know how to fix it.
That is my strawberry code.
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
/**
* Write a description of class YouLose here.
*
* @author (your name)
* @version (a version number or a date)
*/
public class YouLose extends Actor
{
/**
* Act - do whatever the YouLose wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public YouLose()
{
GreenfootImage image = getImage();
image.scale(300, 200);
setImage(image);
}
}
That is my GameOver actor code
IN CONCLUSION I THINK THERE IS SOMETHING WRONG BETWEEN THE RELATION WITH THE STRAWBERRY, LEVEL 2 AND THE TURTLE. THE COUNTER ALSO DOES NOT WORK IN LEVEL 2. HOW CAN I FIX THIS?
Greenfoot wrote...
java.lang.ClassCastException: Level2 cannot be cast to MyWorld
at Strawberry.HitEnemy(Strawberry.java:25)
at Strawberry.act(Strawberry.java:17)
at greenfoot.core.Simulation.actActor(Simulation.java:567)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:530)
at greenfoot.core.Simulation.runContent(Simulation.java:193)
at greenfoot.core.Simulation.run(Simulation.java:183)import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class StartScreen here. * * @author (your name) * @version (a version number or a date) */ public class StartScreen extends World { /** * Constructor for objects of class StartScreen. * */ public StartScreen() { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(800, 600 , 1); prepare(); } public void act() { if(Greenfoot.isKeyDown("enter")) Greenfoot.setWorld(new MyWorld()); } /** * Prepare the world for the start of the program. * That is: create the initial objects and add them to the world. */ private void prepare() { TitleScreen titleScreen = new TitleScreen(); addObject(titleScreen,377,313); } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class MyWorld here. * * @author (Sadeesh Senevirathne) * @version (2.0.0) */ public class MyWorld extends World { Counter counter = new Counter(); //1.5.5 brings cleaner movement coding for the Turtle and a Score Counter that will function in next update. //This new update features radical changes to the whole code such as GameOver and new class. /** * Constructor for objects of class MyWorld. * */ public MyWorld() { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(800, 600, 1); prepare(); } public Counter getCounter() { return counter; } /** * Prepare the world for the start of the program. * That is: create the initial objects and add them to the world. */ private void prepare() { addObject(counter, 100, 40); Strawberry strawberry = new Strawberry(); addObject(strawberry,263,204); Strawberry strawberry2 = new Strawberry(); addObject(strawberry2,441,153); Strawberry strawberry3 = new Strawberry(); addObject(strawberry3,451,321); Strawberry strawberry4 = new Strawberry(); addObject(strawberry4,197,306); Strawberry strawberry5 = new Strawberry(); addObject(strawberry5,87,139); Strawberry strawberry6 = new Strawberry(); addObject(strawberry6,275,78); Bee bee = new Bee(); addObject(bee,331,92); Bee bee2 = new Bee(); addObject(bee2,273,311); Bee bee3 = new Bee(); addObject(bee3,57,52); Turtle turtle = new Turtle(); addObject(turtle,561,41); Strawberry strawberry7 = new Strawberry(); addObject(strawberry7,451,470); Strawberry strawberry8 = new Strawberry(); addObject(strawberry8,669,481); Strawberry strawberry9 = new Strawberry(); addObject(strawberry9,667,302); Strawberry strawberry10 = new Strawberry(); addObject(strawberry10,125,510); Strawberry strawberry11 = new Strawberry(); addObject(strawberry11,304,508); Bee bee4 = new Bee(); addObject(bee4,566,478); removeObject(bee); removeObject(bee2); removeObject(strawberry3); removeObject(strawberry7); removeObject(strawberry11); removeObject(strawberry10); removeObject(strawberry4); strawberry.setLocation(272,498); removeObject(strawberry9); strawberry8.setLocation(441,346); strawberry2.setLocation(732,182); strawberry6.setLocation(281,290); strawberry.setLocation(78,507); bee4.setLocation(293,492); strawberry8.setLocation(665,473); } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Level2 here. * * @author (your name) * @version (a version number or a date) */ public class Level2 extends World { /** * Constructor for objects of class Level2. * */ public Level2() { // Create a new world with 600x400 cells with a cell size of 1x1 pixels. super(800, 600, 1); prepare(); } /** * Prepare the world for the start of the program. * That is: create the initial objects and add them to the world. */ private void prepare() { Strawberry strawberry = new Strawberry(); addObject(strawberry,511,373); Strawberry strawberry2 = new Strawberry(); addObject(strawberry2,269,425); Strawberry strawberry3 = new Strawberry(); addObject(strawberry3,335,244); Strawberry strawberry4 = new Strawberry(); addObject(strawberry4,716,385); Strawberry strawberry5 = new Strawberry(); addObject(strawberry5,715,20); Strawberry strawberry6 = new Strawberry(); addObject(strawberry6,162,170); Strawberry strawberry7 = new Strawberry(); addObject(strawberry7,98,487); Turtle turtle = new Turtle(); addObject(turtle,476,467); Bee bee = new Bee(); addObject(bee,361,335); Bee bee2 = new Bee(); addObject(bee2,70,76); Bee bee3 = new Bee(); addObject(bee3,690,170); } }
public class Bee extends Actor { /** * Act - do whatever the Bee wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { move(Greenfoot.getRandomNumber(10)); if (isAtEdge()) { if (Greenfoot.getRandomNumber(100) <100) { turn(180); } } if (Greenfoot.getRandomNumber(100) <20) { turn(Greenfoot.getRandomNumber(20)); } } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Counter here. * * @author (your name) * @version (a version number or a date) */ public class Counter extends Actor { int score = 0; /** * Act - do whatever the Counter wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { setImage(new GreenfootImage("Score: " + score, 24, Color.GREEN, Color.BLACK)); if (score == 5) Greenfoot.setWorld(new Level2()); } public void addScore() { score++; } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Turtle here. * * @author (your name) * @version (a version number or a date) */ public class Turtle extends Actor { public Turtle() { GreenfootImage image = getImage(); image.scale(50, 50); setImage(image); } /** * Act - do whatever the Turtle wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { HitEnemy(); if (Greenfoot.isKeyDown ("a")) { turn (-3); } if (Greenfoot.isKeyDown ("d")) { turn (3); } if (Greenfoot.isKeyDown ("s")) { move (-3); } if (Greenfoot.isKeyDown ("w")) { move (3); } } public void HitEnemy() { if (isTouching (Bee.class)) { getWorld().addObject (new YouLose(), 400, 300); getWorld().removeObject (this); Greenfoot.stop(); } } }