/*
William Brownlow Final project
4-25-98  This is a simulator much like SimCity but with a beehive instead
It should require some skill to play but its not that hard if one
has any experience with bees.  Enjoy.  WGBV
*/


import java.awt.event.*;
import java.awt.*;
import java.applet.Applet;

public class BeeHive extends Applet implements Runnable, ActionListener
{
   Panel buttonPanel;
   Panel textPanel;

   double RobbedHoney = 0.0;

   TextField ytdProducedHoney;
   TextField currentHoneyInHive;
   TextField currentBeesInHive;
   TextField currentBroodInHive;
   TextField currentDisease;

   public int build[];  //hold equipment for hive
        /*   1 = Base Board               //0
             2 = Hive Body   Max = 2      //1,2
             3 = Excluder                 //3
             4 = Super       Max = 5      //4,5,6,7,8
             5 = Hive Cover               //9
        */


   Button Speed;
   Button CheckAll;
   Button CheckHoney;
   Button RobAll;
   Button CheckBees;
   Button Medicate;


   Thread runthread;

   Hive myHive;

   int speedValue = 0;   // 0 is stop, 1 is slow, 2 medium , 3 is fast
   String speedLabel[];

   String diseaseLabel[];
   int diseaseValue = 0; // 0 is none, 1 is Varo Mites, 2 is Tracheal Mites,
                         // 3 is Ants, 4 is Bear (Game Over)

   double honeyProduced = 0.0;

   boolean runVal = true;

