Exemplo n.º 1
0
        public void TestPlayingField()
        {
            var field   = new PlayingFieldSquare[1, 3, 7];
            var builder = new PlayingFieldBuilder(field);

            builder.ConstructOneFloor(0, new[]
            {
                "XXXXXXX",
                "X X X X",
                "XXX XXX"
            }
                                      );
            Assert.IsTrue(field[0, 0, 0].IsFlat);
            Assert.IsTrue(field[0, 0, 1].IsFlat);
            Assert.IsTrue(field[0, 0, 2].IsFlat);
            Assert.IsTrue(field[0, 1, 0].IsFlat);
            Assert.IsTrue(field[0, 1, 1].IsNone);
            Assert.IsTrue(field[0, 1, 2].IsFlat);
            Assert.IsTrue(field[0, 2, 0].IsFlat);
            Assert.IsTrue(field[0, 2, 1].IsFlat);
            Assert.IsTrue(field[0, 2, 2].IsFlat);

            Assert.IsTrue(field[0, 2, 3].IsNone);
            Assert.IsTrue(field[0, 2, 6].IsFlat);
        }
Exemplo n.º 2
0
        public void TestSlope4()
        {
            var field   = new PlayingFieldSquare[2, 6, 1];
            var builder = new PlayingFieldBuilder(field);

            builder.ConstructOneFloor(0, new[]
            {
                " ",
                " ",
                "U",
                "U",
                "U",
                "X",
            }
                                      );
            builder.ConstructOneFloor(1, new[]
            {
                "X",
                "D",
                " ",
                " ",
                " ",
                " ",
            }
                                      );
            Assert.IsTrue(field[1, 0, 4].IsPortal);
            Assert.AreEqual(field[1, 0, 4].Corners, new[] { -1, -1, 0, 0 });
        }
Exemplo n.º 3
0
 public void TestSlope2()
 {
     var field = new PlayingFieldSquare[1, 1, 3];
     var builder = new PlayingFieldBuilder(field);
     builder.ConstructOneFloor(0, new[]
                                      {
                                          "UUX"
                                      }
         );
     Assert.IsTrue(field[0, 0, 2].IsFlat);
     Assert.AreEqual(field[0, 0, 0].Corners, new[] { 2, 2, 1, 1 });
     Assert.AreEqual(field[0, 0, 1].Corners, new[] { 1, 1, 0, 0 });
 }
Exemplo n.º 4
0
        public void TestSlope2()
        {
            var field   = new PlayingFieldSquare[1, 1, 3];
            var builder = new PlayingFieldBuilder(field);

            builder.ConstructOneFloor(0, new[]
            {
                "UUX"
            }
                                      );
            Assert.IsTrue(field[0, 0, 2].IsFlat);
            Assert.AreEqual(field[0, 0, 0].Corners, new[] { 2, 2, 1, 1 });
            Assert.AreEqual(field[0, 0, 1].Corners, new[] { 1, 1, 0, 0 });
        }
Exemplo n.º 5
0
 public static PlayingFieldSquare[,,] Create(
     IList<string[]> fields,
     int width,
     int height,
     ref Whereabouts playerWhereaboutsStart,
     ref Whereabouts enemyWhereaboutsStart)
 {
     var result = new PlayingFieldSquare[fields.Count, height, width];
     var builder = new PlayingFieldBuilder(result);
     for (var i = 0; i < fields.Count; i++)
         builder.ConstructOneFloor(
             i,
             fields[i],
             ref playerWhereaboutsStart,
             ref enemyWhereaboutsStart);
     return result;
 }
Exemplo n.º 6
0
 public void TestSimplePlayingField()
 {
     var field = new PlayingFieldSquare[1,3,3];
     var builder = new PlayingFieldBuilder(field);
     builder.ConstructOneFloor(0, new[]
                                      {
                                          "XXX",
                                          "X X",
                                          "XXX"
                                      }
         );
     Assert.IsTrue(field[0, 0, 0].IsFlat);
     Assert.IsTrue(field[0, 0, 1].IsFlat);
     Assert.IsTrue(field[0, 0, 2].IsFlat);
     Assert.IsTrue(field[0, 1, 0].IsFlat);
     Assert.IsTrue(field[0, 1, 1].IsNone);
     Assert.IsTrue(field[0, 1, 2].IsFlat);
     Assert.IsTrue(field[0, 2, 0].IsFlat);
     Assert.IsTrue(field[0, 2, 1].IsFlat);
     Assert.IsTrue(field[0, 2, 2].IsFlat);
 }
Exemplo n.º 7
0
        public void ConstructOneFloor(
            int floor,
            string[] field,
            ref Whereabouts playerWhereaboutsStart,
            ref Whereabouts enemyWhereaboutsStart)
        {
            _floor = floor;

            var height = field.Length;
            var width = field[0].Length;

            var expectedHeight = _field.GetUpperBound(1) + 1;
            var expectedWidth = _field.GetUpperBound(2) + 1;
            if (expectedHeight != height || expectedWidth != width)
                throw new Exception();

            while (true)
            {
                var mustRunAgain = false;
                for (var y = 0; y < height; y++)
                    for (var x = 0; x < width; x++)
                    {
                        if (!_field[floor, y, x].IsNone)
                            continue;
                        switch (field[y][x])
                        {
                            case ' ':
                                _field[floor, y, x] = new PlayingFieldSquare();
                                break;

                            case 'A':
                                playerWhereaboutsStart = calcWhereabouts(field, 'a', floor, x, y);
                                goto case 'X';

                            case 'B':
                                enemyWhereaboutsStart = calcWhereabouts(field, 'b', floor, x, y);
                                goto case 'X';

                            case 'N':
                                _field[floor, y, x] = PlayingFieldSquare.CreateFlat(0, DirectionValue.North);
                                break;
                            case 'S':
                                _field[floor, y, x] = PlayingFieldSquare.CreateFlat(0, DirectionValue.South);
                                break;
                            case 'E':
                                _field[floor, y, x] = PlayingFieldSquare.CreateFlat(0, DirectionValue.East);
                                break;
                            case 'W':
                                _field[floor, y, x] = PlayingFieldSquare.CreateFlat(0, DirectionValue.West);
                                break;

                            case 'X':
                            case 'a':
                            case 'b':
                                _field[floor, y, x] = PlayingFieldSquare.CreateFlat(0);
                                break;
                            case 'D':
                                _field[floor, y, x] = createSlopeSquare(x, y, true);
                                mustRunAgain |= _field[floor, y, x].IsNone;
                                break;
                            case 'U':
                                _field[floor, y, x] = createSlopeSquare(x, y, false);
                                mustRunAgain |= _field[floor, y, x].IsNone;
                                break;
                        }
                    }
                if (!mustRunAgain)
                    return;
            }
        }
Exemplo n.º 8
0
 public PlayingFieldBuilder(PlayingFieldSquare[,,] field)
 {
     _field = field;
 }
Exemplo n.º 9
0
 public void TestSlope3()
 {
     var field = new PlayingFieldSquare[2, 1, 6];
     var builder = new PlayingFieldBuilder(field);
     builder.ConstructOneFloor(0, new[]
                                      {
                                          "XUUU  ",
                                      }
         );
     builder.ConstructOneFloor(1, new[]
                                      {
                                          "    DX",
                                      }
         );
     Assert.IsTrue(field[1, 0, 4].IsPortal);
     Assert.AreEqual(field[1, 0, 4].Corners, new[] { -1, -1, 0, 0 });
 }