package class2_1_DuckFactories_v6.swimBehaviors; import class2_1_DuckFactories_v6.Duck; import class2_1_DuckFactories_v6.DuckPond; import class2_1_DuckFactories_v6.swimBehaviors.SwimBehavior; import java.awt.*; public class HorizontalSwimming implements SwimBehavior { private Duck parent; private Point currentPos = new Point(); // the duck's current position private Point increment = new Point(); // the duck's incremental movement public HorizontalSwimming(Duck duck) { parent = duck; } /** * Horizontal swimming */ @Override public void swim() { if( (currentPos.x > (DuckPond.PONDSIZE-parent.image.getWidth(null))) // leaving the window's right edge || (currentPos.x < 0) ) { // ...or left edge increment.x = -increment.x; // reverse direction } currentPos.x += increment.x; // increment the position of the duck parent.setLocation(currentPos); // ...and update its location in the container } }