Answered step by step
Verified Expert Solution
Question
1 Approved Answer
I need help on building the 3rd subclass (PeachPit) in java. This is an RPG simulation game called Peach Adventure. I also attached the parent
I need help on building the 3rd subclass (PeachPit) in java. This is an RPG simulation game called Peach Adventure. I also attached the parent class's code below (Location).
import java.util.List; public class Location { protected Position position; protected String description = "Nothing special about this location."; protected List peopleAtLocation = null; protected List peachesAtLocation = null; public Location(){} public Location(Position p, String description, List people, List peaches) { this.position = p; this.description = description; this.peopleAtLocation = people; this.peachesAtLocation = peaches; } /** * getter for position */ public Position getPosition() { return position; } /** * getter for description */ public String getDescription() { return description; } /** * getter for players */ public List getPlayers() { return peopleAtLocation; } /** * getter for a Peach */ public Peach getPeach() { return peachesAtLocation.remove(0); } /** * check number pf peaches in location */ public int numberOfPeaches() { return peachesAtLocation == null ? 0 : peachesAtLocation.size(); } /** * adding a peach to the location */ public void addPeach(Peach p) { peachesAtLocation.add(p); } /** * allows the location to do something to a player when entering the location */ public void enter(Player p) { p.setLocation(this); peopleAtLocation.add(p); System.out.println(p.getName() + " just entered location " + position); } /** * remove a player from a room */ public void exit(Player p) { peopleAtLocation.remove(p); System.out.println(p.getName() + " just left location " + position); } /* ONLY for Home subclass */ public void callForHelp(Player p, Location location) { } @Override public String toString() { return description + position.toString(); } }
Then the player class:
import java.util.List; /** A Player in the game * * Each member of your team should implement their own * unique Player subtype. Your group should also have a human player. */ public class Player{ protected World world; // world that player lives in protected String name; // name of player protected Location location; // where in the world the player is protected Listpeaches; // peaches protected int health; // health of player protected RGB colour; // colour of player (if graphics is used) /** Creates a player in the game * * @param world is the world that the player lives in * @param name is the name of the player * @param location is where in the world the player is * @param peaches is a list of peaches the player starts with * @param health is the health of the player (which may or may not be relevant in your game) * @param RGB is the colour of the player */ public Player(World w, String name, Location location, List peaches, int health, RGB rgb){ this.world = w; this.name = name; this.location = location; location.getPlayers().add(this); this.peaches = peaches; this.health = health; this.colour = rgb; } /** Getter for a player's world */ public World getWorld(){ return world; } /** Getter for a player's name */ public String getName(){ return name; } /** Getter for a player's location */ public Location getLocation(){ return location; } /** Getter for a player's peach */ public Peach getPeach(){ return peaches == null ? null : peaches.remove(0); } /** Getter for a player's health */ public int getHealth(){ return health; } /** This is the logic of the player. * It defines what they should do when given a chance to do somerthing */ public void play(){ if( health return; } } /** Moves a player from one location to a new location * * @param newLocation is the new location that the player will be moved to * @return true if the move was successful and false otherwise (e.g. when trying to move from one * location to another that are not connected) */ public boolean move(int direction){ // move from current location to new location (if possible) world.move(this, direction); return false; } /** sets a player's current location * * @param location is the Location to set for the player */ public void setLocation(Location location){ this.location = location; } /** Setter for a player's health * * @param h is the new health of the player */ public void setHealth(int h){ this.health = h; } /** Allows for interaction with this player and another player * (presumably called from within the play method) * * @param p is a player that is interacting with this player */ public void interact(Player p){ // allows for some interaction with a player } /** ask for help when they need it */ public void getHelp(){ world.getHome().callForHelp(this, location); } @Override public String toString(){ return name; } /** Two players are the same if they have the same name, location and health. */ @Override public boolean equals(Object o){ if( o instanceof Player){ return this.name.equals( ((Player)o).name ) && this.location.equals( ((Player)o).location ) && this.health == ((Player)o).health; }else{ return false; } } }
Then the Position class:
public class Position{ protected int x; protected int y; public Position(int x, int y){ this.x = x; this.y = y; } public int getX(){ return x; } public int getY(){ return y; } @Override public String toString(){ return "["+x+","+y+"]"; } }
And Peach class:
public class Peach implements Comparable{ protected int ripeness; protected boolean bad; public Peach(int ripeness, boolean bad){ this.ripeness = ripeness; this.bad = bad; } public Peach(int ripeness){ this(ripeness, false); } public int getRipeness(){ return ripeness; } /** ages a peach in some way */ public void age(){} @Override public int compareTo(Peach other){ return 0; } }
In assignment 5, you will (partially) build a game about peaches. The game has players moving about in a world trying to find, eat and store peaches Each member in your group will have to implement two classes (a Location subclass and a Player subclass). Your team is free to add more to the game if you wish but that will not be necessary. Locations The world that the game takes place in consists of different locations. A location can have zero or more players in it, zero or more peaches in it, and it may have some behaviour of its own Each member will implement a location subclass. 1) A Home is the home location. There is only one home in each world. This is where several of the players will begin the game. Is is a place for players to drop off (to stockpile) peaches. The home keeps track of how many peaches each player brings back. The home will also create a new Helper player to go help another player in distress (low health). It will give the helper the location of the player in distress and some peaches to give to the distressed player to eat. 2) A PeachGrove has a bunch of peach trees, zero or more peaches (from the trees) and perhaps some bees (that may sting a player). When a player enters a peach grove for the n-th time then n bees might sting that person each with a 50% probability. Each sting will result in 5 health points being lost to the player. lf the player doesn't die from bee stings then they can eat and take away as many peaches as they are able (if there are that many available). A grove does not grow more peaches as the game progresses. 3) A PeachPit is a location with a large hole. When a player enters (falls into) the pit, they lose 1/2 of their health points. (Just use integer division here.) A peach pit also remembers who has already fallen into the pit. When a player falls in for the second (or more) time, they are instantly transported to the Home location, lose 1/2 their health points and their turn ends There may initially be several peaches in the pit. A player that falls in for the first time may take them (to eat or carry)
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started