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(); } }
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); }
public Tetris(int stage_Width, int stage_Height) { m_stage = new Stage(stage_Width, stage_Height); m_status = TetrisStatus.NOTSTART; }
public TetrisEventArgs(TetrisStatus status, Stage stage) { m_status = status; m_stage = stage; }
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(); } }
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); }