I think you will have to separate speed from direction so you can move by 'speed*direction' where direction is only one or negative one.
public void CollectCoins() { Actor Coin = getOneObjectAtOffset (0, getImage().getHeight(), Coin.class); if (isTouching(Coin.class)) { World myWorld=getWorld(); Greenfoot.setWorld(new Level1()); myWorld.removeObject(Coin); coin.play(); coin.stop(); } }
if (dir == -1 && getY() < targetY || dir == 1 && getY() > targetY) targetY = Greenfoot.getRandomNumber(getWorld().getHeight());
if (dir == -1 && getY() < targetY || dir == 1 && getY() > targetY) targetY = Greenfoot.getRandomNumber(getWorld().getHeight());
setPaintOrder(Puppy_Player.class); setMainActor(new Puppy_Player(), 100, 342); mainActor.setLocation(100, 342); GreenfootImage bg = new GreenfootImage("Background1.png"); setScrollingBackground(bg);
import greenfoot.*; import java.util.List; import java.util.ArrayList; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Mace_Level here. * * @author (your name) * @version (a version number or a date) */ public class Mace_Level extends Scrooling_Worlds { private ScoreBoard scoreBoard; static GreenfootSound theme = new GreenfootSound("Mace Menu Theme.mp3"); static GreenfootSound start = new GreenfootSound("Spawn Sound Effect.mp3"); /** * Constructor for objects of class Mace_Level. * */ public Mace_Level() { super(960, 580, 1, 9600); setPaintOrder(Puppy_Player.class); setMainActor(new Puppy_Player(), 100, 342); mainActor.setLocation(100, 342); GreenfootImage bg = new GreenfootImage("Background1.png"); setScrollingBackground(bg); lives = 3; ammunition = 0; coins = 0; enemies = 0; if (!theme.isPlaying()) { theme.playLoop(); } buildWorld(); if(!start.isPlaying()) { start.play(); } if(coins > 20) { addObject(new Orc_Level_Locked(),9544,333); } else if(coins == 20) { addObject(new Door_Orc(),9544,333); } } public void rebuildWorld() { if (lives < 0) { stopMusic(); Greenfoot.setWorld(new GameOver_World()); } ammunition = 0; List objects = getObjects(null); removeObjects(objects); buildWorld(); } public void stopMusic() { theme.stop(); } public void updateScoreboard() { scoreBoard.updateScore(lives, ammunition, coins, enemies); } private void addScoreboard() { scoreBoard = new ScoreBoard(); addObject(scoreBoard, 71, 45, false); scoreBoard.updateScore(lives, ammunition, coins, enemies); } private void buildWorld() { startingArea(); areaTwo(); areaThree(); areaFour(); areaFive(); addScoreboard(); } private void startingArea() { addObject(new Long_Grass1(),237,551); addObject(new Grass_Normal_Left(),320,498); addObject(new Grass_Normal_Left(),379,442); addObject(new Grass_Normal_Center(),438,442); addObject(new Ground_Center(),320,557); addObject(new Ground_Center(),379,557); addObject(new Ground_Center(),379,499); addObject(new Ground_Right(),439,499); addObject(new Ground_Right(),439,557); addObject(new Water(),596,518); addObject(new Water(),849,518); addObject(new Coin(),123,495); addObject(new Coin(),232,495); addObject(new Coin(),325,444); addObject(new Coin(),415,386); addObject(new Coin(),558,312); addObject(new Coin(),558,312); addObject(new Coin(),681,252); addObject(new Coin(),801,199); addObject(new Coin(),925,128); addObject(new Coin(),1258,128); addObject(new Grass_Normal_Left(),560,368); addObject(new Grass_Normal_Left(),681,308); addObject(new Grass_Normal_Left(),802,258); addObject(new Grass_Normal_Right(),923,184); addObject(new Mace(),672,406); addObject(new Mace(),1848,406); } private void areaTwo() { addObject(new Water(),1102,518); addObject(new Water(), 1354-getScrolledX(), 518); addObject(new Water(), 1609-getScrolledX(), 518); addObject(new Water(), 1864-getScrolledX(), 518); addObject(new Long_Grass1(), 1260-getScrolledX(), 184); addObject(new Grass_Normal_Left(),1591,184); addObject(new Grass_Normal_Center(),1712, 258); addObject(new Grass_Normal_Center(),1833, 308); addObject(new Grass_Normal_Left(),1954, 368); addObject(new Grass_Normal_Left(),1954, 368); addObject(new Mace(),1255, 296); addObject(new Coin(),1950,312); addObject(new Coin(),1836,252); addObject(new Coin(),1703,199); addObject(new Coin(),1591,128); } private void areaThree() { addObject(new Long_Grass1(),2231,551); addObject(new Grass_Normal_Center(),2022,498); addObject(new Long_Grass1(),2229,551); addObject(new Coin(),2165,492); addObject(new Coin(),2165,492); addObject(new Coin(),2282,492); addObject(new Coin(),2403,492); addObject(new Mace(),2561,185); addObject(new Spike_Up(),2482,546); addObject(new Spike_Up(),2531,546); addObject(new Spike_Up(),2574,546); addObject(new Spike_Up(),2622,546); addObject(new Coin(),2654,416); addObject(new MovingX_Platform(),2603,467); addObject(new Spike_Up(),2675,546); addObject(new Spike_Up(),2726,546); addObject(new Spike_Up(),2772,546); addObject(new Spike_Up(),2826,546); addObject(new Coin(),2914,494); addObject(new Coin(),2914,494); addObject(new Coin(),3039,494); addObject(new Coin(),3039,494); } private void areaFour() { addObject(new Long_Ground1(),3088,551); addObject(new Coin(),3181,494); addObject(new Coin(),3291,436); addObject(new Ground_Center(),3296,493); addObject(new Ground_Center(),3354,493); addObject(new Coin(),3357,378); addObject(new Ground_Center(),3412,493); addObject(new Coin(),3416,324); addObject(new Ground_Center(),3353,437); addObject(new Ground_Center(),3412,437); addObject(new Ground_Center(),3412,379); addObject(new Ground_Center(),3354,551); addObject(new Ground_Center(),3354,551); addObject(new Ground_Center(),3412,551); addObject(new Ground_Center(),3472,551); addObject(new Ground_Center(),3532,551); addObject(new Ground_Center(),3532,551); addObject(new Coin(),3509,627); addObject(new Coin(),3587,251); addObject(new Ground_Center(),3591,551); addObject(new Ground_Center(),3650,551); addObject(new Ground_Center(),3710,551); addObject(new Ground_Center(),3770,551); addObject(new Ground_Center(),3770,551); addObject(new Ground_Center(),3786,497); addObject(new Ground_Center(),3727,497); addObject(new Ground_Center(),3786,551); addObject(new Ground_Center(),3726,439); addObject(new Coin(),3754,384); addObject(new Ground_Center(),3786,439); addObject(new Water(),3570,438); addObject(new Grass_Normal_Left(),3535,310); addObject(new Grass_Normal_Center(),3595,310); addObject(new Grass_Normal_Right(),3655,310); } private void areaFive() { addObject(new Spike_Up(),3859,539); addObject(new Spike_Up(),3944,539); addObject(new Spike_Up(),4029,539); addObject(new Spike_Up(),3944,539); addObject(new Spike_Up(),4114,539); addObject(new Spike_Up(),4199,539); addObject(new Spike_Up(),4284,539); addObject(new Spike_Up(),4369,539); addObject(new Spike_Up(),4454,539); addObject(new Spike_Up(),4539,539); addObject(new Spike_Up(),4539,539); addObject(new Spike_Up(),4624,539); addObject(new Spike_Up(),4709,539); addObject(new Spike_Up(),4794,539); addObject(new Spike_Up(),4879,539); addObject(new Spike_Up(),4964,539); /** Platforme Normale Jos*/ addObject(new MovingX_Platform(),3970,408); addObject(new MovingX_Platform(),4401,408); addObject(new MovingX_Platform(),4832,408); addObject(new MovingX_Platform(),5233,408); addObject(new MovingX_Platform(),5634,408); addObject(new MovingX_Platform(),6035,408); addObject(new MovingX_Platform(),6436,408); addObject(new MovingX_Platform(),6837,408); addObject(new MovingX_Platform(),7238,408); addObject(new MovingX_Platform(),7639,408); addObject(new MovingX_Platform(),8040,408); /** Platforme Rapide Jos */ addObject(new MovingXPlatform_Faster(),4190,282); addObject(new MovingXPlatform_Faster(),4621,282); addObject(new MovingXPlatform_Faster(),5052,282); addObject(new MovingXPlatform_Faster(),5483,282); addObject(new MovingXPlatform_Faster(),5914,282); addObject(new MovingXPlatform_Faster(),6345,282); addObject(new MovingXPlatform_Faster(),6776,282); addObject(new MovingXPlatform_Faster(),7207,282); addObject(new MovingXPlatform_Faster(),7638,282); addObject(new MovingXPlatform_Faster(),7638,282); addObject(new MovingXPlatform_Faster(),8069,282); /** Platforme Normale Sus */ addObject(new MovingX_Platform(),3970,162); addObject(new MovingX_Platform(),4401,162); addObject(new MovingX_Platform(),4832,162); addObject(new MovingX_Platform(),5233,162); addObject(new MovingX_Platform(),5634,162); addObject(new MovingX_Platform(),6035,162); addObject(new MovingX_Platform(),6436,162); addObject(new MovingX_Platform(),6837,162); addObject(new MovingX_Platform(),7238,162); addObject(new MovingX_Platform(),7639,162); addObject(new MovingX_Platform(),8040,162); addObject(new Mace(),5215,515); addObject(new Mace(),5837,515); addObject(new Mace(),6459,515); addObject(new Mace(),7081,515); addObject(new Mace(),7703,515); addObject(new Mace(),7703,515); addObject(new HighGround_Up(),8742,329); addObject(new Spike_Down(),8483,549); addObject(new Spike_Down(),8742,549); addObject(new Spike_Down(),8483,549); addObject(new Spike_Down(),8999,549); addObject(new Spike_Up(),8740,340); addObject(new Spike_Up(),8740,300); addObject(new Spike_Up(),8740,260); addObject(new Spike_Up(),8740,220); addObject(new Spike_Up(),8740,180); addObject(new Coin(),8482,122); addObject(new Coin(),8596,122); addObject(new Coin(),8754,61); addObject(new Coin(),8855,122); addObject(new Coin(),8974,122); addObject(new Ground_Left(),9178,28); addObject(new Ground_Left(),9178,86); addObject(new Ground_Left(),9178,144); addObject(new Ground_Center(),9235,144); addObject(new Ground_Center(),9285,144); addObject(new Ground_Center(),9345,144); addObject(new Ground_Center(),9405,144); addObject(new Ground_Center(),9465,144); addObject(new Ground_Center(),9525,144); addObject(new Mace(),9286,54); addObject(new MovingX_Platform(),9146,356); addObject(new MovingXPlatform_Faster(),9146,430); addObject(new Grass_Normal_Left(),9508,418); addObject(new Grass_Normal_Right(),9567,418); addObject(new Door_Orc(),9544,333); addObject(new Spike_Up(),5049,539); addObject(new Spike_Up(),5134,539); } }
if(getOneObjectAtOffset (0, getImage().getHeight()/2 - 2, Water.class)!= null) { Mace_Level Mace_Level = (Mace_Level)getWorld(); Mace_Level.decreaseLives(); Mace_Level.rebuildWorld(); }
int maX = mainActor.getX(); int maY = mainActor.getY(); removeObjects(objects); addObject(mainActor, maX, maY);
int maX = mainActor.getX(); int maY = mainActor.getY(); removeObjects(objects); addObject(mainActor, maX, maY);
java.lang.NullPointerException at greenfoot.World.addObject(World.java:412) at Scrooling_Worlds.addObject(Scrooling_Worlds.java:144) at Scrooling_Worlds.addObject(Scrooling_Worlds.java:150) at Mace_Level.rebuildWorld(Mace_Level.java:68) at Puppy_Player.act(Puppy_Player.java:65) at greenfoot.core.Simulation.actActor(Simulation.java:604) at greenfoot.core.Simulation.runOneLoop(Simulation.java:562) at greenfoot.core.Simulation.runContent(Simulation.java:221) at greenfoot.core.Simulation.run(Simulation.java:211)
objects.remove(mainActor); removeObjects(objects);
objects.remove(mainActor); removeObjects(objects);
public void rebuildWorld() { if (lives < 0) { stopMusic(); Greenfoot.setWorld(new GameOver_World()); } ammunition = 0; List objects = getObjects(null); objects.remove(mainActor); removeObjects(objects); buildWorld(); }
mainActor.setLocation(100, mainActor.getY());