Ejemplo n.º 1
0
        public void RotateAround(FerryDir whereDir, int degrees)
        {
            Console.WriteLine($"Rotate {ToString()} to {whereDir} by {degrees}");
            var value = (int)(degrees / 90.0); //1, 2, 3

            if (whereDir == FerryDir.L)
            {
                value *= -1;
            }

            if (value < 0)
            {
                value += 4;
            }

            value %= 4;

            Console.WriteLine($"val {value}");

            switch (value)
            {
            case 1:     //90
                (x, y) = (y, -x);
                break;

            case 2:     //180
                (x, y) = (-x, -y);
                break;

            case 3:     //270
                (x, y) = (-y, x);
                break;
            }
            Console.WriteLine($"rotated {ToString()}");
        }
Ejemplo n.º 2
0
    static FerryDir Rotate(FerryDir currentDir, FerryDir whereDir, int degrees)
    {
        Console.WriteLine($"Rotate current: {currentDir} where: {whereDir} by: {degrees}");

        var stuff = new List <(FerryDir, int)> {
            (FerryDir.N, 0),
            (FerryDir.E, 1),
            (FerryDir.S, 2),
            (FerryDir.W, 3)
        };
        var current = stuff.Single(s => s.Item1 == currentDir).Item2;
        var value   = (int)(degrees / 90.0);

        if (whereDir == FerryDir.L)
        {
            value *= -1;
        }

        Console.WriteLine($"current val: {current} to val: {value}");

        current = (current + value) % 4;
        if (current < 0)
        {
            current += 4;
        }

        Console.WriteLine($"after turn val: {current}");
        return(stuff.Single(s => s.Item2 == current).Item1);
    }
Ejemplo n.º 3
0
        public void MoveByCardinal(FerryDir dir, int dist)
        {
            switch (dir)
            {
            case FerryDir.N:
                y += dist;
                break;

            case FerryDir.E:
                x += dist;
                break;

            case FerryDir.S:
                y -= dist;
                break;

            case FerryDir.W:
                x -= dist;
                break;

            default:
                Console.WriteLine("Not a cardinal line!");
                break;
            }
        }