// // Butterfly.java // BodiesInASetting // // Created by Guy Lapalme on 20/05/05. // Copyright (c) 2005 Universite de Montreal. All rights reserved. // Modified in June 2015 // import java.awt.Image; import javax.swing.JPopupMenu; public class Butterfly extends AnimatedBody { private static final int INITSTEP = 10; Butterfly(){ super(""); step = INITSTEP; } // CLASS part Butterfly(String name, MyPoint pos){ super(name); step = INITSTEP; setPosition(pos); } // class variables and methods private static int nbAspects = 2; private static int nbDirections = 4; private static Image[][] film; private static JPopupMenu butterflyMenu; private static String[] butterflyMenuLabels = {"turn","flutter","visit","new step"}; public static void initialize(){ setting.registerAnimatedBody(Butterfly.class); film = initFilm("Butterfly",nbAspects,nbDirections); butterflyMenu = appendMenu(appendMenu(new JPopupMenu(),aniBodyMenuLabels), butterflyMenuLabels); } // INSTANCE part // Instance variables and their accessor methods int step; public int getStep(){ return step; } public void setStep(int s){ step = s; } public void turn(){ nextDirection(); } public void moveTo(MyPoint destination){ if (getPosition().getX() < destination.getX()) setDirection(0); else setDirection(2); MyPoint pos = getPosition(); double distance = destination.dist(pos); while(step0){ for(int i=0;i0 && newStep<100){ setStep(newStep); trace("setStep:"+step); } } else super.perform(action); setting.repaint(); } // MAIN for stand alone testing public static void main(String[] args){ Butterfly peter = new Butterfly("Peter",new MyPoint(100,100)); System.out.println(peter); peter.setStep(5); peter.turn(); System.out.println("After peter.setStep(5);peter.turn:"+peter); peter.moveTo(new MyPoint(200,200)); System.out.println("After rose.moveTo(200@200):"+peter); } // method main }