package backend; import java.awt.geom.Line2D; import java.util.ArrayList; public class Roomba { private ArrayList<Line2D> lines = new ArrayList<Line2D>(); private static ArrayList<SensorImage> images = new ArrayList<SensorImage>(); private double angle = 0; private double x = 0; private double y = 0; public Roomba() { this.x = 0; this.y = 0; this.angle = 0; SensorImage meme = new SensorImage(1500,610, "ad.png"); images.add(meme); clearBump(); clearCliff(); } public void updateBumpData(char c) { clearBump(); SensorImage bumpImage = new SensorImage(1419, 50, "untriggeredBumpL.png"); if (c == '0') { bumpImage = new SensorImage(1419, 50, "triggeredBumpL.png"); } else if (c == '1') { bumpImage = new SensorImage(1569, 50, "triggeredBumpR.png"); } images.add(bumpImage); } public void updateCliffData(char c) { clearCliff(); SensorImage newImage = new SensorImage(1359, 190, "greysquare.png"); switch (c) { case '0': newImage = new SensorImage(1359, 190, "bluesquare.png"); // leftLine break; case '1': newImage = new SensorImage(1449, 70, "bluesquare.png"); // frontLeftLine = 1; break; case '2': newImage = new SensorImage(1539, 70, "bluesquare.png"); // frontRightLine = 1; break; case '3': newImage = new SensorImage(1629, 190, "bluesquare.png"); // sideRightLine = 1; break; } images.add(newImage); } public void updateLineData(char c) { clearCliff(); SensorImage newImage = new SensorImage(1359, 190, "greysquare.png"); switch (c) { case '0': newImage = new SensorImage(1359, 190, "yellowsquare.png"); // leftLine break; case '1': newImage = new SensorImage(1449, 70, "yellowsquare.png"); // frontLeftLine = 1; break; case '2': newImage = new SensorImage(1539, 70, "yellowsquare.png"); // frontRightLine = 1; break; case '3': newImage = new SensorImage(1629, 190, "yellowsquare.png"); // sideRightLine = 1; break; } images.add(newImage); } public void clearBump() { SensorImage roombaMap = new SensorImage(1494, 190, "roombaSensorMap.png"); images.add(roombaMap); SensorImage leftBump = new SensorImage(1419, 50, "untriggeredBumpL.png"); images.add(leftBump); SensorImage rightBump = new SensorImage(1569, 50, "untriggeredBumpR.png"); images.add(rightBump); } public void clearImages() { images.clear(); clearCliff(); clearBump(); } public void clearCliff() { SensorImage leftCliff = new SensorImage(1359, 190, "greysquare.png"); images.add(leftCliff); SensorImage rightCliff = new SensorImage(1629, 190, "greysquare.png"); images.add(rightCliff); SensorImage rightFrontCliff = new SensorImage(1539, 70, "greysquare.png"); images.add(rightFrontCliff); SensorImage leftFrontCliff = new SensorImage(1449, 70, "greysquare.png"); images.add(leftFrontCliff); } public double getAngle() { return this.angle; } public void setLine(double x1, double y1, double x2, double y2) { Line2D line = new Line2D.Double(x1, y1, x2, y2); lines.add(line); } public ArrayList<Line2D> getLine() { return lines; } public ArrayList<SensorImage> getImages() { return images; } public void move(double distance) { double radians = Math.toRadians(angle); double offsetX = 0; double offsetY = 0; offsetX = distance * 4 * Math.sin(radians); offsetY = distance * 4 * Math.cos(radians); double tempX = this.x; double tempY = this.y; x += offsetX; y -= offsetY; // y-axis is inverted in Java graphics setLine(x, y, tempX, tempY); setPosition(x, y); } public void setAngle(double angle) { this.angle += angle % 360; } public double getX() { return this.x; } public double getY() { return this.y; } public void setPosition(double x, double y) { this.x = x; this.y = y; } }