public void LoadResources()
    {
        //Load some landscaping static resources
        groundLeft       = Object.Instantiate(Resources.Load("Prefabs/Solid"), new Vector3(-3.75f, -0.4f, -5.5f), Quaternion.identity) as GameObject;
        groundLeft.name  = "GroundLeft";
        groundRight      = Object.Instantiate(Resources.Load("Prefabs/Solid"), new Vector3(3.75f, -0.4f, -5.5f), Quaternion.identity) as GameObject;
        groundRight.name = "GroundRight";
        river            = Object.Instantiate(Resources.Load("Prefabs/River"), new Vector3(0, -0.81f, -5.5f), Quaternion.identity) as GameObject;
        river.name       = "River";

        //Load important game objects
        boat = new Boat(1);
        Vector3[] priestLandPos = new Vector3[3] {
            new Vector3(-2.9f, 1.1f, -5.5f), new Vector3(-3.4f, 1.1f, -5.5f), new Vector3(-3.9f, 1.1f, -5.5f)
        };
        for (int i = 0; i < 3; i++)
        {
            objPriest[i] = new Priest(i, priestLandPos[i]);
        }
        Vector3[] devilLandPos = new Vector3[3] {
            new Vector3(-4.4f, 1.0f, -5.5f), new Vector3(-4.9f, 1.0f, -5.5f), new Vector3(-5.4f, 1.0f, -5.5f)
        };
        for (int i = 0; i < 3; i++)
        {
            objDevil[i] = new Devil(i, devilLandPos[i]);
        }
        judgement.startTimer();
        //StartCoroutine(waitForOneSecond());
        aimove = new AutoMove(objPriest, objDevil, boat);
        tips   = aimove.AIMove();
    }
 public void checkMove(Character.Type objType, int id)
 {
     if (objType == Character.Type.classBoat)
     {
         if (boat.canMove())
         {
             boat.Move();
             actionManager.MoveBoat(boat);
             for (int i = 0; i < 3; i++)
             {
                 if (objPriest[i].position == Character.Status.leftBoat || objPriest[i].position == Character.Status.rightBoat)
                 {
                     objPriest[i].moveOnBoat(boat.isLeft);
                     actionManager.MovePriest(objPriest[i]);
                 }
             }
             for (int i = 0; i < 3; i++)
             {
                 if (objDevil[i].position == Character.Status.leftBoat || objDevil[i].position == Character.Status.rightBoat)
                 {
                     objDevil[i].moveOnBoat(boat.isLeft);
                 }
                 actionManager.MoveDevil(objDevil[i]);
             }
             judgement.checkWinOrLose(getPriestNum(Character.Status.leftLand) + getPriestNum(Character.Status.leftBoat), getPriestNum(Character.Status.rightLand) + getPriestNum(Character.Status.rightBoat), getDevilNum(Character.Status.leftLand) + getDevilNum(Character.Status.leftBoat), getDevilNum(Character.Status.rightLand) + getDevilNum(Character.Status.rightBoat));
         }
         tips = aimove.AIMove();
     }
     else if (objType == Character.Type.classPriest)
     {
         if (objPriest[id].position == Character.Status.leftLand || objPriest[id].position == Character.Status.rightLand)
         {
             if (boat.getCapacity() > 0)
             {
                 objPriest[id].Move(boat.isLeft, boat.getCapacity(), boat.assignSeat());
                 actionManager.MovePriest(objPriest[id]);
                 boat.add(objPriest[id].boatSeat);
             }
         }
         else
         {
             objPriest[id].Move(boat.isLeft, boat.getCapacity(), 0);
             actionManager.MovePriest(objPriest[id]);
             boat.remove(objPriest[id].boatSeat);
         }
         judgement.checkWinOrLose(getPriestNum(Character.Status.leftLand) + getPriestNum(Character.Status.leftBoat), getPriestNum(Character.Status.rightLand) + getPriestNum(Character.Status.rightBoat), getDevilNum(Character.Status.leftLand) + getDevilNum(Character.Status.leftBoat), getDevilNum(Character.Status.rightLand) + getDevilNum(Character.Status.rightBoat));
     }
     else if (objType == Character.Type.classDevil)
     {
         if (objDevil[id].position == Character.Status.leftLand || objDevil[id].position == Character.Status.rightLand)
         {
             if (boat.getCapacity() > 0)
             {
                 objDevil[id].Move(boat.isLeft, boat.getCapacity(), boat.assignSeat());
                 actionManager.MoveDevil(objDevil[id]);
                 boat.add(objDevil[id].boatSeat);
             }
         }
         else
         {
             objDevil[id].Move(boat.isLeft, boat.getCapacity(), 0);
             actionManager.MoveDevil(objDevil[id]);
             boat.remove(objDevil[id].boatSeat);
         }
         judgement.checkWinOrLose(getPriestNum(Character.Status.leftLand) + getPriestNum(Character.Status.leftBoat), getPriestNum(Character.Status.rightLand) + getPriestNum(Character.Status.rightBoat), getDevilNum(Character.Status.leftLand) + getDevilNum(Character.Status.leftBoat), getDevilNum(Character.Status.rightLand) + getDevilNum(Character.Status.rightBoat));
     }
 }