예제 #1
0
        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;
        }
예제 #2
0
 /// <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);
         }
     }
 }
예제 #3
0
        /// <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;//移动完毕
            }
        }