   public void init()
   {
      speedLabel = new String[4];
      speedLabel[0] = " Stop ";
      speedLabel[1] = " Slow ";
      speedLabel[2] = " Medium ";
      speedLabel[3] = " Fast ";

      build = new int[10];
      for (int i = 0; i < 10 ; i ++)
         build[i] = 0;

      myHive = new Hive(2, 4);

      buttonPanel = new Panel();
      textPanel = new Panel();

      Speed = new Button(speedLabel[0]);
      Speed.addActionListener(this);
      CheckAll = new Button("Check All");
      CheckAll.addActionListener(this);
      CheckHoney = new Button("Check Supers");
      CheckHoney.addActionListener(this);
      RobAll = new Button("Rob Supers");
      RobAll.addActionListener(this);
      CheckBees = new Button("Check Bees");
      CheckBees.addActionListener(this);
      Medicate = new Button("Medicate");
      Medicate.addActionListener(this);

      buttonPanel.setLayout( new GridLayout( 2, 4) ) ;

      buttonPanel.add(Speed);
      buttonPanel.add(CheckAll);
      buttonPanel.add(CheckHoney);
      buttonPanel.add(RobAll);

      buttonPanel.add(CheckBees);
      buttonPanel.add(Medicate);

      setLayout( new BorderLayout() );   
      add( buttonPanel, BorderLayout.SOUTH );

      ytdProducedHoney = new TextField("Honey Produced");
      ytdProducedHoney.setEditable(false);
      currentHoneyInHive = new TextField("Current Honey in Hive");
      currentHoneyInHive.setEditable(false);
      currentBroodInHive = new TextField("Current Brood in Hive");
      currentBroodInHive.setEditable(false);
      currentDisease = new TextField("Current Diseases (if any)");
      currentDisease.setEditable(false);
      currentBeesInHive = new TextField("Current Bees in Hive");
      currentBeesInHive.setEditable(false);

      textPanel.setLayout( new GridLayout(5,1));

      textPanel.add(ytdProducedHoney);
      textPanel.add(currentHoneyInHive);
      textPanel.add(currentBeesInHive);
      textPanel.add(currentBroodInHive);
      textPanel.add(currentDisease);

      add( textPanel, BorderLayout.EAST);

      diseaseLabel = new String[5];
      diseaseLabel[0] = "No Diseases";
      diseaseLabel[1] = "Varo Mites";
      diseaseLabel[2] = "Tracheal Mites";
      diseaseLabel[3] = "Ants";
      diseaseLabel[4] = "Brown Bear";


      setSize(600,380);

      setBackground(Color.green);
      repaint();

   }//ends init on the main applet

public void paint( Graphics g )
{
      int x, i, m, n, wid, hei;
      m = 20;
      n = 20;
      wid = 200;
      hei = 10;

      double CheckedHoney = 0.0;
      for( i = 0; i < 10 ; i++)
      {
         if ( build[i] == 4)
            CheckedHoney += myHive.CHECK(i);
      }
      currentHoneyInHive.setText("Honey in Hive " + ( (int) CheckedHoney));
   
      if (diseaseValue != 0)
         currentDisease.setText("Disease: " + diseaseLabel[diseaseValue]);
  //    else
//         currentDisease.setText("No Diseases present" );
      
      int CheckedBees = 0;
      CheckedBees += myHive.h1.getBees();
      CheckedBees += myHive.h2.getBees();
      CheckedBees += myHive.s1.getBees();
      CheckedBees += myHive.s2.getBees();
      CheckedBees += myHive.s3.getBees();
      CheckedBees += myHive.s4.getBees();
      CheckedBees += myHive.s5.getBees();

      currentBeesInHive.setText("Bees In Hive " + CheckedBees);

      double totalB= 0.0;
      totalB = myHive.h1.getBrood() + myHive.h2.getBrood();
      currentBroodInHive.setText("" + ((int) totalB) + " Pounds of Brood");


      for( i = 9; i >=0 ; i--)
      {
         if ( build[i] == 5 )
         {
            hei = 20;
            g.drawRect( (m-10) , n , (wid+20) , hei );
            n = (n+hei);
         }
         else if ( build[i] == 4 )
         {
            hei = 35;
            g.drawRect( m , n , wid , hei );
            n = (n+hei);
            x = (i-3);
            switch (x)
            {
            case 1:
               if (myHive.s1.isFullHoney())
               {
                  g.drawString("Is Full " , (m+wid+5) , (n-hei)+8);
               //   g.fillRect( m , (n - hei), wid ,hei);
               }
               else
               {
               //   g.fillRect(m , n - hei + (35 * (int) (myHive.s1.getHoney()/ 30.0)), wid ,  n - hei + (35 * (int) (myHive.s1.getHoney()/ 30.0)) );
                  g.drawString("" + ((int) myHive.s1.getHoney()) + "Pounds of Honey" , (m+wid+5) , (n-hei)+8);
               }
               break;
            case 2:
               if (myHive.s2.isFullHoney())
               {
                //  g.fillRect( m , (n - hei), wid ,hei);
                  g.drawString("Is Full " , (m+wid+5) , (n-hei)+8); 
               }
               else
               {
                //  g.fillRect(m , n - hei + (35 * (int) (myHive.s2.getHoney()/ 30.0)), wid ,  n - hei + (35 * (int) (myHive.s2.getHoney()/ 30.0)) );
                  g.drawString("" + ((int) myHive.s2.getHoney() ) + "Pounds of Honey", (m+wid+5) , (n-hei)+8);
               }
               break;
            case 3:
               if (myHive.s3.isFullHoney())
               {
               //   g.fillRect( m , (n - hei), wid ,hei);
                  g.drawString("Is Full " , (m+wid+5) , (n-hei)+8);
               }
               else
               {
               //   g.fillRect(m , n - hei + (35 * (int) (myHive.s3.getHoney()/ 30.0)), wid ,  n - hei + (35 * (int) (myHive.s3.getHoney()/ 30.0)) );
                  g.drawString("" + ((int) myHive.s3.getHoney())  + "Pounds of Honey", (m+wid+5) , (n-hei)+8);
               }
               break;
            case 4:
               if (myHive.s4.isFullHoney())
               {
                  g.drawString("Is Full " , (m+wid+5) , (n-hei)+8);
               //   g.fillRect( m , (n - hei), wid ,hei);
               }
               else
               {
               //   g.fillRect(m , n - hei + (35 * (int) (myHive.s4.getHoney()/ 30.0)), wid ,  n - hei + (35 * (int) (myHive.s4.getHoney()/ 30.0)) );
                  g.drawString("" + ((int) myHive.s4.getHoney())  + "Pounds of Honey", (m+wid+5) , (n-hei)+8);
               }
               break;
            case 5:
               if (myHive.s5.isFullHoney())
               {
                  g.drawString("Is Full " , (m+wid+5) , (n-hei)+8);
               //   g.fillRect( m , (n - hei), wid ,hei);
               }
               else
               {
               //   g.fillRect(m , n - hei + (35 * (int) (myHive.s5.getHoney()/ 30.0)), wid ,  n - hei + (35 * (int) (myHive.s5.getHoney()/ 30.0)) );
                  g.drawString("" + ((int) myHive.s5.getHoney())  + "Pounds of Honey", (m+wid+5) , (n-hei)+8);
               }
               break;
            default:
               break;
            }//ends switch statement

         }
         else if ( build[i] == 3)
         {
            hei = 5;
            g.fillRect( m , n , wid , hei );
            n = (n+hei);
         }
         else if ( build[i] == 2)
         {
            hei = 55;
            g.drawRect( m , n , wid , hei );
            n = (n+hei);
            switch (i)
            {
            case 1:
               if (myHive.h1.isFullBrood())
                  g.drawString("Is Full " , (m+wid+5) , (n-hei)+8); 
               else
                  g.drawString(((int) myHive.h1.getBrood()) + " Brood" + " Queen? " + myHive.h1.isQueen() , (m+wid+5) , (n-hei)+8);
               break;
            case 2:
               if (myHive.h2.isFullBrood())
                  g.drawString("Is Full " , (m+wid+5) , (n-hei)+8); 
               else
                  g.drawString(((int) myHive.h2.getBrood()) + " Brood" + " Queen? " + myHive.h2.isQueen() , (m+wid+5) , (n-hei)+8);
               break;
            default:
               break;
            }//ends switch statement
         }
         else if ( build[i] == 1 )
         {
            hei = 10;
            g.fillRect(m-5, n , wid + 10 , hei);
            n = (n+hei);
         }
      }// ends for loop
     
}//ends Paint()



public void actionPerformed( ActionEvent e )
{
   int i;
   if (runVal)
   {

   if ( e.getSource() == CheckBees)
   {
      myHive.h1.numberBees -= 500;
      if (myHive.h1.numberBees < myHive.h1.MaxBees)
         myHive.h1.fullBees = false;


      int CheckedBees = 0;
      CheckedBees += myHive.h1.getBees();
      CheckedBees += myHive.h2.getBees();
      CheckedBees += myHive.s1.getBees();
      CheckedBees += myHive.s2.getBees();
      CheckedBees += myHive.s3.getBees();
      CheckedBees += myHive.s4.getBees();
      CheckedBees += myHive.s5.getBees();

      currentBeesInHive.setText("Bees In Hive " + CheckedBees);
      showStatus("Bees In Hive " + CheckedBees);
   } // ends SwitchSupers processor


   if ( e.getSource() == Medicate)
   {
      myHive.h1.numberBees -= 500;
      if (myHive.h1.numberBees < myHive.h1.MaxBees)
         myHive.h1.fullBees = false;

      if (diseaseValue == 4)
      {
         runVal = false;
           ytdProducedHoney.setText("      A BEAR ");
         currentHoneyInHive.setText("    HAS KNOCKED  ");
          currentBeesInHive.setText("       OVER   ");
         currentBroodInHive.setText("   YOUR BEE HIVE   ");
         currentDisease.setText("A Bear");
         showStatus("Sorry, a bear knocked over your Bee Hive.  Please play again. ");
      }

      else
      {
         currentDisease.setText( "" + diseaseLabel[diseaseValue] + " have been exterminated");
         diseaseValue = 0;
         showStatus("The Bees have been medicated");
      }
   } // ends Medicate processor

   
   if ( e.getSource() == CheckAll)
   {
      repaint();
   }   // end process CheckAll event

   else if (e.getSource() == CheckHoney)
   {
      double CheckedHoney = 0.0;
      for( i = 0; i < 10 ; i++)
      {
         if ( build[i] == 4)
            CheckedHoney += myHive.CHECK(i);

      }
      currentHoneyInHive.setText("Honey in Hive " + ( (int) CheckedHoney));
      showStatus("Honey in Hive " + CheckedHoney);
   }   // end process CheckHoney event
   else if (e.getSource() == RobAll)
   {
      myHive.h1.numberBees -= 500;
      if (myHive.h1.numberBees < myHive.h1.MaxBees)
         myHive.h1.fullBees = false;
      RobbedHoney = 0.0;
      for( i = 0; i < 10 ; i++)
      {
         if ( build[i] == 4)
            RobbedHoney += myHive.ROB(i);
      }
      honeyProduced += RobbedHoney;
      ytdProducedHoney.setText(((int) honeyProduced ) + " Pounds of Honey Produced");
   }   // end process RobAll event
   else if (e.getSource() == Speed)
   {
      int hold = speedValue;
      if ( hold == 3 )
         hold = 0;
      else if (hold == 1)
         hold++;
      else
         hold++;
      Speed.setLabel(speedLabel[hold]);
      speedValue = hold;
   }   // end process Speed event
   } // ends if (runVal)
}//ends actionPerformed

int randomDisease()
{
   int retval = 0;
   int randomValue = (int) ( 1 + Math.random() * 75);
   if (randomValue == 1)
      retval = 1;
   else if (randomValue == 2)
      retval = 2;
   else if (randomValue == 3)
      retval = 3;
   else if (randomValue == 4)
      retval = 4;
   else
      retval = 0;   
   return retval;
}

public void start()
{
   runthread = new Thread( this, "RunThread" );
   runthread.start();
}

public void stop()
{
   runthread.stop();
}

public void run()
{
while( runVal )
{
   int SV;
   SV = speedValue;
   int SVCoord = 0;
   Thread RT;

   switch(SV)
   {
   case 0:
      while (speedValue == 0)
      {
         try {
            Thread.sleep(1000);
         }
         catch ( InterruptedException e )  {
            e.printStackTrace();
         }
      }
      break;
   case 1:
      SVCoord = 5;
      break;
   case 2:
      SVCoord = 3;
      break;
   case 3:
      SVCoord = 1;
      break;
   default:
      SVCoord = 3;
      break;
   }

   if (diseaseValue == 0)
      diseaseValue = randomDisease();

   try {
      Thread.sleep( 600 * SVCoord );  //sleeps ten seconds for each speed
   }
   catch ( InterruptedException e1 )  {
      e1.printStackTrace();
   }

   //Calculates the current Bee Population and Brood and Honey for each box
   double leftoverHoney = 0.0;
   double leftoverBrood = 0.0;
   int leftoverBees = 0;
if (diseaseValue == 0)
{
   repaint();
   if (build[1] == 2)
   {
      if(myHive.h1.isQueen())
         leftoverBrood = myHive.h1.incrementBrood( (Math.random() * 5));
      else
         myHive.h1.incrementBrood(-5.0); //loses pound of bees in queen isn't there
      if(!myHive.h1.isFullBees())
         leftoverBees  = myHive.h1.incrementBees( (int) ( (Math.random() * 40 * myHive.h1.getBrood()) - 100));
      if (!myHive.h1.isFullHoney())
         leftoverHoney = myHive.h1.incrementHoney((double) Math.random() * myHive.h1.getBees() / 500.0 );
   }
   if (build[2] ==2)
   {
      if(myHive.h2.isQueen())
         leftoverBrood = myHive.h2.incrementBrood( (Math.random() * 5));
      else
         myHive.h2.incrementBrood(-5.0); //loses pound of bees in queen isn't there
      if(!myHive.h2.isFullBees())
         leftoverBees  = myHive.h2.incrementBees( (int) ( (Math.random() * 40 * myHive.h2.getBrood()) - 100));
      if (!myHive.h2.isFullHoney())
         leftoverHoney = myHive.h2.incrementHoney((double) Math.random() * myHive.h2.getBees() / 5000.0 );
   }
   double totalBrood = 0.0;
   totalBrood = myHive.h1.getBrood() + myHive.h2.getBrood();
   if (build[4] ==4)
   {
      if(!myHive.s1.isFullBees())
         leftoverBees  = myHive.s1.incrementBees( (int)(totalBrood * Math.random() * 50) + leftoverBees);
      if (!myHive.s1.isFullHoney())
         leftoverHoney=myHive.s1.incrementHoney((double)(Math.random()*myHive.s1.getBees()/5000.0)+leftoverHoney);
   }
   if (build[5] ==4)
   {
      if(!myHive.s2.isFullBees())
         leftoverBees  = myHive.s2.incrementBees( (int)(totalBrood * Math.random() * 40) + leftoverBees );
      if (!myHive.s2.isFullHoney())
         leftoverHoney=myHive.s2.incrementHoney((double)(Math.random()*myHive.s2.getBees()/5000.0)+leftoverHoney);
   }
   if (build[6] ==4)
   {
      if(!myHive.s3.isFullBees())
         leftoverBees  = myHive.s3.incrementBees( (int)(totalBrood * Math.random() * 30) + leftoverBees );
      if (!myHive.s3.isFullHoney())
         leftoverHoney=myHive.s3.incrementHoney((double)(Math.random()*myHive.s3.getBees()/5000.0)+leftoverHoney);
   }
   if (build[7] ==4)
   {
      if(!myHive.s4.isFullBees())
         leftoverBees  = myHive.s4.incrementBees( (int)(totalBrood * Math.random() * 20) + leftoverBees );
      if (!myHive.s4.isFullHoney())
         leftoverHoney=myHive.s4.incrementHoney((double)(Math.random()*myHive.s4.getBees()/5000.0)+leftoverHoney);
   }
   if (build[8] ==4)
   {
      if(!myHive.s5.isFullBees())
         leftoverBees  = myHive.s5.incrementBees( leftoverBees );
      if (!myHive.s5.isFullHoney())
         leftoverHoney=myHive.s5.incrementHoney((double)(Math.random()*myHive.s5.getBees()/5000.0)+leftoverHoney);
   }
 }
 }
} //end of run




//*********************HIVE CLASS***********HIVE CLASS********************

class Hive
{
   hivebody h1;
   hivebody h2;
   hivesuper s1;
   hivesuper s2;
   hivesuper s3;
   hivesuper s4;
   hivesuper s5;
   int x, y;

