Change 'Laser' to 'LaserWall' and correct the spelling of 'connectdLaser'.
public class Player extends Actor { public void act() { movement(); } public Player() { GreenfootImage myImage = getImage(); int myNewHeight = (int)myImage.getHeight()/3; int myNewWidth = (int)myImage.getWidth()/3; myImage.scale(myNewWidth, myNewHeight); } public void movement() { if(Greenfoot.isKeyDown("right")) { setRotation(0); if(getOneObjectInFront(Wall.class)==null) if(getOneObjectInFront(Maze.class)==null) if(getOneObjectInFront(LaserWall.class)==null) move(5); } if(Greenfoot.isKeyDown("left")) { setRotation(180); if(getOneObjectInFront(Wall.class)==null) if(getOneObjectInFront(Maze.class)==null) if(getOneObjectInFront(LaserWall.class)==null) move(5); } if(Greenfoot.isKeyDown("up")) { setRotation(270); if(getOneObjectInFront(Wall.class)==null) if(getOneObjectInFront(Maze.class)==null) if(getOneObjectInFront(LaserWall.class)==null) move(5); } if(Greenfoot.isKeyDown("down")) { setRotation(90); if(getOneObjectInFront(Wall.class)==null) if(getOneObjectInFront(Maze.class)==null) if(getOneObjectInFront(LaserWall.class)==null) move(5); } } private Actor getOneObjectInFront(Class c) { GreenfootImage myImage = getImage(); int distanceToFront = myImage.getWidth(); int xOffset = (int)Math.ceil(distanceToFront*Math.cos(Math.toRadians(getRotation()))); int yOffset = (int)Math.ceil(distanceToFront*Math.sin(Math.toRadians(getRotation()))); return (getOneObjectAtOffset(xOffset, yOffset, c)); } }
import greenfoot.*; public class LaserButton extends Actor { private static final GreenfootImage locked = new GreenfootImage("lock.png"); private static final GreenfootImage opened = new GreenfootImage("open.png"); private LaserWall laser; public LaserButton(LaserWall actor) { laser = actor; setImage(locked); } public void act() { if (laser.getWorld() != null && isTouching Player.class)) { getWorld().removeObject(laser); setImage(opened); } } }
LaserWall laser = new LaserWall(); addObject(laser, << wherever >>); LaserButton button = new LaserButton(laser); addObject(button, << wherever >>); // this button will remove laser added to world two lines up