public TetrisSimulator(GameState gameState = null) { var board = new Board(); var piece = new Piece(); var nextPiece = Tetriminos.GetRandom(); GameState = gameState ?? new GameState(board, piece, nextPiece) { StartLevel = 9 }; }
private void SpawnTetrimino() { currentTetriminos = (Tetriminos)Activator.CreateInstance(previewTetriminos.Peek()); ghostTetriminos = (Tetriminos)Activator.CreateInstance(previewTetriminos.Dequeue()); AddToQueue(); currentTetriminos.MoveDown(1); ghostTetriminos.IsGhostTetrimino = true; MoveGhostTetrimonos(); JustSwitched = false; }
public TetrisSimulator InHeartMode() { var board = new Board(); var piece = new Piece(); var nextPiece = Tetriminos.GetRandom(); GameState = new GameState(board, piece, nextPiece) { StartLevel = 9, HeartMode = true }; return(this); }
public void SimpleSearchRandomBoards() { int maxHeight = 15; for (int i = 0; i < 100; i++) { var board = TestHelper.GetRandomBoard(maxHeight); var current = Tetriminos.GetRandom(); var next = Tetriminos.GetRandom(); var gameState = new GameState(board, current, next); var result = _twoPieceSearch.Search(gameState); } }
private IEnumerable <GameState> GenerateGameStates(int number) { var random = new Random(123); for (int i = 0; i < number; i++) { var board = new Board().Random(random); var piece = new Piece(Tetriminos.GetRandom(random)); var nextPiece = Tetriminos.GetRandom(random); var gameState = new GameState(board, piece, nextPiece); yield return(gameState); } }
public void PredictiveSearchAllSeven_Parallel() { Tetrimino current = Tetriminos.GetRandom(); Task <SearchResult>[] tasks = new Task <SearchResult> [Tetriminos.All.Length]; foreach (var next in Tetriminos.All) { tasks[(int)next] = Task.Factory.StartNew(() => { var gameState = new GameState(current, next); return(_predictiveSearch.Search(gameState)); }); } Task.WaitAll(tasks); }
public void SwitchBank() { if (!JustSwitched) { JustSwitched = true; Type temp = currentTetriminos.GetType(); if (bankTetriminos != null) { currentTetriminos = (Tetriminos)Activator.CreateInstance(bankTetriminos); } else { SpawnTetrimino(); } bankTetriminos = temp; MoveGhostTetrimonos(); notifyObservers(); } }
static TimeSpan MeasurePredictiveSearch(int number) { var gamestates = Enumerable.Range(0, number) .Select(x => new Board().Random()) .Select(x => new GameState(x, Tetriminos.GetRandom(), Tetriminos.GetRandom())) .ToList(); var heuristic = new YiyuanLeeHeuristic(); var search = new PredictiveSearch(heuristic); var sw = new Stopwatch(); sw.Start(); foreach (var gamestate in gamestates) { var result = search.Search(gamestate); } sw.Stop(); return(sw.Elapsed); }
private bool Collides(Tetriminos tetriminos) { foreach (var position in tetriminos.Positions) { if (position.Y == 0) { return(true); } try { if (field[position.Y - 1][position.X] != 0) { return(true); } } catch (Exception) { } } return(false); }