                      //*********HIVE CONSTRUCTOR************//
   public Hive(int x, int y)  //x denotes hive bodies, y denotes supers
   {


      this.x = x;
      this.y = y;
      for (int dz = 0 ; dz < 10; dz++)
      {
         build[dz] = 0;
      }
      System.out.println("In Hive Constructor");
      if (x < 1)
         x=1;
      if (x > 2)
         x=2;
      if (y < 1)
         y=1;
      if (y > 5)
         y=5;

      build[0] = 1;   //puts in Baseboard
      build[1] = 2;   //hivebody
      build[2] = 2;  // hive body II
      build[3] = 3;  // excluder
      build[4] = 4;  // super
      for(int i = 5; i < y + 4; i++)
         build[i] = 4;
      build[9] = 5;  // hive cover

      int pos = 1;

      h1 = new hivebody(1);
      h1.QueenHere = true;
      h1.incrementBrood(5.0);
      h1.incrementBees(4000);
      h2 = new hivebody(2);
      s1 = new hivesuper(4);
      s2 = new hivesuper(5); 
      s3 = new hivesuper(6); 
      s4 = new hivesuper(7); 
      s5 = new hivesuper(8); 


   }//ends Hive constructor

   double ROB(int pos)
   {
     double robbedHoney = 0.0;
     int x;
     if (build[pos] == 4)
     {
        x = (pos-3);
        switch (x)
        {
        case(1):
           robbedHoney = myHive.s1.incrementHoney(-1.0);
           break;
        case(2):
           robbedHoney = myHive.s2.incrementHoney(-1.0);
           break;
        case(3):
           robbedHoney = myHive.s3.incrementHoney(-1.0);
           break;
        case(4):
           robbedHoney = myHive.s4.incrementHoney(-1.0);
           break;
        case(5):
           robbedHoney = myHive.s5.incrementHoney(-1.0);
           break;
        default:
           break;
        }//ends switch statement
      }//ends correct ROB if statement
      else
      {
         showStatus("Can't rob that");
      }//ends else statment
      return robbedHoney;
   }//ends ROB
                  //************CHECK**************
   public double CHECK(int pos)
   {
     double CheckedHoney = 0.0;
     int x;
     if (build[pos] == 4)
     {
        x = (pos-3);
        switch (x)
        {
        case(1):
           CheckedHoney = myHive.s1.getHoney();
           break;
        case(2):
           CheckedHoney = myHive.s2.getHoney();
           break;
        case(3):
           CheckedHoney = myHive.s3.getHoney();
           break;
        case(4):
           CheckedHoney = myHive.s4.getHoney();
           break;
        case(5):
           CheckedHoney = myHive.s5.getHoney();
           break;
        default:
           break;
        }//ends switch statement
      }//ends correct CHECK if statement
      else
      {
         System.out.println("Can't Check that");
      }//ends else statment
      return CheckedHoney;
   }//ends CHECK



