俄罗斯方块源码解析(带下载)[5]

写了几章了 ,该完了吧。

是骡子是马拉出来溜溜 ,好歹得给点东西大家瞧瞧啊,光说不练假把式。

最后在我们的form1窗体里 拖一个panel控件(俺就是喜欢拖控件,以呀咿呀哦),再放个lable用来显示分数

拖成这样:

然后再放个timmer控件 设置interval为500毫秒,设置enable=true

编写interval 事件:

 private void timer1_Tick(object sender, EventArgs e)
        {
            if (gm.isOver)
            {
                timer1.Enabled = false;
                MessageBox.Show("gameOver");
                return;
            }

            //one step
            gm.go();//对游戏逻辑 进行“下移” 操作(具体的下移到什么地方 比如到底了又如何 这些逻辑统统是在game类里面进行判断 操作)

            gm.display(panel1.Handle);//操作完成后进行显示

            score.Text = gm.score.ToString();
        }

窗体载入时:

public game gm;//主程序
        private void Form1_Load(object sender, EventArgs e)
        {
            //在窗体载入时 开始游戏
            gm = new game();
            gm.start();
        }      

编写窗体的OnkeyDown事件(注意窗体上不要拖其他多余控件 要不然keydown无法响应):

加速下落纯粹只是一个 假象 (设置interval阀值 更小而已,别忘了在onkeyUp的时候恢复)

 private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
                case Keys.Up://旋转
                    gm.Pivot();
                    //gm.left();
                    break;
                case Keys.Left:
                    gm.left();
                    break;
                case Keys.Right:
                    gm.right();
                    break;
                case Keys.Down:
                    timer1.Interval = 30;
                    break;
                case Keys.Space:                           //空格:暂停
                    timer1.Enabled = !timer1.Enabled;
                    break;
            }
        }

自己写的俄罗斯方块,玩起来感觉就是不一样 嘿嘿 (¯▽¯;)

俺亲自来操作一把

什么报错了 ⊙﹏⊙∥

调这个程序从开始写 到调通可是费了俺好大劲 ,俺菜嘛 。

最后提醒一下 本程序是基于 微软最先进滴.net 3.5 。没有的话自行搞定,有源码 没有.net 3.5的话 拷到低版本的环境编译一下 即可,

可能 大概 也许 要小改一下代码⊙﹏⊙∥ 。

这是本人在博客园上发表过的最长的文章,也许以后还有更长滴 ,更好的奉献给大家。

好了 《全文完》

完整项目源码下载链接

最后祝大家 中秋快乐, 俺写这些也不容易 挺累的 连源码都给大家了,如果你感觉还将就的话 给留个评论吧 好让我知道。

原文地址:https://www.cnblogs.com/assassinx/p/1833687.html