写了几章了 ,该完了吧。
是骡子是马拉出来溜溜 ,好歹得给点东西大家瞧瞧啊,光说不练假把式。
最后在我们的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的话 拷到低版本的环境编译一下 即可,
可能 大概 也许 要小改一下代码⊙﹏⊙∥ 。
这是本人在博客园上发表过的最长的文章,也许以后还有更长滴 ,更好的奉献给大家。
好了 《全文完》
最后祝大家 中秋快乐, 俺写这些也不容易 挺累的 连源码都给大家了,如果你感觉还将就的话 给留个评论吧 好让我知道。