                   //**************CLASS HIVEBODY******************
class hivebody
{
   double MaxHoney = 10.0;
   double MaxBrood = 40.0;
   int MaxBees = 15000;

    boolean QueenHere = false;

      boolean fullHoney = false;
      boolean fullBrood = false;
      boolean fullBees  = false;

      double PoundsHoney = 0.0;
      double PoundsBrood = 0.0;
      int numberBees = 0;

      boolean isQueen() { return QueenHere; }
      boolean isFullHoney() { return fullHoney; }
      boolean isFullBrood() { return fullBrood; }
      boolean isFullBees() { return fullBees; }

      double getHoney() { return PoundsHoney; }
      double getBrood() { return PoundsBrood; }
      int getBees() { return numberBees; }

      int position;    //keeps track of location in the build array

      public hivebody(int pos)
      {
         position = pos;
      }// ends constructor for hivebody

      double incrementHoney( double h )
      {
         double leftover = 0.0;
         if ( (h >= 0.0) && (!isFullHoney()) )
         {
            if ( (PoundsHoney + h) > MaxHoney )
            {
               fullHoney = true;
               leftover = (PoundsHoney + h) - MaxHoney;
            }
            else
            {
               PoundsHoney += h;
            }

         }
         else if (isFullHoney())
            leftover = h;
         else if (h < 0.0)
         {
            leftover = PoundsHoney;
            PoundsHoney = 0.0;
         }
         return leftover;
      }// ends incrementHoney


