class PizzaDelivery1 {

  /* The Pizza Delivery Program version 1    J M Bishop  May 2000
   * ====================================
   *
   * Works out the time for delivering pizzas based on
   * queue length and area of delivery.
   * Illustrates reuse of methods, method calling and loops
   * Test version with 1 area and times from 9000 to 1300
   */

  int driveTime = 5;    // per area;
  int makeTime = 5;     // in a queue
  int processTime = 10; // per order

  PizzaDelivery1 () {
    for (int area = 1; area<= 1; area++) {
      printHeading(area);
      startTable();
      for (int time = 900; time < 1300; time=addTime(time,15))
        printaLine(time, area);
    }
  }

  void printaLine (int t, int a) {
    System.out.print(t+"\t");
    for (int queue = 0; queue <= 5; queue++)
      System.out.print(addTime(t,
        queue*makeTime+processTime+a*driveTime) + "\t");
    System.out.println();
  }

  int timeInMins (int t) {
    return t / 100 * 60 + t % 100;
  }

 int time24 (int t) {
    return t / 60 * 100 + t % 60;
  }

  int addTime (int t, int m) {
    return time24(timeInMins(t)+m);
  }

  void printHeading (int area) {
    System.out.println("Pizza 2U Delivery estimates for "+
      "Area "+area);
    System.out.println("=================================="+
     "=====\n");
  }

  void startTable () {
    System.out.println("Time now        Queue length");
    System.out.print("        ");
    for (int queue = 0; queue <=5; queue++)
      System.out.print("  "+queue+"  ");
    System.out.println();
  }

  public static void main (String [] args) {
    new PizzaDelivery1 ();
  }
}
