It compiles with no syntax errors but I get this error in the terminal when I run my program:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper.shot(Jumper.java:45)
at Jumper.act(Jumper.java:28)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper.shot(Jumper.java:45)
at Jumper.act(Jumper.java:28)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper.shot(Jumper.java:45)
at Jumper.act(Jumper.java:28)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper.shot(Jumper.java:45)
at Jumper.act(Jumper.java:28)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper.shot(Jumper.java:45)
at Jumper.act(Jumper.java:28)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper.shot(Jumper.java:45)
at Jumper.act(Jumper.java:28)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper.shot(Jumper.java:45)
at Jumper.act(Jumper.java:28)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper.shot(Jumper.java:45)
at Jumper.act(Jumper.java:28)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper2.shot(Jumper2.java:42)
at Jumper2.act(Jumper2.java:25)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper2.shot(Jumper2.java:42)
at Jumper2.act(Jumper2.java:25)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper2.shot(Jumper2.java:42)
at Jumper2.act(Jumper2.java:25)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper2.shot(Jumper2.java:42)
at Jumper2.act(Jumper2.java:25)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper2.shot(Jumper2.java:41)
at Jumper2.act(Jumper2.java:24)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper2.shot(Jumper2.java:41)
at Jumper2.act(Jumper2.java:24)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper2.shot(Jumper2.java:41)
at Jumper2.act(Jumper2.java:24)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper2.shot(Jumper2.java:41)
at Jumper2.act(Jumper2.java:24)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper2.shot(Jumper2.java:41)
at Jumper2.act(Jumper2.java:24)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:635)
at java.util.ArrayList.get(ArrayList.java:411)
at Jumper2.shot(Jumper2.java:41)
at Jumper2.act(Jumper2.java:24)
at greenfoot.core.Simulation.actActor(Simulation.java:594)
at greenfoot.core.Simulation.runOneLoop(Simulation.java:552)
at greenfoot.core.Simulation.runContent(Simulation.java:215)
at greenfoot.core.Simulation.run(Simulation.java:205)
Actors Jumper and Jumper 2 are identical except for controls, different images, etc.
Here is the code for Jumper2:
import greenfoot.*; public class Jumper2 extends Actor { int vSpeed = 0; int speed = 5; int accel = 1; int walk = 0; int backwalk = 0; int stand = 0; boolean touchingEnemy = false; public int aim = 0; int firing = 0; int reload = 0; int shootTimer = 0; int bar = 10; public void act() { controls(); fall(); checkFall(); change(); backchange(); shot(); if (reload == 1) { shootTimer++; } if(shootTimer == 20) { shootTimer = 0; reload = 0; } if (onGround()) { setLocation(getX(), getY() -1); } } public void shot() { qHealth qhealth = (qHealth) getWorld().getObjects(qHealth.class).get(0); if (isTouching(Bullet.class)) { bar--; } if (isTouching(BackBullet.class)) { bar--; } if (bar == 9) { qhealth.setImage("-1health.png"); } if (bar == 8) { qhealth.setImage("-2health.png"); } if (bar == 7) { qhealth.setImage("-3health.png"); } if (bar == 6) { qhealth.setImage("-4health.png"); } if (bar == 5) { qhealth.setImage("-5health.png"); } if (bar == 4) { qhealth.setImage("-6health.png"); } if (bar == 3) { qhealth.setImage("-7health.png"); } if (bar == 2) { qhealth.setImage("-8health.png"); } if (bar == 1) { qhealth.setImage("-9health.png"); } } public void controls() { if(Greenfoot.isKeyDown("right") && firing == 0) { setLocation ( getX() + speed, getY() ); walk++; stand = 0; aim = 0; } else if(Greenfoot.isKeyDown("left") && firing == 0) { setLocation ( getX() - speed, getY() ); backwalk++; stand = 1; aim = 1; } else{ if(stand == 0) { setImage("qstand.png"); } else if (stand == 1) { setImage("qbackstand.png"); } } if(Greenfoot.isKeyDown("m") && aim == 0) { setImage("qgun.png"); if(Greenfoot.isKeyDown("m") && aim == 0 && reload == 0){ firing = 1; reload = 1; shoot(); } } else if (Greenfoot.isKeyDown("m") && aim == 1) { setImage("qbackgun.png"); if(Greenfoot.isKeyDown("m") && aim == 1 && reload == 0){ firing = 1; reload = 1; backshoot(); } } else { firing = 0; } if (Greenfoot.isKeyDown("up")&& onGround()) { jump(); } } public void shoot() { qBullet qbullet = new qBullet(); getWorld().addObject(qbullet, getX() , getY()); qbullet.setRotation(getRotation()); qbullet.move(40.0); Greenfoot.playSound("gun.mp3"); } public void backshoot() { qBackBullet qbackbullet = new qBackBullet(); getWorld().addObject(qbackbullet, getX() , getY()); qbackbullet.setRotation(getRotation()); qbackbullet.move(-40.0); Greenfoot.playSound("gun.mp3"); } public void fall() { setLocation ( getX() , getY() + vSpeed ); vSpeed = vSpeed + accel; } public boolean onGround() { Actor under = getOneObjectAtOffset (0, getImage().getHeight()/2, Ground.class); return under != null; } public void checkFall() { if (onGround()) { vSpeed = 0; } else { fall(); } } public void jump() { vSpeed = -20; fall(); } public void change() { if(walk == 5) { setImage("qwalk1.png"); } if(walk == 10) { setImage("qwalk2.png"); } if(walk == 15) { setImage("qwalk3.png"); } if(walk == 20) { setImage("qwalk4.png"); } if(walk == 25) { setImage("qwalk5.png"); } if(walk == 30) { setImage("qwalk6.png"); } if(walk == 35) { setImage("qwalk7.png"); walk = 0; } } public void backchange() { if(backwalk == 5) { setImage("qbackwalk1.png"); } if(backwalk == 10) { setImage("qbackwalk2.png"); } if(backwalk == 15) { setImage("qbackwalk3.png"); } if(backwalk == 20) { setImage("qbackwalk4.png"); } if(backwalk == 25) { setImage("qbackwalk5.png"); } if(backwalk == 30) { setImage("qbackwalk6.png"); } if(backwalk == 35) { setImage("qbackwalk7.png"); backwalk = 0; } } }