Revision: 67242
Updated Code
at October 8, 2014 14:32 by obrienm
Updated Code
/** * */ package burgertime; import java.awt.Color; import java.awt.Shape; import java.awt.geom.Ellipse2D; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import javax.imageio.ImageIO; /** * This is the hero class, has all of the characteristics of the user (the * hero). * * @author xiaox. trowbrct. obrienm. */ public class Hero extends AbstractCharacter { public int VELOCITY; public Burger[] burgers; public int lives; public int pepperSprays; public Rectangle2D character; private Color heroColor; public Guard[] guards; public boolean heroState; public boolean pepperDeployed; public boolean cheat; /** * Creates the character, initializes velocity. * * @param start * @param characterWidth * @param characterHeight * @param pathList * @param burger * @param guards */ Hero(Point2D start, double characterWidth, double characterHeight, ArrayList<Rectangle2D> pathList, Burger[] burger, Guard[] guards, Score score) { super(start, characterWidth, characterHeight, pathList,score); this.VELOCITY = 4; this.burgers = new Burger[4]; this.guards = new Guard[4]; for (int i = 0; i < 4; i++) { this.burgers[i] = burger[i]; this.guards[i] = guards[i]; } this.heroColor = Color.GREEN; this.lives = 3; this.pepperSprays = 5; this.character = new Rectangle2D.Double(super.currentPosition.getX(), super.currentPosition.getY(), characterWidth, characterHeight); this.heroState = false; this.pepperDeployed = false; this.cheat = false; } /** * When the hero dies, reset it's position to the start point. * */ public void resetPosition() { this.character.setRect(new Rectangle2D.Double(super.STARTPOINT.getX(), super.STARTPOINT.getY(), super.width, super.height)); this.currentPosition = new Point2D.Double(super.STARTPOINT.getX(), super.STARTPOINT.getY()); } /** * Creates a circle for the pepper spray to appear on the screen. Returns * the circle. * * @return pepperSpray */ public Ellipse2D.Double deployPepperSpray() { this.pepperDeployed = true; Ellipse2D.Double pepperSpray = new Ellipse2D.Double( this.character.getCenterX() - 30, this.character.getCenterY() - 30, 60, 60); return pepperSpray; } /* * (non-Javadoc) * * @see burgertime.AbstractCharacter#updatePosition(int, int) */ @Override public void updatePosition(double x, double y) { // moves the position the given direction from the ActionControl class Point2D[] pointList = this.getHeroCorners(x, y); if (isOnPath(pointList) || this.cheat == true) { if (this.contactWithGuard(pointList) == false) { this.currentPosition = pointList[0]; this.character = new Rectangle2D.Double( super.currentPosition.getX(), super.currentPosition.getY(), super.width, super.height); for (int i = 0; i < this.burgers.length; i++) { this.burgers[i].depressSection(pointList[2].getX(), pointList[2].getY()); this.burgers[i].depressSection(pointList[3].getX(), pointList[3].getY()); } } else { this.die(); this.addScore(-100); } } } /** * Gets the bottom two points of the hero and returns it to check for * collision detection. * * @param x * @param y * @return heroCorners */ public Point2D[] getHeroCorners(double x, double y) { Point2D[] pointList = new Point2D[4]; Point2D newPositionTopLeft = new Point2D.Double( this.currentPosition.getX() + (x * this.VELOCITY), this.currentPosition.getY() + (y * this.VELOCITY)); Point2D newPositionTopRight = new Point2D.Double( this.currentPosition.getX() + (x * this.VELOCITY) + super.width, this.currentPosition.getY() + (y * this.VELOCITY)); Point2D newPositionBottomLeft = new Point2D.Double( this.currentPosition.getX() + (x * this.VELOCITY), this.currentPosition.getY() + (y * this.VELOCITY) + super.height); Point2D newPositionBottomRight = new Point2D.Double( this.currentPosition.getX() + (x * this.VELOCITY) + super.width, this.currentPosition.getY() + (y * this.VELOCITY) + super.height); pointList[0] = newPositionTopLeft; pointList[1] = newPositionTopRight; pointList[2] = newPositionBottomLeft; pointList[3] = newPositionBottomRight; return pointList; } @Override public boolean isOnPath(Point2D[] pointList) { int count = 0; for (int i = 2; i < pointList.length; i++) { for (int j = 0; j < super.pathList.size(); j++) { if (super.pathList.get(j).contains(pointList[i])) { count++; break; } } } if (count == 2) { return true; } return false; } /** * Checks for contact with the guard. * * @param pointList * @return isContact */ public boolean contactWithGuard(Point2D[] pointList) { if (this.pepperDeployed) { return false; } for (int i = 0; i < this.guards.length; i++) { for (int j = 0; j < pointList.length; j++) { if (this.guards[i].getShape().contains(pointList[j])) { return true; } } } return false; } /* * (non-Javadoc) * * @see burgertime.Drawable#getColor() */ @Override public Color getColor() { return this.heroColor; } /* * (non-Javadoc) * * @see burgertime.Drawable#getShape() */ @Override public Shape getShape() { return this.character; } @Override public void die() { this.heroState = true; this.pepperDeployed = false; this.lives--; } /** * Returns whether the hero is dead or alive. * * @return heroState */ public boolean isDead() { return this.heroState; } /* (non-Javadoc) * @see burgertime.AbstractCharacter#getImage() */ @Override public BufferedImage getImage() { try { BufferedImage image=ImageIO.read(new File("image/chef.png")); return image; } catch (IOException e) { e.printStackTrace(); } return null; } }
Revision: 67241
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at August 29, 2014 05:51 by obrienm
Initial Code
/** * */ package burgertime; import java.awt.Color; import java.awt.Shape; import java.awt.geom.Ellipse2D; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.util.ArrayList; import javax.imageio.ImageIO; /** * This is the hero class, has all of the characteristics of the user (the * hero). * * @author xiaox. trowbrct. obrienm. */ public class Hero extends AbstractCharacter { public int VELOCITY; public Burger[] burgers; public int lives; public int pepperSprays; public Rectangle2D character; private Color heroColor; public Guard[] guards; public boolean heroState; public boolean pepperDeployed; public boolean cheat; /** * Creates the character, initializes velocity. * * @param start * @param characterWidth * @param characterHeight * @param pathList * @param burger * @param guards */ Hero(Point2D start, double characterWidth, double characterHeight, ArrayList<Rectangle2D> pathList, Burger[] burger, Guard[] guards, Score score) { super(start, characterWidth, characterHeight, pathList,score); this.VELOCITY = 4; this.burgers = new Burger[4]; this.guards = new Guard[4]; for (int i = 0; i < 4; i++) { this.burgers[i] = burger[i]; this.guards[i] = guards[i]; } this.heroColor = Color.GREEN; this.lives = 3; this.pepperSprays = 5; this.character = new Rectangle2D.Double(super.currentPosition.getX(), super.currentPosition.getY(), characterWidth, characterHeight); this.heroState = false; this.pepperDeployed = false; this.cheat = false; } /** * When the hero dies, reset it's position to the start point. * */ public void resetPosition() { this.character.setRect(new Rectangle2D.Double(super.STARTPOINT.getX(), super.STARTPOINT.getY(), super.width, super.height)); this.currentPosition = new Point2D.Double(super.STARTPOINT.getX(), super.STARTPOINT.getY()); } /** * Creates a circle for the pepper spray to appear on the screen. Returns * the circle. * * @return pepperSpray */ public Ellipse2D.Double deployPepperSpray() { this.pepperDeployed = true; Ellipse2D.Double pepperSpray = new Ellipse2D.Double( this.character.getCenterX() - 30, this.character.getCenterY() - 30, 60, 60); return pepperSpray; } /* * (non-Javadoc) * * @see burgertime.AbstractCharacter#updatePosition(int, int) */ @Override public void updatePosition(double x, double y) { // moves the position the given direction from the ActionControl class Point2D[] pointList = this.getHeroCorners(x, y); if (isOnPath(pointList) || this.cheat == true) { if (this.contactWithGuard(pointList) == false) { this.currentPosition = pointList[0]; this.character = new Rectangle2D.Double( super.currentPosition.getX(), super.currentPosition.getY(), super.width, super.height); for (int i = 0; i < this.burgers.length; i++) { this.burgers[i].depressSection(pointList[2].getX(), pointList[2].getY()); this.burgers[i].depressSection(pointList[3].getX(), pointList[3].getY()); } } else { this.die(); this.addScore(-100); } } } /** * Gets the bottom two points of the hero and returns it to check for * collision detection. * * @param x * @param y * @return heroCorners */ public Point2D[] getHeroCorners(double x, double y) { Point2D[] pointList = new Point2D[4]; Point2D newPositionTopLeft = new Point2D.Double( this.currentPosition.getX() + (x * this.VELOCITY), this.currentPosition.getY() + (y * this.VELOCITY)); Point2D newPositionTopRight = new Point2D.Double( this.currentPosition.getX() + (x * this.VELOCITY) + super.width, this.currentPosition.getY() + (y * this.VELOCITY)); Point2D newPositionBottomLeft = new Point2D.Double( this.currentPosition.getX() + (x * this.VELOCITY), this.currentPosition.getY() + (y * this.VELOCITY) + super.height); Point2D newPositionBottomRight = new Point2D.Double( this.currentPosition.getX() + (x * this.VELOCITY) + super.width, this.currentPosition.getY() + (y * this.VELOCITY) + super.height); pointList[0] = newPositionTopLeft; pointList[1] = newPositionTopRight; pointList[2] = newPositionBottomLeft; pointList[3] = newPositionBottomRight; return pointList; } @Override public boolean isOnPath(Point2D[] pointList) { int count = 0; for (int i = 2; i < pointList.length; i++) { for (int j = 0; j < super.pathList.size(); j++) { if (super.pathList.get(j).contains(pointList[i])) { count++; break; } } } if (count == 2) { return true; } return false; } /** * Checks for contact with the guard. * * @param pointList * @return isContact */ public boolean contactWithGuard(Point2D[] pointList) { if (this.pepperDeployed) { return false; } for (int i = 0; i < this.guards.length; i++) { for (int j = 0; j < pointList.length; j++) { if (this.guards[i].getShape().contains(pointList[j])) { return true; } } } return false; } // -----FROM DRAWABLE INTERFACE-----// /* * (non-Javadoc) * * @see burgertime.Drawable#getColor() */ @Override public Color getColor() { return this.heroColor; } /* * (non-Javadoc) * * @see burgertime.Drawable#getShape() */ @Override public Shape getShape() { return this.character; } @Override public void die() { this.heroState = true; this.pepperDeployed = false; this.lives--; } /** * Returns whether the hero is dead or alive. * * @return heroState */ public boolean isDead() { return this.heroState; } /* (non-Javadoc) * @see burgertime.AbstractCharacter#getImage() */ @Override public BufferedImage getImage() { try { BufferedImage image=ImageIO.read(new File("image/chef.png")); return image; } catch (IOException e) { e.printStackTrace(); } return null; } }
Initial URL
Initial Description
OO Software Development Project
Initial Title
Burger Time - Hero
Initial Tags
Initial Language
Java