private void elementMove(object obj) { TetrisElement telement = obj as TetrisElement; while (isRunning && telement != null) { if (!isMove) { telement = TetrisFactory.move(tcontainer, telement, TetrisDirection.DEFAULT); } Thread.Sleep(500); } element = telement; }
/// <summary> /// 后台线程执行 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BgWorker_DoWork(object sender, DoWorkEventArgs e) { while (isRunning) { if (element == null) { //如果元素为空,则创建元素,并启动新线程 element = TetrisFactory.generate(); Thread t = new Thread(new ParameterizedThreadStart(elementMove)); t.Start(element); } else { //暂停1秒钟 Thread.Sleep(1000); } } }
/// <summary> /// 按下键 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void TetrisControl_KeyDown(object sender, Keys keyCode) { //只有开始时才响应事件 if (isRunning && element != null) { switch (keyCode) { case Keys.Left: isMove = true; TetrisFactory.move(tcontainer, element, TetrisDirection.LEFT); break; case Keys.Right: isMove = true; TetrisFactory.move(tcontainer, element, TetrisDirection.RIGHT); break; } isMove = false;//移动完毕 } }