public Game() { Screen = new Defs.Blocks[32, 32]; PreviousScreen = new Defs.Blocks[32, 32]; Field = new Field(10, 26); RandomBlocksList = new List <Defs.Blocks[, ]>(); NextBlocks = GetRandomBlocks(); MergeToScreen(NextBlocks, 1, 1); HoldBlocks = null; MergeToScreen(Blocks.ReplaceBlock(Blocks.GetEmptyBlocks(), Defs.Blocks.EmptyBlock, Defs.Blocks.EmptyField), 1, 6); MergeToScreen(Field.FieldBlocks, 6, 1, FieldScreenOffsetY); }
public void Update() { var inputKey = new ConsoleKeyInfo(); var stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); double prevElapsed = 0; do { Input.Instance.Update(); //Drawer.Clear(); var currentElapsed = stopwatch.Elapsed.TotalMilliseconds; var delta = currentElapsed - prevElapsed; prevElapsed = currentElapsed; Field.RotateBlocks = Input.Instance.IsKeyTrigger(Input.KeyCode.Z); Field.ReverseRotateBlocks = Input.Instance.IsKeyTrigger(Input.KeyCode.X); Field.MoveLeftBlocks = Input.Instance.IsKeyPress(Input.KeyCode.Left); Field.MoveRightBlocks = Input.Instance.IsKeyPress(Input.KeyCode.Right); Field.MoveDownBlocks = Input.Instance.IsKeyPress(Input.KeyCode.Down); Field.FallenBlocks = Input.Instance.IsKeyTrigger(Input.KeyCode.Up); if (Input.Instance.IsKeyTrigger(Input.KeyCode.A)) { var swappedBlocks = Field.SwapActiveBlocks(HoldBlocks); if (swappedBlocks != null) { HoldBlocks = swappedBlocks; MergeToScreen(HoldBlocks, 1, 6); } } int clearLine = Field.Step(delta); Score += clearLine * 100; MergeToScreen(Field.FieldBlocks, 6, 1, FieldScreenOffsetY); if (!Field.HasActiveBlock) { var blocks = Blocks.ReplaceBlock(NextBlocks, Defs.Blocks.EmptyBlock, Defs.Blocks.EmptyField); if (Field.SpawnBlock(blocks)) { NextBlocks = GetRandomBlocks(); MergeToScreen(NextBlocks, 1, 1); } else { break; } } Drawer.DrawDifference(Screen, PreviousScreen); PreviousScreen = (Defs.Blocks[, ])Screen.Clone(); int x = Screen.GetLength(1), y = 2; Drawer.DrawText(x + 1, y++, "SCORE: {0}", Score); System.Threading.Thread.Sleep(1000 / 10); }while (inputKey.Key != ConsoleKey.Q); stopwatch.Stop(); Drawer.Clear(); Console.WriteLine("Your Score: {0}", Score); Console.ReadLine(); }