This is the same project I have posted about recently: Click Here
This time when I try to run it the greenfoot terminal pops up and throws an exception:
My World code is here:
My 'Scenery' code is here:
My 'Platform' code is here:
And finally my 'Jumper' code is here: (I commented out my old fall, jump and move methods as this game doesn't require them)
Lastly there's a video summarising it (feel free to pause): Click Here
import greenfoot.*;
public class OverWorld extends World
{
public OverWorld()
{
super(1200, 800, 1, false); //Creates a new world measuring 1200 x 800 cells with a cell size of 1x1 pixels and no boundaries.
prepare();
}
private Jumper jumper;
public Jumper getDidBumpHead() {
return jumper;
}
public Jumper getIsOnSolidGround() {
return jumper;
}
public Jumper getCanMoveLeft() {
return jumper;
}
public Jumper getCanMoveRight() {
return jumper;
}
private void prepare()
{
setPaintOrder(Jumper.class, Platform.class);
Jumper jumper = new Jumper();
addObject(jumper, 600, 400);
Scenery scenery = new Scenery(3600, 2400);
addObject(scenery, 600, 400);
Platform platform = new Platform(50, 1200);
addObject(platform, 1800, 400);
}
}import greenfoot.*;
public class Scenery extends Actor
{
private int step = 3;
private boolean DBH = false;
private boolean IOSG = false;
private boolean CML = false;
private boolean CMR = false;
public void boolSet() {
if(((OverWorld) getWorld()).getDidBumpHead().didBumpHead()) DBH = true;
else if(!((OverWorld) getWorld()).getDidBumpHead().didBumpHead()) DBH = false;
if(((OverWorld) getWorld()).getIsOnSolidGround().isOnSolidGround()) IOSG = true;
else if(!((OverWorld) getWorld()).getIsOnSolidGround().isOnSolidGround()) IOSG = false;
if(((OverWorld) getWorld()).getCanMoveLeft().canMoveLeft()) CML = true;
else if(!((OverWorld) getWorld()).getCanMoveLeft().canMoveLeft()) CML = false;
if(((OverWorld) getWorld()).getCanMoveRight().canMoveRight()) CMR = true;
else if(!((OverWorld) getWorld()).getCanMoveRight().canMoveRight()) CMR = false;
}
public void Move() {
int y = getY();
int x = getX();
if(Greenfoot.isKeyDown("w") && !DBH) y += step;
if(Greenfoot.isKeyDown("s") && !IOSG) y -= step;
if(Greenfoot.isKeyDown("a") && CML) x += step;
if(Greenfoot.isKeyDown("d") && CMR) x -= step;
setLocation(x, y);
}
public Scenery(int width, int height) {
GreenfootImage image = getImage();
image.scale(width, height);
setImage(image);
}
public void act()
{
boolSet();
Move();
}
}import greenfoot.*;
public class Platform extends Actor
{
private int step = 3;
private boolean DBH = false;
private boolean IOSG = false;
private boolean CML = false;
private boolean CMR = false;
public void boolSet() {
if(((OverWorld) getWorld()).getDidBumpHead().didBumpHead()) DBH = true;
else if(!((OverWorld) getWorld()).getDidBumpHead().didBumpHead()) DBH = false;
if(((OverWorld) getWorld()).getIsOnSolidGround().isOnSolidGround()) IOSG = true;
else if(!((OverWorld) getWorld()).getIsOnSolidGround().isOnSolidGround()) IOSG = false;
if(((OverWorld) getWorld()).getCanMoveLeft().canMoveLeft()) CML = true;
else if(!((OverWorld) getWorld()).getCanMoveLeft().canMoveLeft()) CML = false;
if(((OverWorld) getWorld()).getCanMoveRight().canMoveRight()) CMR = true;
else if(!((OverWorld) getWorld()).getCanMoveRight().canMoveRight()) CMR = false;
}
public Platform() {
this(100, 25);
}
public void Move()
{
int y = getY();
int x = getX();
if(Greenfoot.isKeyDown("w") && !DBH) y += step;
if(Greenfoot.isKeyDown("s") && !IOSG) y -= step;
if(Greenfoot.isKeyDown("a") && CML) x += step;
if(Greenfoot.isKeyDown("d") && CMR) x -= step;
setLocation(x, y);
}
public Platform(int width, int height) {
GreenfootImage image = getImage();
image.scale(width, height);
setImage(image);
}
public void act()
{
boolSet();
Move();
}
}
import greenfoot.*;
public class Jumper extends Actor
{
private final int GRAVITY = 1;
private final int STEP = 5;
private int velocity;
private int aniTimeD = 0;
private int aniTimeA = 0;
private int aniTimeW = 0;
private int aniTimeS = 0;
private int imageHeight = 100;
private int imageWidth = 75;
public Jumper() {
this(75, 100);
velocity = 0;
}
public Jumper(int width, int height) {
GreenfootImage image = getImage();
image.scale(width, height);
setImage(image);
}
public void act()
{
/**fall();
if (Greenfoot.isKeyDown("space") && isOnSolidGround()) jump();
move();**/
if(aniTimeD == 19) aniTimeD = 0;
if(aniTimeA == 19) aniTimeA = 0;
if(aniTimeW == 19) aniTimeW = 0;
if(aniTimeS == 19) aniTimeS = 0;
GreenfootImage image = getImage();
if (Greenfoot.isKeyDown("w") && !Greenfoot.isKeyDown("a") && !Greenfoot.isKeyDown("s") && !Greenfoot.isKeyDown("d") && !didBumpHead())
{
aniTimeW = aniTimeW + 1;
if (aniTimeW == 1) setImage(new GreenfootImage("GuyBack.png"));
if (aniTimeW == 7) setImage(new GreenfootImage("GuyBack2.png"));
if (aniTimeW == 13) setImage(new GreenfootImage("GuyBack3.png"));
}
if (!Greenfoot.isKeyDown("w") && !Greenfoot.isKeyDown("a") && Greenfoot.isKeyDown("s") && !Greenfoot.isKeyDown("d") && !isOnSolidGround())
{
aniTimeD = aniTimeD + 1;
if (aniTimeD == 1) setImage(new GreenfootImage("GuyFront.png"));
if (aniTimeD == 7) setImage(new GreenfootImage("GuyFront2.png"));
if (aniTimeD == 13) setImage(new GreenfootImage("GuyFront3.png"));
}
if (!Greenfoot.isKeyDown("w") && !Greenfoot.isKeyDown("a") && !Greenfoot.isKeyDown("s") && Greenfoot.isKeyDown("d") && canMoveRight())
{
aniTimeD = aniTimeD + 1;
if (aniTimeD == 1) setImage(new GreenfootImage("GuyRight.png"));
if (aniTimeD == 7) setImage(new GreenfootImage("GuyRight2.png"));
if (aniTimeD == 13) setImage(new GreenfootImage("GuyRight3.png"));
}
if (!Greenfoot.isKeyDown("w") && Greenfoot.isKeyDown("a") && !Greenfoot.isKeyDown("s") && !Greenfoot.isKeyDown("d") && canMoveLeft())
{
aniTimeA = aniTimeA + 1;
if (aniTimeA == 1) setImage(new GreenfootImage("GuyLeft.png"));
if (aniTimeA == 7) setImage(new GreenfootImage("GuyLeft2.png"));
if (aniTimeA == 13) setImage(new GreenfootImage("GuyLeft3.png"));
}
}
/**public void fall() {
setLocation(getX(), getY() + velocity);
if (isOnSolidGround()) {
velocity = 0;
while (isOnSolidGround()) {
setLocation(getX(), getY() - 1);
}
setLocation(getX(), getY() + 1);
}
else if (velocity < 0 && didBumpHead()) {
velocity = 0;
while (didBumpHead()) {
setLocation(getX(), getY() + 1);
}
}
else velocity += GRAVITY;
}**/
public void jump() {
velocity = -20;
}
/**public void move() {
int y = getY();
int x = getX();
if(Greenfoot.isKeyDown("a") && canMoveLeft()) x -= STEP;
if(Greenfoot.isKeyDown("d") && canMoveRight()) x += STEP;
setLocation(x, y);
}**/
public boolean isOnSolidGround() {
boolean isOnGround = false;
if (getY() > getWorld().getHeight() - 50) isOnGround = true;
int imageWidth = getImage().getWidth();
int imageHeight = getImage().getHeight();
if(getOneObjectAtOffset(imageWidth / -2, imageHeight / 2, Platform.class) != null ||
getOneObjectAtOffset(imageWidth / 2, imageHeight / 2, Platform.class) != null)
isOnGround = true;
return isOnGround;
}
public boolean didBumpHead() {
boolean bumpedHead = false;
int imageWidth = getImage().getWidth();
int imageHeight = getImage().getHeight();
if(getOneObjectAtOffset(imageWidth / -2, imageHeight / -2, Platform.class) != null ||
getOneObjectAtOffset(imageWidth / 2, imageHeight / -2, Platform.class) != null)
bumpedHead = true;
return bumpedHead;
}
public boolean canMoveLeft() {
boolean canMoveLeft = true;
int imageWidth = getImage().getWidth();
int imageHeight = getImage().getHeight();
if(getOneObjectAtOffset(imageWidth / -2 - STEP, imageHeight / -2, Platform.class) != null ||
getOneObjectAtOffset(imageWidth / -2 - STEP, imageHeight / 2 - 1, Platform.class) != null)
canMoveLeft = false;
return canMoveLeft;
}
public boolean canMoveRight() {
boolean canMoveRight = true;
int imageWidth = getImage().getWidth();
int imageHeight = getImage().getHeight();
if(getOneObjectAtOffset(imageWidth / 2 + STEP, imageHeight / -2, Platform.class) != null ||
getOneObjectAtOffset(imageWidth / 2 + STEP, imageHeight / 2 - 1, Platform.class) != null)
canMoveRight = false;
return canMoveRight;
}
}

