i have two actors under the same superclass "Pedestrian". One of the actors is called villager and I want him to turn into a frog upon contact with the other actor called "EvilWitch".
Heres the code for the pedestrian superclass:
heres the code for villager:
and heres the code for the evil witch:
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * A Pedestrian that tries to walk across the street */ public abstract class Pedestrian extends SuperSmoothMover { protected double speed; protected double maxSpeed; protected int direction; // direction is always -1 or 1, for moving down or up, respectively protected boolean awake; public Pedestrian() { this(1); } public Pedestrian(int direction) { // choose a random speed maxSpeed = Math.random() * 2 + 1; speed = maxSpeed; // start as awake awake = true; this.direction = direction; } /** * Act - do whatever the Pedestrian wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void move() { // If there is a v if (awake){ if (getOneObjectAtOffset(0, (int)(direction * getImage().getHeight()/2 + (int)(direction * speed)), Vehicle.class) == null){ //setLocation (getX(), getY() + (speed*direction)); setLocation(getPreciseX(), getPreciseY()+speed*direction); } if (direction == -1 && getY() < 100){ getWorld().removeObject(this); } else if (direction == 1 && getY() > 550){ getWorld().removeObject(this); } } } /** * Method to cause this Pedestrian to become knocked down - stop moving, turn onto side */ public void knockDown () { speed = 0; setRotation (90); awake = false; } public void rooted () { speed = maxSpeed/2; } public void frogged() { speed = maxSpeed/3; } public void grabbed() { } /** * Method to allow a downed Pedestrian to be healed */ public void healMe () { speed = maxSpeed; setRotation (0); awake = true; } public boolean isAwake () { return awake; } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Villager here. * * @author (your name) * @version (a version number or a date) */ public class Villager extends Pedestrian { private GreenfootImage image; public Villager(int dir) { super(dir); image = getImage(); image.scale(image.getWidth() - 340, image.getHeight() - 340); setImage(image); } /** * Act - do whatever the Villager wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { move(); } public void rooted() { speed = maxSpeed/2; image = new GreenfootImage("rootedvillager.png"); image.scale(image.getWidth() - 340, image.getHeight() - 340); setImage(image); } public void frogged() { speed = maxSpeed/3; image = new GreenfootImage("frog.png"); image.scale(image.getWidth() - 65, image.getHeight() - 65); setImage(image); } public void grabbed() { } }
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class EvilWitch here. * * @author (your name) * @version (a version number or a date) */ public class EvilWitch extends Pedestrian { public EvilWitch(int dir) { super(dir); GreenfootImage image = getImage(); image.scale(image.getWidth() - 280, image.getHeight() - 290); setImage(image); } /** * Act - do whatever the Villager wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { move(); } public boolean checkHitPedestrian () { Villager v = (Villager)getOneObjectAtOffset((int)speed + getImage().getWidth()/2, 0, Villager.class); if (v != null){ v.frogged(); return true; } return false; } }