diff --git a/VAR.ScreenAutomation/Bots/TetrisBot.cs b/VAR.ScreenAutomation/Bots/TetrisBot.cs index a9804a5..a90c5b3 100644 --- a/VAR.ScreenAutomation/Bots/TetrisBot.cs +++ b/VAR.ScreenAutomation/Bots/TetrisBot.cs @@ -242,115 +242,122 @@ namespace VAR.ScreenAutomation.Bots private static List _defaultShapes = null; + public static List DefaultShapes + { + get + { + if (_defaultShapes == null) + { + _defaultShapes = new List + { + // I + new TetrisShape(new byte[][]{ + new byte[]{ 1, 1, 1, 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 1, }, + new byte[]{ 1, }, + new byte[]{ 1, }, + new byte[]{ 1, }, + }), + + // J + new TetrisShape(new byte[][]{ + new byte[]{ 1, }, + new byte[]{ 1, 1, 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 1, 1, }, + new byte[]{ 1, }, + new byte[]{ 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 1, 1, 1, }, + new byte[]{ 0, 0, 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 0, 1, }, + new byte[]{ 0, 1, }, + new byte[]{ 1, 1, }, + }), + + // L + new TetrisShape(new byte[][]{ + new byte[]{ 0, 0, 1, }, + new byte[]{ 1, 1, 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 1, }, + new byte[]{ 1, }, + new byte[]{ 1, 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 1, 1, 1, }, + new byte[]{ 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 1, 1, }, + new byte[]{ 0, 1, }, + new byte[]{ 0, 1, }, + }), + + // S + new TetrisShape(new byte[][]{ + new byte[]{ 0, 1, 1, }, + new byte[]{ 1, 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 1, }, + new byte[]{ 1, 1, }, + new byte[]{ 0, 1, }, + }), + + // T + new TetrisShape(new byte[][]{ + new byte[]{ 0, 1, }, + new byte[]{ 1, 1, 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 1, }, + new byte[]{ 1, 1, }, + new byte[]{ 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 1, 1, 1, }, + new byte[]{ 0, 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 0, 1, }, + new byte[]{ 1, 1, }, + new byte[]{ 0, 1, }, + }), + + // Z + new TetrisShape(new byte[][]{ + new byte[]{ 1, 1, }, + new byte[]{ 0, 1, 1, }, + }), + new TetrisShape(new byte[][]{ + new byte[]{ 0, 1, }, + new byte[]{ 1, 1, }, + new byte[]{ 1, }, + }), + + // O + new TetrisShape(new byte[][]{ + new byte[]{ 1, 1, }, + new byte[]{ 1, 1, }, + }) + }; + } + return _defaultShapes; + } + } + public bool IsValid() { - if (_defaultShapes == null) - { - _defaultShapes = new List - { - // I - new TetrisShape(new byte[][]{ - new byte[]{ 1, 1, 1, 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 1, }, - new byte[]{ 1, }, - new byte[]{ 1, }, - new byte[]{ 1, }, - }), - - // J - new TetrisShape(new byte[][]{ - new byte[]{ 1, }, - new byte[]{ 1, 1, 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 1, 1, }, - new byte[]{ 1, }, - new byte[]{ 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 1, 1, 1, }, - new byte[]{ 0, 0, 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 0, 1, }, - new byte[]{ 0, 1, }, - new byte[]{ 1, 1, }, - }), - - // L - new TetrisShape(new byte[][]{ - new byte[]{ 0, 0, 1, }, - new byte[]{ 1, 1, 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 1, }, - new byte[]{ 1, }, - new byte[]{ 1, 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 1, 1, 1, }, - new byte[]{ 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 1, 1, }, - new byte[]{ 0, 1, }, - new byte[]{ 0, 1, }, - }), - - // S - new TetrisShape(new byte[][]{ - new byte[]{ 0, 1, 1, }, - new byte[]{ 1, 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 1, }, - new byte[]{ 1, 1, }, - new byte[]{ 0, 1, }, - }), - - // T - new TetrisShape(new byte[][]{ - new byte[]{ 0, 1, }, - new byte[]{ 1, 1, 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 1, }, - new byte[]{ 1, 1, }, - new byte[]{ 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 1, 1, 1, }, - new byte[]{ 0, 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 0, 1, }, - new byte[]{ 1, 1, }, - new byte[]{ 0, 1, }, - }), - - // Z - new TetrisShape(new byte[][]{ - new byte[]{ 1, 1, }, - new byte[]{ 0, 1, 1, }, - }), - new TetrisShape(new byte[][]{ - new byte[]{ 0, 1, }, - new byte[]{ 1, 1, }, - new byte[]{ 1, }, - }), - - // O - new TetrisShape(new byte[][]{ - new byte[]{ 1, 1, }, - new byte[]{ 1, 1, }, - }) - }; - } - if (_count != 4) { return false; } - bool matchesAnyDefault = _defaultShapes.Any(ts => CompareShape(ts)); + bool matchesAnyDefault = DefaultShapes.Any(ts => CompareShape(ts)); return matchesAnyDefault; }