public ExecuteState(TetrisAgent agent, IList <Move> pendingMoves, Piece tracedPiece) : base(agent) { if (pendingMoves == null) { throw new ArgumentNullException(nameof(pendingMoves)); } if (!pendingMoves.Any()) { throw new ArgumentException("pendingMoves contains no elements"); } if (tracedPiece == null) { throw new ArgumentNullException(nameof(tracedPiece)); } if (agent.GameState == null) { throw new ArgumentNullException(nameof(agent.GameState)); } if (agent.GameState.Piece == null) { throw new ArgumentNullException(nameof(agent.GameState.Piece)); } if (agent.GameState.NextPiece == null) { throw new ArgumentNullException(nameof(agent.GameState.NextPiece)); } _pendingMoves = GetMovesParallel(pendingMoves); _tracedPiece = new Piece(tracedPiece); }
protected BaseState(TetrisAgent agent) { if (agent == null) { throw new ArgumentNullException(nameof(agent)); } Agent = agent; }
public AnalyzeState(TetrisAgent agent, TimeSpan beginTime, Tetrimino?currentTetrimino = null) : base(agent) { _beginTime = beginTime; _currentTetrimino = currentTetrimino; _currentPieceSampler = new CurrentTetriminoSampler(Agent.NumSamples); _nextPieceSampler = new NextTetriminoSampler(Agent.NumSamples); Agent.ExtractedPiece = null; Agent.ExtractedNextPiece = null; Agent.TracedPiece = null; }
public Board CreateAgent(int agentInd, Vector3 pos) { display.worldCamera = Camera.main; gameObject.transform.localPosition = pos; Board gameBoard = GetComponent <Board>(); TetrisAgent tetrisControl = GetComponent <TetrisAgent>(); Game gameManager = FindObjectOfType <Game>(); gameBoard.playerInd = agentInd; tetrisControl.playerInd = agentInd; gameBoard.gameManager = gameManager; tetrisControl.gameManager = gameManager; return(gameBoard); }
public void Init(TetrisAgent agent) { this.agent = agent; grid = GetComponent <TetrisGrid>(); gridTemp = new int[TetrisSettings.GridWidth, TetrisSettings.GridHeight]; ui.SetHighScore(0, 0); for (int i = 0; i < tetrominoes.Length; i++) { tetrominoes[i] = Instantiate(tetrominoes[i], Vector3.zero, Quaternion.identity).GetComponent <TetrisPiece>(); tetrominoes[i].transform.SetParent(transform); tetrominoes[i].Init(this, grid, true); tetrominoes[i].gameObject.SetActive(false); } }
public void Init() { _screenshot = new EmguScreenshot("Screenshots/tetris_play_1.png", TimeSpan.Zero); _screenshot.OriginalImage = _screenshot.Image; var currentPiece = Tetrimino.S; var nextPiece = Tetrimino.L; var moves = new List <Move> { Move.Left, Move.Rotate, Move.Drop }; _agent = new TetrisAgent(_configMock.Object, _clockMock.Object, _quantizer, _executorMock.Object, _extractor, _boardExtractor, _screenExtractor, _search); _agent.GameState = new GameState(currentPiece, nextPiece); _analyzeState = new AnalyzeState(_agent, TimeSpan.Zero, currentPiece); _executeState = new ExecuteState(_agent, moves, new Piece(currentPiece)); }
public GameOverState(TetrisAgent agent) : base(agent) { }
public ReadyState(TetrisAgent agent) : base(agent) { _logger.Info("Agent is ready"); }