hello everyone, for school I am working on a sort of mario-like game. I am pretty close to an end now, but I keep getting an error message after trying to make multiple levels.
java.lang.ClassCastException: ScrollingWorld2 cannot be cast to ScrollingWorld
at Others.scrollingMethods(Others.java:73)
at moving_Ground.act(moving_Ground.java:17)
at greenfoot.core.Simulation.actActor(Simulation.java:507)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:470)
at greenfoot.core.Simulation.runContent(Simulation.java:204)
at greenfoot.core.Simulation.run(Simulation.java:194)
at first I had way more error codes, because some classes called ScrollingWorld instead of ScrollingWorld2, so I made an if-statement so that the game can see which world it is in at the moment.
this is my code of the others-class.
this is the code of the moving_ground class.
I really have no idea what to do now!
is there anyone who knows how I can fix this?
thanks in advance!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * The superclass of all actors that need to scroll (i.e. all the actors except Player) * * @author Bertie Wheen * @version 0.1 */ public class Others extends Erm { public int scrollX; //The variable used when scrolling. public Others() { scrollX = 0 ; } /** * Used for setting the actor's location. */ public void setLocation() { setLocation(getX() + scrollX, getY()); } /** * This is used for responding to keyboard input by the user. * This will only happen when the player is far enough to the left or right of the screen for scrolling to be needed. * @param How fast the scrolling should be. 3-4 is recommended. If a negative value is used, the controls will be inverted. */ public void checkKeyPress( int amount) { ScrollingWorld theWorld = (ScrollingWorld) getWorld(); Erm erm = (Erm) theWorld.getErm(); if (Greenfoot.isKeyDown( "left" ) && erm.shouldScroll == true ) { scrollX = amount; } else if (Greenfoot.isKeyDown( "right" ) && erm.shouldScroll == true ) { scrollX = -amount; } else { scrollX = 0 ; } } public void checkKeyPress2( int amount) { ScrollingWorld2 theWorld2 = (ScrollingWorld2) getWorld(); Erm erm = (Erm) theWorld2.getErm(); if (Greenfoot.isKeyDown( "left" ) && erm.shouldScroll == true ) { scrollX = amount; } else if (Greenfoot.isKeyDown( "right" ) && erm.shouldScroll == true ) { scrollX = -amount; } else { scrollX = 0 ; } } /** * A call to the following should be in all scrolling actor's act methods. * hierin staat ook de rensnelheid en de normale loopsnelheid, wanneer die dus verandert worden moet dat ook hier gebeuren! */ public void scrollingMethods() { ScrollingWorld theWorld = (ScrollingWorld) getWorld(); if (theWorld.getLevel()== 0 ) { if (Greenfoot.isKeyDown( "shift" )) { checkKeyPress( 7 ); } if (!Greenfoot.isKeyDown( "shift" )) { checkKeyPress( 5 ); } setLocation(); } if (theWorld.getLevel()!= 0 ) { if (Greenfoot.isKeyDown( "shift" )) { checkKeyPress2( 7 ); } if (!Greenfoot.isKeyDown( "shift" )) { checkKeyPress2( 5 ); } setLocation(); } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class moving_Ground here. * * @author (your name) * @version (a version number or a date) */ public class moving_Ground extends Others { /** * Act - do whatever the moving_Ground wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { scrollingMethods(); moveAround(); } private int distance_moved = 0 ; public void moveAround() { move( 2 ); distance_moved++; distance_moved++; if (distance_moved >= 240 ) { turn( 180 ); distance_moved = 0 ; } } } |