Tuesday, September 21, 2010

HW 3 Solution

Below is my Zuckerville implementation:

import java.util.Scanner;

/**
 * Zuckerville: a game where the only winner is the one who didn't play.
 *
 * @author Jose M Vidal

 *
 */


public class Zuckerville {

 
public final static int TIME_TO_HARVEST = 10; //in ticks

 
public final static int COST_OF_FERTILIZER = 4; //in zuckerdollars

 
public static void main(String[] args) {
 
int money = 5; //the amount of "money" the player starts with
 
int seeds = 0;
 
int plot = 0; //the number of seeds in the plot
 
int timeToHarvest = 0; //the time left before the plants get harvested
 
int time = 0;
 
boolean isFertilized = false; //whether or not the plot has been fertilized
 
Scanner keyboard = new Scanner(System.in);
 
String command;
 
System.out.println("Welcome to Zuckerville, where the only way to win is not to play!");
 
System.out.println("We gave you $" + money + " zuckerdollars to get you started! Now go plant!"); //first one's always free
 
System.out.println("");
 
do {
   
System.out.print("[" + time + " $" + money + "] Command: ");
   command
= keyboard.nextLine();
   
int spaceIndex = command.indexOf(' ');
   
if (command.startsWith("deposit")) {
   
int dollarIndex = command.indexOf('$');
   
int deposit = Integer.parseInt(command.substring(dollarIndex + 1));
    money
+= deposit;
   
System.out.println("You now have $" + money);
   
}
   
else if (command.startsWith("buy")) {
   
int amountToBuy = Integer.parseInt(command.substring(spaceIndex + 1));
   
if (amountToBuy <= money ) {
     
System.out.println("You bought " + amountToBuy + " seeds.");
     seeds
+= amountToBuy;
     money
-= amountToBuy;
   
}
   
else {
     
System.out.println("Sorry, you don't have enough zuckerdollars.");
   
}
   
}
   
else if (command.startsWith("plant")) {
   
if (plot != 0) {
     
System.out.println("Sorry, there are already seeds planted there. You must wait till after harvest.");
   
}
   
else {
     
for (int i = 0; i < seeds; i++) {
     
System.out.println("Planted a seed.");
     
}
     plot
= seeds;
     seeds
= 0;
     timeToHarvest
= TIME_TO_HARVEST;
   
}
   
}
   
else if (command.startsWith("fertilize")) {
   
if (money < COST_OF_FERTILIZER) {
     
System.out.println("Sorry, it costs $" + COST_OF_FERTILIZER + " to buy fertilizer.");}
   
else {
     
System.out.println("You fertilized your plot!");
     isFertilized
= true;
     money
-= COST_OF_FERTILIZER;
   
}
   
}
   
else if (!command.startsWith("quit")) {
   
System.out.println("What did you say?");
   
}
   time
++;
   timeToHarvest
-= (isFertilized) ? 2 : 1;
   
if (timeToHarvest <= 0 && plot != 0) { //Harvest the flowers if the time has come.
   
for (int i =0; i < plot; i++) {
     
System.out.println("You harvested a beautiful flower.");
   
}
    isFertilized
= false; //easy to forget this one
    plot
= 0;
   
}
 
} while (!command.equals("quit"));
 
System.out.println("Goodbye!");
 
}
}

No comments: