From c3c9bb88ab23cf00d4045ac3162a25c63b60ace5 Mon Sep 17 00:00:00 2001 From: "Valeriano A.R" Date: Fri, 8 Nov 2019 02:09:44 +0100 Subject: [PATCH] TetrisBot: Split DefaultShapes from IsValid method. --- VAR.ScreenAutomation/Bots/TetrisBot.cs | 219 +++++++++++++------------ 1 file changed, 113 insertions(+), 106 deletions(-) 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; }