Class BadgerBot
- java.lang.Object
-
- BadgerBot
-
- All Implemented Interfaces:
java.awt.event.KeyListener,java.awt.event.MouseListener,java.awt.event.MouseMotionListener,java.util.EventListener
public class BadgerBot extends java.lang.Object implements java.awt.event.KeyListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListenerInspired by Karel the Dog and Turtle worlds. Created to have visual feedback and also be able to be autograded.The BadgerBot class represents a robot in the BadgerWorld simulation. It includes properties and methods to control the robot's movement, direction, and drawing capabilities.
- Version:
- 1.0
- Author:
- Jim Williams, Victor Suciu
-
-
Constructor Summary
Constructors Constructor Description BadgerBot()No-argument constructor for the BadgerBot.BadgerBot(int x, int y)Constructor for the BadgerBot that initializes it at the specified coordinates.BadgerBot(int x, int y, java.lang.String itemName)Constructor for the BadgerBot that initializes it at the specified coordinates with a specified item.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddKeyListener(java.awt.event.KeyListener listener)Adds a KeyListener to the BadgerBot.voidaddMouseListener(java.awt.event.MouseListener listener)Adds a MouseListener to the BadgerBot.voidaddMouseMotionListener(java.awt.event.MouseMotionListener listener)Adds a MouseMotionListener to the BadgerBot.java.lang.StringfacingColor()Returns the color of the location the bot is currently facing.java.lang.StringfacingItem()Returns the name of the item in the location the bot is currently facing.java.lang.StringgetDirection()Gets the current direction of the BadgerBot.booleanisFacingEdge()Checks if the BadgerBot is facing an edge.booleanisFacingWall()Checks if the BadgerBot is facing a wall.voidkeyPressed(java.awt.event.KeyEvent e)Handles the keyPressed event and forwards it to the registered KeyListener, if present.voidkeyReleased(java.awt.event.KeyEvent e)Handles the keyReleased event and forwards it to the registered KeyListener, if present.voidkeyTyped(java.awt.event.KeyEvent e)Handles the keyTyped event and forwards it to the registered KeyListener, if present.voidmark(java.lang.String color)Marks the current cell of the BadgerBot with the specified color.voidmouseClicked(java.awt.event.MouseEvent e)Handles the mouseClicked event and forwards it to the registered MouseListener, if present.voidmouseDragged(java.awt.event.MouseEvent e)Handles the mouseDragged event and forwards it to the registered MouseMotionListener, if present.voidmouseEntered(java.awt.event.MouseEvent e)Handles the mouseEntered event and forwards it to the registered MouseListener, if present.voidmouseExited(java.awt.event.MouseEvent e)Handles the mouseExited event and forwards it to the registered MouseListener, if present.voidmouseMoved(java.awt.event.MouseEvent e)Handles the mouseMoved event and forwards it to the registered MouseMotionListener, if present.voidmousePressed(java.awt.event.MouseEvent e)Handles the mousePressed event and forwards it to the registered MouseListener, if present.voidmouseReleased(java.awt.event.MouseEvent e)Handles the mouseReleased event and forwards it to the registered MouseListener, if present.java.lang.StringonColor()Returns the color of the current location of the bot.java.lang.StringonItem()Returns the name of the top item at the current location of the bot.booleansetDirection(java.lang.String direction)Sets the direction of the BadgerBot based on a string representation.voidsetImageFilename(java.lang.String imageFilename)Sets the image for the BadgerBot from a specified filename.voidsetLocation(int x, int y)Sets the location of the BadgerBot within the world.voidsetLocation(java.awt.Point point)Sets the location of the BadgerBot based on a Point representing screen coordinates.voidsetPenColor(java.lang.String color)Sets the pen color for the BadgerBot.voidstartDrawing()Starts the drawing mode for the BadgerBot.voidstep()Moves the BadgerBot one step in its current direction.voidstep(int distance)Moves the BadgerBot forward by a specified distance.voidstopDrawing()Stops the drawing mode for the BadgerBot.java.lang.StringtoString()Returns a string representation of the BadgerBot, including its id, coordinates, direction, pen color, and drawing status.java.lang.StringtoStringActions()Returns a string representation of the actions taken by the BadgerBot.java.lang.StringtoStringMethodContext()Returns the method context of the current method as a string.java.lang.StringtoStringMethodContextList()Returns a string representation of the method contexts from the list of actions.java.lang.StringtoStringState()Returns a string representation of the current state of the object.voidturnLeft()Turns the BadgerBot to the left.voidturnLeft(int increments)Turns the BadgerBot to the left by a specified number of increments.voidturnRight()Turns the BadgerBot to the right.voidturnRight(int increments)Turns the BadgerBot to the right by a specified number of increments.booleanturnToward(int x, int y)Turns the BadgerBot to face towards a specified location (x, y).
-
-
-
Constructor Detail
-
BadgerBot
public BadgerBot()
No-argument constructor for the BadgerBot. Initializes the BadgerBot at the center of the BadgerWorld.
-
BadgerBot
public BadgerBot(int x, int y)Constructor for the BadgerBot that initializes it at the specified coordinates.- Parameters:
x- The x-coordinate where the BadgerBot will be initialized.y- The y-coordinate where the BadgerBot will be initialized.
-
BadgerBot
public BadgerBot(int x, int y, java.lang.String itemName)Constructor for the BadgerBot that initializes it at the specified coordinates with a specified item.- Parameters:
x- The x-coordinate where the BadgerBot will be initialized.y- The y-coordinate where the BadgerBot will be initialized.itemName- The name of the item to associate with the BadgerBot.
-
-
Method Detail
-
setImageFilename
public void setImageFilename(java.lang.String imageFilename)
Sets the image for the BadgerBot from a specified filename. Resizes and rotates the image to fit within the world cells.- Parameters:
imageFilename- the filename of the image to be set.
-
setLocation
public void setLocation(java.awt.Point point)
Sets the location of the BadgerBot based on a Point representing screen coordinates. This method converts the screen coordinates to world cell coordinates and updates the BadgerBot's location accordingly.- Parameters:
point- The Point representing the screen coordinates of the mouse pointer.
-
setLocation
public void setLocation(int x, int y)Sets the location of the BadgerBot within the world. Ensures that the coordinates are within the world's bounds.- Parameters:
x- the x-coordinate to set.y- the y-coordinate to set.
-
setDirection
public boolean setDirection(java.lang.String direction)
Sets the direction of the BadgerBot based on a string representation. Possible directions: "NORTH", "NORTH_EAST", "EAST", "SOUTH_EAST", "SOUTH", "SOUTH_WEST", "WEST", "NORTH_WEST".- Parameters:
direction- the direction to set (e.g., "NORTH").- Returns:
- true if the direction is valid and set, false otherwise.
-
turnToward
public boolean turnToward(int x, int y)Turns the BadgerBot to face towards a specified location (x, y). The direction is determined based on the relative position of the target location.- Parameters:
x- The x-coordinate of the target location.y- The y-coordinate of the target location.- Returns:
- true if the BadgerBot's direction was changed, false if the BadgerBot is already at the target location.
-
mark
public void mark(java.lang.String color)
Marks the current cell of the BadgerBot with the specified color. The cell's color is updated in the BadgerWorld, and the world is refreshed to reflect the change.- Parameters:
color- The color to mark the current cell.
-
facingColor
public java.lang.String facingColor()
Returns the color of the location the bot is currently facing. This method updates the facing location of the bot and retrieves the color of the cell in that location.- Returns:
- The color of the location the bot is facing as a string.
-
facingItem
public java.lang.String facingItem()
Returns the name of the item in the location the bot is currently facing. This method updates the facing location of the bot and retrieves the item of the cell in that location. Built in items include "badger", "coin", "coinBag", "coinStack", "bat", "child", "monster", "pit", "airplane", "battleship", "book", "dog", "heart", "iron", "racecar", "soccerBall", "thimble", "tophat", "wheelbarrow", "worm" Items can be added @see BadgerWorld.addItem.- Returns:
- The name of the item in the location the bot is facing as a string.
-
onColor
public java.lang.String onColor()
Returns the color of the current location of the bot. This method retrieves the color of the cell at the bot's current coordinates. Color names can be specified as a string, e.g., "RED", "BLUE", "GREEN", "YELLOW", "BLACK", "WHITE", "CYAN", "DARK_GRAY", "GRAY", "LIGHT_GRAY", "MAGENTA", "ORANGE", "PINK". or specify a hexadecimal color code. For example, "#FF0000".- Returns:
- The color of the current location of the bot as a string.
-
onItem
public java.lang.String onItem()
Returns the name of the top item at the current location of the bot. This method retrieves the item at the cell at the bot's current coordinates.- Returns:
- The name of the top item at the current location of the bot as a string.
-
isFacingEdge
public boolean isFacingEdge()
Checks if the BadgerBot is facing an edge.- Returns:
- true if the bot is facing an edge, false otherwise.
-
isFacingWall
public boolean isFacingWall()
Checks if the BadgerBot is facing a wall.- Returns:
- true if the bot is facing a wall, false otherwise.
-
step
public void step()
Moves the BadgerBot one step in its current direction. If the bot is at the edge of the world, it wraps around to the other side. If the bot is in drawing mode, it sets the color of the current cell to the bot's pen color. If it is facing a wall it won't move.
-
turnLeft
public void turnLeft()
Turns the BadgerBot to the left.
-
turnLeft
public void turnLeft(int increments)
Turns the BadgerBot to the left by a specified number of increments.- Parameters:
increments- the number of 45-degree increments to turn.
-
turnRight
public void turnRight()
Turns the BadgerBot to the right.
-
turnRight
public void turnRight(int increments)
Turns the BadgerBot to the right by a specified number of increments.- Parameters:
increments- the number of 45-degree increments to turn.
-
step
public void step(int distance)
Moves the BadgerBot forward by a specified distance.- Parameters:
distance- the number of steps to move forward.
-
setPenColor
public void setPenColor(java.lang.String color)
Sets the pen color for the BadgerBot. The pen color is used when the BadgerBot is in drawing mode. Color names can be specified as a string, e.g., "RED", "BLUE", "GREEN", "YELLOW", "BLACK", "WHITE", "CYAN", "DARK_GRAY", "GRAY", "LIGHT_GRAY", "MAGENTA", "ORANGE", "PINK". or specify a hexadecimal color code. For example, "#FF0000".- Parameters:
color- the name of the color to set (e.g., "RED" or "#FF0000").
-
startDrawing
public void startDrawing()
Starts the drawing mode for the BadgerBot. The bot will draw on the cells as it moves.
-
stopDrawing
public void stopDrawing()
Stops the drawing mode for the BadgerBot. The bot will not draw on the cells as it moves.
-
getDirection
public java.lang.String getDirection()
Gets the current direction of the BadgerBot. Possible directions: "NORTH", "NORTH_EAST", "EAST", "SOUTH_EAST", "SOUTH", * "SOUTH_WEST", "WEST", "NORTH_WEST"- Returns:
- the current direction.
-
addKeyListener
public void addKeyListener(java.awt.event.KeyListener listener)
Adds a KeyListener to the BadgerBot. The KeyListener will handle key events for the BadgerBot.- Parameters:
listener- The KeyListener to be added.
-
addMouseListener
public void addMouseListener(java.awt.event.MouseListener listener)
Adds a MouseListener to the BadgerBot. The MouseListener will handle mouse events for the BadgerBot.- Parameters:
listener- The MouseListener to be added.
-
addMouseMotionListener
public void addMouseMotionListener(java.awt.event.MouseMotionListener listener)
Adds a MouseMotionListener to the BadgerBot. The MouseMotionListener will handle mouse motion events for the BadgerBot.- Parameters:
listener- The MouseMotionListener to be added.
-
toStringMethodContext
public java.lang.String toStringMethodContext()
Returns the method context of the current method as a string. This context is retrieved from the stack trace.- Returns:
- a string representing the current method context
-
toStringState
public java.lang.String toStringState()
Returns a string representation of the current state of the object. The string includes the x and y coordinates, direction, pen color, and drawing state.- Returns:
- a string representing the current state of the object in the format "x,y direction penColor drawing/not drawing"
-
toString
public java.lang.String toString()
Returns a string representation of the BadgerBot, including its id, coordinates, direction, pen color, and drawing status.- Overrides:
toStringin classjava.lang.Object- Returns:
- a string representation of the BadgerBot.
-
toStringActions
public java.lang.String toStringActions()
Returns a string representation of the actions taken by the BadgerBot.- Returns:
- a string representation of the steps taken by the BadgerBot.
-
toStringMethodContextList
public java.lang.String toStringMethodContextList()
Returns a string representation of the method contexts from the list of actions. Each method context is appended to the string builder on a new line.- Returns:
- A string containing the method contexts from the actions list.
-
keyTyped
public void keyTyped(java.awt.event.KeyEvent e)
Handles the keyTyped event and forwards it to the registered KeyListener, if present.- Specified by:
keyTypedin interfacejava.awt.event.KeyListener- Parameters:
e- The KeyEvent object containing details of the keyTyped event.
-
keyPressed
public void keyPressed(java.awt.event.KeyEvent e)
Handles the keyPressed event and forwards it to the registered KeyListener, if present.- Specified by:
keyPressedin interfacejava.awt.event.KeyListener- Parameters:
e- The KeyEvent object containing details of the keyPressed event.
-
keyReleased
public void keyReleased(java.awt.event.KeyEvent e)
Handles the keyReleased event and forwards it to the registered KeyListener, if present.- Specified by:
keyReleasedin interfacejava.awt.event.KeyListener- Parameters:
e- The KeyEvent object containing details of the keyReleased event.
-
mouseClicked
public void mouseClicked(java.awt.event.MouseEvent e)
Handles the mouseClicked event and forwards it to the registered MouseListener, if present.- Specified by:
mouseClickedin interfacejava.awt.event.MouseListener- Parameters:
e- The MouseEvent object containing details of the mouseClicked event.
-
mousePressed
public void mousePressed(java.awt.event.MouseEvent e)
Handles the mousePressed event and forwards it to the registered MouseListener, if present.- Specified by:
mousePressedin interfacejava.awt.event.MouseListener- Parameters:
e- The MouseEvent object containing details of the mousePressed event.
-
mouseReleased
public void mouseReleased(java.awt.event.MouseEvent e)
Handles the mouseReleased event and forwards it to the registered MouseListener, if present.- Specified by:
mouseReleasedin interfacejava.awt.event.MouseListener- Parameters:
e- The MouseEvent object containing details of the mouseReleased event.
-
mouseEntered
public void mouseEntered(java.awt.event.MouseEvent e)
Handles the mouseEntered event and forwards it to the registered MouseListener, if present.- Specified by:
mouseEnteredin interfacejava.awt.event.MouseListener- Parameters:
e- The MouseEvent object containing details of the mouseEntered event.
-
mouseExited
public void mouseExited(java.awt.event.MouseEvent e)
Handles the mouseExited event and forwards it to the registered MouseListener, if present.- Specified by:
mouseExitedin interfacejava.awt.event.MouseListener- Parameters:
e- The MouseEvent object containing details of the mouseExited event.
-
mouseDragged
public void mouseDragged(java.awt.event.MouseEvent e)
Handles the mouseDragged event and forwards it to the registered MouseMotionListener, if present.- Specified by:
mouseDraggedin interfacejava.awt.event.MouseMotionListener- Parameters:
e- The MouseEvent object containing details of the mouseDragged event.
-
mouseMoved
public void mouseMoved(java.awt.event.MouseEvent e)
Handles the mouseMoved event and forwards it to the registered MouseMotionListener, if present.- Specified by:
mouseMovedin interfacejava.awt.event.MouseMotionListener- Parameters:
e- The MouseEvent object containing details of the mouseMoved event.
-
-