Question: I need help on building this game (simulation) in java. I attached the project description below. In particular, I would like to get help on

I need help on building this game (simulation) in java. I attached the project description below. In particular, I would like to get help on writing up a pseudo code / flowchart for PeachPit subclass (a subclass of Location, no.3 in the description). I tried to program a bit, but I got confused about how the data are passed between functions. Please... help asap so that I can work on the coding part. I only need help on the PeachPit subclass.

I need help on building this game (simulation) in java. I attached

the project description below. In particular, I would like to get help

on writing up a pseudo code / flowchart for PeachPit subclass (a

I also attached some codes here (which worked):

Main:

import java.util.ArrayList; public class PeachesGame{ public static void main(String[] args){ World w = new World(); Player p = new Player(w, "cat", w.home, new ArrayList(), 50, RGB.YELLOW); Player q = new Player(w, "dog", w.home, new ArrayList(), 100, RGB.BLUE); w.addPlayer(p).addPlayer(q); System.out.println("Home : " + w.getHome()); System.out.println(" Players at Home : " + w.getHome().getPlayers()); System.out.println("Location of all players in world"); for(Player pp: w.getPlayers()){ System.out.println(pp.getLocation()); System.out.println(pp.getLocation().getPlayers()); } System.out.println("Move some players in world"); p.move(Directions.DOWN); q.move(Directions.RIGHT); System.out.println("Location of all players in world"); for(Player pp: w.getPlayers()){ System.out.println(pp.getLocation()); System.out.println(pp.getLocation().getPlayers()); } // what the game might look like...  while( w.getHome().numberOfPeaches() // iterate over all locations in the world  for(Location location: w.getLocations()){ // iterate over all players in the current location  for(Player player: location.getPlayers() ){ System.out.println(player.getName() + ", " + player.getLocation()); player.play(); } } } } }

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(); } }

EmptyLocation:

import java.util.ArrayList; public class EmptyLocation extends Location{ public EmptyLocation(Position p, String description){ super(p, description, new ArrayList(), new ArrayList()); } /** getter for a Peach */  public Peach getPeach(){ return null; } /** remove a player from a room */  public void remove(Player p){ peopleAtLocation.remove(p); } }

Position:

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+"]"; } }

Peach:

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; } }

World:

import java.util.List; import java.util.ArrayList; import java.util.Arrays; public class World{ protected Location[][] locations; protected Location home; protected List players; // all players in the world   public World(){ locations = new Location[3][3]; for(int r=0; rfor(int c=0; clocations[r][c] = new EmptyLocation(new Position(r,c), "Nothing here to see."); } } home = locations[0][0]; players = new ArrayList(); } public List getPlayers(){ return players; } public Location[][] getWorld(){ return locations; } public Location getHome(){ return home; } public List getLocations(){ List list = new ArrayList(locations.length*locations[0].length); for (Location[] array : locations) { list.addAll(Arrays.asList(array)); } return list; } /* keep a list of all players in the world. Each time a helper is created be  * sure to add them to this list  */  public World addPlayer(Player p){ players.add(p); return this; } public boolean move(Player p, int direction){ Location loc = p.getLocation(); // player's current location  int x = loc.getPosition().getX(); int y = loc.getPosition().getY(); Location newLocation = null; //  switch(direction){ case Directions.UP: newLocation = locations[x-1][y]; break; case Directions.DOWN: newLocation = locations[x+1][y]; break; case Directions.LEFT: newLocation = locations[x][y-1]; break; case Directions.RIGHT: newLocation = locations[x][y+1]; break; default: break; } loc.exit(p); newLocation.enter(p); return true; } }

Directions:

public class Directions{ public static final int UP = 0; public static final int DOWN = 1; public static final int LEFT = 2; public static final int RIGHT = 3; }

Player:

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 List peaches; // 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; } } }

RGB:

public class RGB{ public static RGB RED = new RGB(255,0,0); public static RGB GREEN = new RGB(0,255,0); public static RGB BLUE = new RGB(0,0,255); public static RGB YELLOW = new RGB(255,255,0); public static RGB MAGENTA = new RGB(255,0,255); public static RGB CYAN = new RGB(0,255,255); protected int red; protected int green; protected int blue; public RGB(int red, int green, int blue){ this.red = red; this.green = green; this.blue = blue; } public RGB(int gray){ this(gray,gray,gray); } }

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. If 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 loca health points. (Just use integer division here.) tion with a large hole. When a player enters (ta ls into) the pit, they lose 1/2 of their

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!