Exemple #1
0
        private void Loop(object o)
        {
            Sync.Lock("GameLoop");

            try
            {
                if (m_status == TetrisStatus.READY)
                {
                    m_status = TetrisStatus.CONTINUE;
                }

                //揃った!
                if (!_Stage.HasMovablePiece() && _Stage.HasLinkedLines())
                {
                    //
                    _Stage.EraseLines();
                    //Update();

                    m_timer.Change(Const.ERASE_DUETIME, Const.UPDATE_PERIOD);
                    //下にどーん
                    //if ((!m_stage.HasMovablePiece() && m_stage.HasBlankedLines()))
                    //{
                    //
                    _Stage.HardDropAll();
                    //Update();

                    //}
                    return;
                }

                //次のテトリス
                if (!_Stage.HasMovablePiece())
                {
                    _Stage.AddPiece();
                    //Update();
                    return;
                }

                //TODO:
                //1fps単位に描画
                _Stage.MovePiece(Direction.Bottom);
                //Update();
            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                //
                Update();
                Sync.UnLock();
            }
        }
Exemple #2
0
        public void Start()
        {
            if (!(m_status == TetrisStatus.NOTSTART))
            {
                return;
            }

            lock (this)
            {
                m_timer  = new Timer(Loop, null, 0, Const.UPDATE_PERIOD);
                m_status = TetrisStatus.READY;
            }
            //Loop(null);
        }
Exemple #3
0
 public Tetris(int stage_Width, int stage_Height)
 {
     m_stage = new Stage(stage_Width, stage_Height);
     m_status = TetrisStatus.NOTSTART;
 }
Exemple #4
0
 public TetrisEventArgs(TetrisStatus status, Stage stage)
 {
     m_status = status;
     m_stage = stage;
 }
Exemple #5
0
        private void Loop(object o)
        {
            Sync.Lock("GameLoop");

            try
            {
                if (m_status == TetrisStatus.READY)
                    m_status = TetrisStatus.CONTINUE;

                //揃った!
                if (!_Stage.HasMovablePiece() && _Stage.HasLinkedLines())
                {
                    //
                    _Stage.EraseLines();
                    //Update();

                    m_timer.Change(Const.ERASE_DUETIME, Const.UPDATE_PERIOD);
                    //下にどーん
                    //if ((!m_stage.HasMovablePiece() && m_stage.HasBlankedLines()))
                    //{
                    //
                    _Stage.HardDropAll();
                    //Update();

                    //}
                    return;
                }

                //次のテトリス
                if (!_Stage.HasMovablePiece())
                {
                    _Stage.AddPiece();
                    //Update();
                    return;
                }

                //TODO:
                //1fps単位に描画
                _Stage.MovePiece(Direction.Bottom);
                //Update();
            }
            catch (Exception e)
            {
                throw;
            }
            finally
            {
                //
                Update();
                Sync.UnLock();
            }
        }
Exemple #6
0
        public void Start()
        {
            if (! (m_status == TetrisStatus.NOTSTART))
                return;

            lock (this)
            {
                m_timer = new Timer(Loop, null, 0, Const.UPDATE_PERIOD);
                m_status = TetrisStatus.READY;
            }
            //Loop(null);
        }
Exemple #7
0
 public Tetris(int stage_Width, int stage_Height)
 {
     m_stage  = new Stage(stage_Width, stage_Height);
     m_status = TetrisStatus.NOTSTART;
 }
Exemple #8
0
 public TetrisEventArgs(TetrisStatus status, Stage stage)
 {
     m_status = status;
     m_stage  = stage;
 }