Beispiel #1
0
        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);
        }
Beispiel #2
0
        protected BaseState(TetrisAgent agent)
        {
            if (agent == null)
            {
                throw new ArgumentNullException(nameof(agent));
            }

            Agent = agent;
        }
Beispiel #3
0
        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;
        }
Beispiel #4
0
    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);
    }
Beispiel #5
0
    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);
        }
    }
Beispiel #6
0
        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));
        }
Beispiel #7
0
 public GameOverState(TetrisAgent agent) : base(agent)
 {
 }
Beispiel #8
0
 public ReadyState(TetrisAgent agent) : base(agent)
 {
     _logger.Info("Agent is ready");
 }