      double incrementBrood( double b )
      {
         double leftover = 0.0;

         if ( (PoundsBrood + b) > MaxBrood )
         {
            fullBrood = true;
            leftover = (PoundsBrood + b) - MaxBrood;
            if (h1.QueenHere)
            {
               myHive.h2.QueenHere = true;
               myHive.h1.QueenHere = false;
            }
            else
            {
               myHive.h2.QueenHere = false;
               myHive.h1.QueenHere = true;
               
            }
         }
         else if (b < 0.0)
         {
            PoundsBrood += b;
            fullBrood = false;
            if (PoundsBrood < 0.0)
               PoundsBrood = 0.0;
         }
         else if (b >= 0.0)
         {
            PoundsBrood += b;
         }
         return leftover;
      }// ends incrementBrood

      public int incrementBees( int b )
      {
         int leftover = 0;
         if ( (numberBees + b) > MaxBees )
         {
            fullBees = true;
            leftover = (numberBees + b) - MaxBees;
         }
         else
         {
            numberBees += b;
            if (numberBees < 0.0)
            {
               leftover = numberBees;
               numberBees = 0;
            }
         }
         return leftover;
      }// ends incrementBees

   }// ends class hivebody

                     //***************CLASS HIVESUPER*************

   class hivesuper
   {
      double MaxHoney = 30.0;
      int MaxBees = 8000;

