/************************************************************ /* Student: YOURNAME /* Author: Dr. Parson /* Original Creation Date: 4/15/2018 /* Student enhancement due date: 5/4/2018 /* Sketch name: PaintDome2018 /* USER INTERACTION: /* +STUDENTID\n to add a student Shapey. /* -STUDENTID\n to to remove a student Shapey. /* 'c' to clear display (erase the paint) /* 'r' to reset to start of program, with no Shapeys /* 'f' to freeze the display /* 'F' to freeze and go into find mode for stopping fast-moving Shapeys. /* '~' calls configure() on all visible Shapeys to move them somewhere else. /* See studentid-to-student mapping below. /* CLICK & HOLD MOUSE BUTTON TO SELECT A SHAPEY. WHILE HOLDING MOUSE KEY: /* Hold x key, drag mouse, release mouse with x still down to change xspeed. /* Hold y key, drag mouse, release mouse with y still down to change yspeed. /* Hold h key, drag mouse, release mouse with x still down to change hue speed. /* Hold s key, drag mouse, release mouse with x still down to change a property that you define. /* Parson's s changes rotate speed. /* Hit LEFT, RIGHT, UP, or DOWN KEY to change a property that you define. /* STUDENT WORK GOES INTO A CLASS BELOW NAMED AFTER YOUR KUTZTOWN EMAIL ID. /* See interface Shapey, class parson, and your individual class. *********************************************************/ import java.util.HashMap ; // Map letters A..Z and a..z to student Shapey objects. HashMap allshapes = new HashMap(); HashMap showshapes = new HashMap(); Shapey currentShapey = null ; int startMouseX = 0, startMouseY = 0 ; PImage clippingCircle ; // This clips the display to a circle in the planetarium dome. color backgroundColor ; boolean eraseMode = true ; // 'e' toggles this, true runs background(). boolean freezeMode = false ; // toggle frozen/unfrozen display boolean findMode = false ; // find among the clutter int diameter = 0, radius = 0 ; // diameter and radius of central clipping circle void setup() { fullScreen(P2D); // P2D renderer enables textMode(SHAPE) textMode(SHAPE) ; // Hue goes 0..960 (see Tools -> Color Selector). // Saturation, Brightness, and Alpha limits are 0..100%. // Do not use RGB colorMode values in this program. colorMode(HSB, 360, 100, 100, 100); backgroundColor = color(0, 0, 0); // brightness of 0% is always black background(backgroundColor); rectMode(CENTER); ellipseMode(CENTER); imageMode(CENTER); clippingCircle = loadImage("CenteredClippingCircle.png"); } void draw() { pushMatrix(); // draw() plots relative to center of dome. translate(width/2, height/2); // Plot relative to center of the dome. diameter = (height < width) ? height : width ; // sets diameter to the smaller radius = diameter / 2 ; if (allshapes.size() == 0) { // First time into draw(), construct Shapeys after above steps. setupShapeys(); } if (freezeMode) { popMatrix(); return; } colorMode(HSB, 360, 100, 100, 100); rectMode(CENTER); ellipseMode(CENTER); imageMode(CENTER); for (Shapey nextShape : showshapes.values()) { // This kind of for loop loops over all values in showshapes. colorMode(HSB, 360, 100, 100, 100); // in case a previous call to rectMode(CENTER); // display() changed these: ellipseMode(CENTER); imageMode(CENTER); shapeMode(CENTER); noTint(); noFill(); noStroke(); strokeWeight(1); nextShape.display(); if (currentShapey == nextShape) { currentShapey.select(); } else if (! findMode) { nextShape.move(); if (currentShapey == null && mousePressed) { // check to see whether this shape crosses the mouse while in motion int [] bbox = nextShape.getBoundingBoxCorners(); println("Mouse at " + mouseX + "," + mouseY); if (bbox == null || bbox.length != 4) { System.err.println("ERROR, " + nextShape.getName() + " does not implement getBoundingBoxCorners()"); } else if (mouseX >= bbox[0] && mouseX <= bbox[2] && mouseY >= bbox[1] && mouseY <= bbox[3]) { currentShapey = nextShape ; println("GOT A SHAPE!"); findMode = false ; currentShapey.select(); startMouseX = mouseX ; startMouseY = mouseY ; } } } } tint(0, 0, 0, 100); // undo any earlier tint, HSB mode fill(0, 0, 0, 100); // likewise fill and stroke stroke(0, 0, 0, 100); image(clippingCircle, 0, 0, diameter, diameter); strokeWeight(1); popMatrix(); // draw() plots relative to center of dome. rectMode(CORNER); // just for plotting the clipping boxes rect(0,0, (width-diameter)/2, height); rect((width-diameter)/2+diameter,0, (width-diameter)/2, height); rectMode(CENTER); clip(width/2, height/2, diameter, diameter); // uses imageMode to clip boundaries. } //<>// // end draw() function void mousePressed() { currentShapey = null ; for (Shapey nextShape : showshapes.values()) { int [] bbox = nextShape.getBoundingBoxCorners(); println("Mouse at " + mouseX + "," + mouseY); if (bbox == null || bbox.length != 4) { System.err.println("ERROR, " + nextShape.getName() + " does not implement getBoundingBoxCorners()"); } else if (mouseX >= bbox[0] && mouseX <= bbox[2] && mouseY >= bbox[1] && mouseY <= bbox[3]) { currentShapey = nextShape ; println("GOT A SHAPE!"); // Keep looking in display order for the one on top ; } } if (currentShapey != null) { findMode = false ; currentShapey.select(); startMouseX = mouseX ; startMouseY = mouseY ; } } void mouseReleased() { if (currentShapey != null) { int xdelta = mouseX - startMouseX ; if (abs(xdelta) < 10) { // min 10 pixels for movement xdelta = 0 ; } int ydelta = mouseY - startMouseY ; if (abs(ydelta) < 10) { // min 10 pixels for movement ydelta = 0 ; } xdelta= xdelta / 10 ; // scale back the 10 pixel leeway ydelta = ydelta / 10 ; int chgamount ; if (abs(xdelta) > abs(ydelta)) { chgamount = xdelta ; // use higher magnitude mouse movement } else { chgamount = ydelta ; } if (keyPressed && (key == 'x' || key == 'y' || key == 'w' || key == 'h' || key == 'h' || key == 's')) { currentShapey.changeSpeed(key, chgamount); } currentShapey = null ; // done with it } } String command = "" ; void keyPressed() { if (key == CODED) { if (currentShapey != null) { if (keyCode == DOWN) { currentShapey.setUpDown(true); } else if (keyCode == UP) { currentShapey.setUpDown(false); } else if (keyCode == RIGHT) { currentShapey.setLeftRight(true); } else if (keyCode == LEFT) { currentShapey.setLeftRight(false); } } } else { if (key == '+' || key == '-') { command = "" + key ; } else if (key == '\n') { //println("DEBUG command after newline is " + command); if (command.length() > 1 && command.charAt(0) == '+') { Shapey thisshape = allshapes.get(command.substring(1)); if (thisshape != null) { showshapes.put(command.substring(1), thisshape); thisshape.configure(); } else { System.err.println("ERROR, no shape called " + command.substring(1)); } } else if (command.length() > 1 && command.charAt(0) == '-') { showshapes.remove(command.substring(1)); } command = ""; } else if (command.length() >= 1) { command = command + key ; println("DEBUG grows to " + command); } else if (key == 'c') { background(backgroundColor); } else if (key == 'r') { background(backgroundColor); showshapes.clear(); } else if (key == 'f') { freezeMode = ! freezeMode ; } else if (key == 'F') { findMode = true ; background(backgroundColor); } else if (key == '~') { for (Shapey nextShape : showshapes.values()) { nextShape.configure(); // shuffle them } } } } void setupShapeys() { allshapes.clear(); showshapes.clear(); allshapes.put("parson", new parson()); allshapes.put("kbrow040", new kbrow040()); allshapes.put("rcaud574", new rcaud574()); allshapes.put("acoll501", new acoll501()); allshapes.put("dgree584", new dgree584()); allshapes.put("fhagu372", new fhagu372()); allshapes.put("shart315", new shart315()); allshapes.put("dhine462", new dhine462()); allshapes.put("ckins253", new ckins253()); allshapes.put("skoen813", new skoen813()); allshapes.put("glich108", new glich108()); allshapes.put("mmccl440", new mmccl440()); allshapes.put("lmick762", new lmick762()); allshapes.put("tnova283", new tnova283()); allshapes.put("aobri059", new aobri059()); allshapes.put("mpavl165", new mpavl165()); allshapes.put("jreyn803", new jreyn803()); allshapes.put("msass160", new msass160()); allshapes.put("tseda854", new tseda854()); allshapes.put("ssmit778", new ssmit778()); allshapes.put("bsoel323", new bsoel323()); allshapes.put("atamm452", new atamm452()); allshapes.put("etomc803", new etomc803()); allshapes.put("bwalt953", new bwalt953()); allshapes.put("sweav125", new sweav125()); allshapes.put("awita169", new awita169()); allshapes.put("nzimm294", new nzimm294()); allshapes.put("baumi500", new baumi500()); allshapes.put("abern866", new abern866()); allshapes.put("lburb538", new lburb538()); allshapes.put("fcern737", new fcern737()); allshapes.put("kchap843", new kchap843()); allshapes.put("jchin724", new jchin724()); allshapes.put("jcres451", new jcres451()); allshapes.put("sdanw764", new sdanw764()); allshapes.put("sdieh569", new sdieh569()); allshapes.put("jeaso586", new jeaso586()); allshapes.put("dfiel564", new dfiel564()); allshapes.put("mfred815", new mfred815()); allshapes.put("ngart925", new ngart925()); allshapes.put("agill098", new agill098()); allshapes.put("egraf294", new egraf294()); allshapes.put("ehads867", new ehads867()); allshapes.put("ahayn395", new ahayn395()); allshapes.put("jkune919", new jkune919()); allshapes.put("amark384", new amark384()); allshapes.put("emora611", new emora611()); allshapes.put("amorg397", new amorg397()); allshapes.put("csate335", new csate335()); allshapes.put("csawy912", new csawy912()); allshapes.put("lshil094", new lshil094()); allshapes.put("aspan279", new aspan279()); allshapes.put("csuco501", new csuco501()); allshapes.put("jwenr390", new jwenr390()); } // This interface Shapey specifies the functions STUDENTS have to write. // Class parson shows one possible class. You must customize your own. // You can even adapt your Avatar from previous assignments/ // IMPORTANT: The draw() function does a translate(width/2, height/2) // so that 0,0 is at the center (top) of the planetarium dome. // Your x and y coordinates may range from -radius to +raduis; radius // is a global variable that is the radius of the planetarium dome. // See class parson's display() and move() functions to understand this. interface Shapey { // configure sets some of your objects data fields to constants or random values. // Avoid going outside -radius to +radius in x and y! // Do not go outside 0..360 in hue. We are using the Hue-Saturation-Brightness color model. // You MUST load and store a PFont and you MAY load a custom PFont file in configure(). void configure(); // display() uses pushMatrix() and translate(x,y) as previous display() functions. // Its final command should be a paired popMatrix(). See parson.display() for an example. // display() MUST use a PFont loaded by configure and display some text. // See the Processing library documentation under Typography. // https://processing.org/reference/ // parson.display() is boring. Do something that is not boring. void display(); // Move adjusts location and speed variables for x, y, hue, and other data fields. void move(); // setLeftRight is called when the LEFT or RIGHT key is hit while the Shapey is selected. // Student can decide how to interpret setLeftRight. void setLeftRight(boolean isRight); // setUpDown is called when the UP or DOWN key is hit while the Shapey is selected. // Student can decide how to interpret setUpDown. void setUpDown(boolean isDown); // changeSpeed changes some property of the Shapey, where speedType of 'x' // means x speed, 'y' means y speed, 'h' means hue speed of change, and // 'W' 'H' 's' mean Shapey width, height, and student-selected property, respectively. // You need to implement at least 'x' 'y' 'h'. void changeSpeed(char speedType, int changeAmount); // select() is called to highlight this Shapey on the display by periodic blinking when // the user selects it via the mouse. void select() ; // getBoundingBoxCorners returns a 4-elemen array with the // LEFTx, UPPERy, RIGHTx, and LOWERy coordinates of the Shapey object, // referenced against the 0,0 in the original upper left corner of the display. int [] getBoundingBoxCorners(); // getName returns the name of the student (and class) as a String. String getName(); } class parson implements Shapey { int x, y, hue, mywidth, myheight ; int speedx, speedy, speedhue, speedwidth, speedheight ; float scalex, scaley, rotDegrees, speedscalex, speedscaley, speedRotate ; PFont myfont ; String mytext = "P" ; int brightness = 100 ; // default 100% int selectCounter = 0 ; void configure() { x = round(random(-radius, radius)); y = round(random(-radius, radius)); hue = round(random(0, 360)); mywidth = round(random(20, 100)); myheight = round(random(20, 100)); // speedx = speedy = speedhue = speedwidth = speedheight = 0; scalex = scaley = 1.0 ; // rotDegrees = speedscalex = speedscaley = speedRotate = 0.0 ; myfont = createFont("TimesNewRoman", 100); } // parson.display() is boring. Do something that is not boring. void display() { pushMatrix(); translate(x,y); if (rotDegrees != 0.0) { rotate(radians(rotDegrees)); } if (scalex != 1.0 || scaley != 1.0) { scale(scalex, scaley); } textMode(SHAPE); textAlign(CENTER, CENTER); textFont(myfont); fill(hue, 100, brightness, 100); stroke(hue, 100, 100, 100); if (brightness == 0) { stroke(0,0,0); ellipse(0, 0, 60, 60); } text(mytext, 0, 0); if (brightness == 0) { // monochrome test, put white text within black outline fill(hue, 0, 100, 100); stroke(hue, 0, 100, 100); scale(.25, .25); text(mytext, 0, 0); } popMatrix(); } void move() { x += speedx ; if (x <= -radius || x >= radius) { speedx = - speedx ; } y += speedy ; if (y <= -radius || y >= radius) { speedy = - speedy ; } mywidth += speedwidth ; if (mywidth <= 10 || mywidth >= 100) { speedwidth = - speedwidth ; } myheight += speedheight ; if (myheight <= 10 || myheight >= 100) { speedheight = - speedheight ; } hue += speedhue ; if (hue <= 0 || hue >= 360) { speedhue = - speedhue ; } scalex += speedscalex ; if (scalex <= 0.5 || scalex >= 2.0) { speedscalex = - speedscalex ; } scaley += speedscaley ; if (scaley <= 0.5 || scaley >= 2.0) { speedscaley = - speedscaley ; } rotDegrees += speedRotate ; while (rotDegrees < 0) { rotDegrees += 360.0 ; } while (rotDegrees > 0360.0) { rotDegrees -= 360.0 ; } } // I am using LEFT-RIGHT for color vs. monochrome. Document how you use it. void setLeftRight(boolean isRight) { if (isRight) { brightness = 100 ; } else { brightness = 0 ; } } // I am using UP-DOWN for both scalex & scaley speeds. // Document how you use it. void setUpDown(boolean isDown) { if (isDown) { speedscalex -= 0.1 ; speedscaley += 0.1 ; } else { speedscalex += 0.1 ; speedscaley -= 0.1 ; } } void changeSpeed(char speedType, int changeAmount) { if (speedType == 'x') { speedx += changeAmount ; if (changeAmount == 0) { // reset to 0 in this case speedx = 0; } } else if (speedType == 'y') { speedy += changeAmount ; if (changeAmount == 0) { // reset to 0 in this case speedy = 0; } } else if (speedType == 'h') { speedhue += changeAmount ; if (changeAmount == 0) { // reset to 0 in this case speedhue = 0; } } else if (speedType == 'W') { speedwidth += changeAmount ; if (changeAmount == 0) { // reset to 0 in this case speedwidth = 0; } } else if (speedType == 'H') { speedheight += changeAmount ; if (changeAmount == 0) { // reset to 0 in this case speedheight = 0; } } else if (speedType == 's') { speedRotate += changeAmount ; if (changeAmount == 0) { speedRotate = 0 ; } } } void select() { // COMMENTS ADDED DEC. 2: Count down and make some // periodic display change when the framework calls. // select(). The change can be hue or something else. if (selectCounter == 0) { selectCounter = 10 ; // blink once every 10 frames } else { selectCounter-- ; if (selectCounter == 0) { hue = (hue + 180) % 360 ; // opposite color selectCounter = 10 ; } } } int [] getBoundingBoxCorners() { int [] result = new int[4]; //upper-left X, Y, lower-right X,Y textMode(SHAPE); textAlign(CENTER, CENTER); textFont(myfont); // COMMENTS ADDED DEC. 2: In the code below, textwidth and textheight // are just the pixel width and height of my Shapey as scaled and drawn // in display(). Just use the pixel width and height of your Shapey // for those variables. The rounded calculations inside the // parentheses just find the upper left x,y, and the lower right x,y, // of the Shapey's bounding box, in terms of its center's x,y location. // The addition of "+ width/2" and "+ height/2" outside the parentheses // is so getBoundingBoxCorners() returns coordinates relative to the // initial left,top 0,0 point of the display, which is the coordinate // reference of mosueX, mouseY. getBoundingBoxCorners() is used to // test for collision with the mouse by the framework. float textheight = textAscent() + textDescent() ; // height in pixels float textwidth = textWidth(mytext); textwidth = scalex * textwidth ; // ignore rotate textheight = scaley * textheight ; result[0] = round(x - textwidth / 2.0) + width/2 ; // half of text that is left of center result[1] = round(y - textheight / 2.0) + height/2 ; // half of text that is above center result[2] = round(x + textwidth / 2.0) + width/2 ; // half of text that is right of center result[3] = round(y + textheight / 2.0) + height/2 ; // half of text that is below center //println("BB " + result[0] + "," + result[1] + " " + result[2] + "," + result[3]); return result ; } String getName() { return "parson"; } } class kbrow040 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "kbrow040"; } } class rcaud574 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "rcaud574"; } } class acoll501 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "acoll501"; } } class dgree584 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "dgree584"; } } class fhagu372 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "fhagu372"; } } class shart315 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "shart315"; } } class dhine462 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "dhine462"; } } class ckins253 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "ckins253"; } } class skoen813 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "skoen813"; } } class glich108 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "glich108"; } } class mmccl440 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "mmccl440"; } } class lmick762 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "lmick762"; } } class tnova283 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "tnova283"; } } class aobri059 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "aobri059"; } } class mpavl165 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "mpavl165"; } } class jreyn803 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "jreyn803"; } } class msass160 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "msass160"; } } class tseda854 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "tseda854"; } } class ssmit778 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "ssmit778"; } } class bsoel323 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "bsoel323"; } } class atamm452 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "atamm452"; } } class etomc803 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "etomc803"; } } class bwalt953 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "bwalt953"; } } class sweav125 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "sweav125"; } } class awita169 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "awita169"; } } class nzimm294 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "nzimm294"; } } class baumi500 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "baumi500"; } } class abern866 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "abern866"; } } class lburb538 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "lburb538"; } } class fcern737 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "fcern737"; } } class kchap843 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "kchap843"; } } class jchin724 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "jchin724"; } } class jcres451 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "jcres451"; } } class sdanw764 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "sdanw764"; } } class sdieh569 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "sdieh569"; } } class jeaso586 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "jeaso586"; } } class dfiel564 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "dfiel564"; } } class mfred815 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "mfred815"; } } class ngart925 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "ngart925"; } } class agill098 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "agill098"; } } class egraf294 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "egraf294"; } } class ehads867 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "ehads867"; } } class ahayn395 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "ahayn395"; } } class jkune919 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "jkune919"; } } class amark384 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "amark384"; } } class emora611 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "emora611"; } } class amorg397 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "amorg397"; } } class csate335 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "csate335"; } } class csawy912 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "csawy912"; } } class lshil094 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "lshil094"; } } class aspan279 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "aspan279"; } } class csuco501 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "csuco501"; } } class jwenr390 implements Shapey { void configure() { } void display() { } void move() { } void setLeftRight(boolean isRight) { } void setUpDown(boolean isDown) { } void changeSpeed(char speedType, int changeAmount) { } void select() { } int [] getBoundingBoxCorners() { return null ; } String getName() { return "jwenr390"; } }