/*游戏时钟*/ private void timer1_Tick(object sender, EventArgs e) { if (!stillRuning) { return; } //检测是否还可以下移 if (!currentBlock.down()) { if (currentBlock.Top() == 0) { //如果到顶则游戏结束 showMsg("Game Over!"); stillRuning = false; timer1.Stop(); return; } //否则计算分数并继续 int eraseLines = GameField.CheckLines(); if (eraseLines > 0) { score += GameField.width * eraseLines; t_score.Text = score.ToString(); picBackGround.Invalidate(); Application.DoEvents(); GameField.Redraw(); } //产生下一个block currentBlock = new Block(startLocation, nextBlock.blockType); currentBlock.Draw(GameField.winHandle); pic_preView.Refresh(); nextBlock = new Block(new Point(25, 25), Block.BlockTypes.undefined); nextBlock.Draw(pic_preView.Handle); } currentBlock.down(); }
/*窗口重绘*/ private void Form1_Activated(object sender, EventArgs e) { picBackGround.Invalidate(); Application.DoEvents(); GameField.Redraw(); }