      boolean fullBees = false;
      boolean fullHoney = false;
                                  
      double PoundsHoney = 0.0;
      int numberBees = 0;

      public boolean isFullHoney() { return fullHoney; }
      public boolean isFullBees() { return fullBees; }


      public double getHoney() { return PoundsHoney; }
      public int getBees() { return numberBees; }

      int position;    //keeps track of location in the build array

      public hivesuper(int pos)
      {
         position = pos;
      }// ends constructor for hivesuper

      public double incrementHoney( double h )
      {
         double leftover = 0.0;
         if ( (h >= 0.0) && (!isFullHoney()) )
         {
            if ( (PoundsHoney + h) > MaxHoney )
            {
               fullHoney = true;
               leftover = (PoundsHoney + h) - MaxHoney;
            }
            else
            {
               PoundsHoney += h;
            }
         }
         else if (h < 0.0)
         {
            leftover = PoundsHoney;
            PoundsHoney = 0.0;
            fullHoney = false;
         }
         else if (isFullHoney())
            leftover = h;
         return leftover;
      }// ends incrementHoney

      public int incrementBees( int b )
      {
         int leftover = 0;
         if ( (numberBees + b) > MaxBees )
         {
            fullBees = true;
            leftover = (numberBees + b) - MaxBees;
         }
         else
         {
            numberBees += b;
            if (numberBees < 0.0)
            {
               leftover = numberBees;
               numberBees = 0;
            }
         }
         return leftover;
      }// ends incrementBees


   }// ends class hivesuper

                //***************FUNCTION ROB**************



}// ends class Hive

  

}//ends BeeHive class