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); }
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 }); }
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 }); }
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; }
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); }
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; } }
public PlayingFieldBuilder(PlayingFieldSquare[,,] field) { _field = field; }
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 }); }