public Sprite.CompassDirections RandomDirection(Point currentLocation, Sprite.CompassDirections chooseCompassDirections)
        {
            Sprite.CompassDirections RandomDirection_result;
            int x = rand.Next(0, 100); //Rnd(1)*100;

            RandomDirection_result = chooseCompassDirections;
            if (x<RandomPercent) {
                switch(chooseCompassDirections) {
                    case Sprite.CompassDirections.East:
                        // Try the other directions
                        if (arrGameField[currentLocation.X, currentLocation.Y+1]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.South;
                        }
                        else if(arrGameField[currentLocation.X, currentLocation.Y-1]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.North;
                        }
                        else if(arrGameField[currentLocation.X-1, currentLocation.Y]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.West;
                        }
                        break;
                    case Sprite.CompassDirections.West:
                        // Try the other directions
                        if (arrGameField[currentLocation.X, currentLocation.Y+1]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.South;
                        }
                        else if(arrGameField[currentLocation.X, currentLocation.Y-1]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.North;
                        }
                        else if(arrGameField[currentLocation.X+1, currentLocation.Y]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.East;
                        }
                        break;
                    case Sprite.CompassDirections.North:
                        // Try the other directions
                        if (arrGameField[currentLocation.X, currentLocation.Y+1]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.South;
                        }
                        else if(arrGameField[currentLocation.X+1, currentLocation.Y]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.East;
                        }
                        else if(arrGameField[currentLocation.X-1, currentLocation.Y]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.West;
                        }
                        break;
                    case Sprite.CompassDirections.South:
                        // Try the other directions
                        if (arrGameField[currentLocation.X, currentLocation.Y-1]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.North;
                        }
                        else if(arrGameField[currentLocation.X+1, currentLocation.Y]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.East;
                        }
                        else if(arrGameField[currentLocation.X-1, currentLocation.Y]<=GameObjects.Empty) {
                            RandomDirection_result = Sprite.CompassDirections.West;
                        }
                        break;
                }
            }
            return RandomDirection_result;
        }
        public Sprite.CompassDirections ChooseNetterpillarDirection(Point currentLocation, Sprite.CompassDirections currentDirection)
        {
            Sprite.CompassDirections ChooseNetterpillarDirection_result = (Sprite.CompassDirections)0;
            GameObjects BestObject;
            GameObjects NextObject = (GameObjects)0;

            switch(currentDirection) {
                case Sprite.CompassDirections.East:
                    NextObject = arrGameField[currentLocation.X+1, currentLocation.Y];
                    break;
                case Sprite.CompassDirections.West:
                    NextObject = arrGameField[currentLocation.X-1, currentLocation.Y];
                    break;
                case Sprite.CompassDirections.South:
                    NextObject = arrGameField[currentLocation.X, currentLocation.Y+1];
                    break;
                case Sprite.CompassDirections.North:
                    NextObject = arrGameField[currentLocation.X, currentLocation.Y-1];
                    break;
            }

            //Pick the lowest value - Mushroom or empty
            BestObject = (GameObjects)Math.Min(Math.Min(Math.Min((int)arrGameField[currentLocation.X+1, currentLocation.Y], (int)arrGameField[currentLocation.X-1, currentLocation.Y]), (int)arrGameField[currentLocation.X, currentLocation.Y+1]), (int)arrGameField[currentLocation.X, currentLocation.Y-1]);

            // If the current direction is equal the best direction, stay in current direction
            if (NextObject==BestObject) {
                ChooseNetterpillarDirection_result = currentDirection;
            }
            else {
                // Select the direction of the best object
                if (BestObject == arrGameField[currentLocation.X+1, currentLocation.Y]) {
                    ChooseNetterpillarDirection_result = Sprite.CompassDirections.East;
                }
                else if (BestObject == arrGameField[currentLocation.X-1, currentLocation.Y]) {
                    ChooseNetterpillarDirection_result = Sprite.CompassDirections.West;
                }
                else if (BestObject == arrGameField[currentLocation.X, currentLocation.Y+1]) {
                    ChooseNetterpillarDirection_result = Sprite.CompassDirections.South;
                }
                else if (BestObject == arrGameField[currentLocation.X, currentLocation.Y-1]) {
                    ChooseNetterpillarDirection_result = Sprite.CompassDirections.North;
                }
            }

            ChooseNetterpillarDirection_result = RandomDirection(currentLocation, ChooseNetterpillarDirection_result);
            return ChooseNetterpillarDirection_result;
        }
        public Netterpillar(int x, int y, Sprite.CompassDirections initialDirection, bool isComputer)
        {
            NetterBody = new NetterBody[25+1];
            int incX=0, incY=0;

            IsComputer = isComputer;
            NetterHeadN = Load(Application.StartupPath+"\\"+IMAGE_PATH+"\\"+(IsComputer ? "" : "Player")+"NetterHeadN.gif");
            NetterHeadS = Load(Application.StartupPath+"\\"+IMAGE_PATH+"\\"+(IsComputer ? "" : "Player")+"NetterHeadS.gif");
            NetterHeadE = Load(Application.StartupPath+"\\"+IMAGE_PATH+"\\"+(IsComputer ? "" : "Player")+"NetterHeadE.gif");
            NetterHeadW = Load(Application.StartupPath+"\\"+IMAGE_PATH+"\\"+(IsComputer ? "" : "Player")+"NetterHeadW.gif");
            for(int i=0; i<NetterBodyLength; i++) {
                NetterBody[i] = new NetterBody(IsComputer);
            }

            // Position the Netterpillar on the given point
            Direction = initialDirection;
            Location.X = x;
            Location.Y = y;
            // Position each of the body parts
            switch(Direction) {
                case Sprite.CompassDirections.East:
                    incX = -1;
                    break;
                case Sprite.CompassDirections.South:
                    incY = -1;
                    break;
                case Sprite.CompassDirections.West:
                    incX = 1;
                    break;
                case Sprite.CompassDirections.North:
                    incY = 1;
                    break;
            }
            for(int i=0; i<NetterBodyLength; i++) {
                x += incX;
                y += incY;
                NetterBody[i].Location.X = x;
                NetterBody[i].Location.Y = y;
            }
        }