俄罗斯方块源码解析(带下载)[1]
时间:2010-09-24 来源:assasssinx
说在前头的:
自认为写程序也有那么一段时间了,对面向对象编程还是有那么一丁点理解 (虽然现在一说OOP之类的文章 啊 网上满天飞)。
大师称不上 见笑了哈 小菜一个。
搞asp.net这么久了,网上一搜什么 web方面的 满天飞
搜几篇winform的文章 弄死找不到,本人很菜。一个winform快捷键的问题解决不了
(winform上方了文本框控件 点了文本框或者按钮后 winform的keydown事件就失灵了 焦点就停留在文本框或者 按钮上)
(以前没弄过 并且很菜 无奈最后只好把面板上的按钮 控件去掉了,顺便说下 哪位高手知道的话指点下 感激不尽)
网上搜了半天还是没解决,哎 这年头 人都喜欢跟风。
本来是想找个c#的俄罗斯方块源码研究下的 但是木找到。
这几天中秋 无聊 ,于是突发奇想自己写个玩玩。
本人发誓 在写这个程序之前绝对木有看过 任何其他俄罗斯方块的源码,我写的这个也是俄罗斯方块
绝对正宗俄罗斯滴 变态版 ,不是俄罗斯滴你找我
在这之前先废话下 别打我 ^_^
好 正题:
基本结构:
shape类 代表四个方块的组合(组合的方式在shape里面定义 )
gameArea类 容器(用来存放方块的,存放堆积起来的方块)
game类 主调程序,(包括开始游戏 显示容器里堆积起来的方块 计算分数 左移 右移 等)
这看上去貌似有点象 MVC设计模式 ,差不多吧 反正面向对象编程嘛 ,我又不是大师 有那么点对象的设计的感觉就行
如图:
主调程序里的成员列表:
display() 显示容器里堆积起来的方块 跟正在下落的方块
go() 主调函数,这个只可意会 大概意思就是 1 Step(走一步 判断如果没有游戏结束 则又走一步 如此往复。。。直到游戏结束)
left() 左移
right() 右移
pivot() 顺时针旋转(这绝对是全新的算法 非硬编码 自动判断图形轮廓 然后根据一个基准点旋转,跟fc上的那种旋转不一样的)
start() 开始一个游戏
end() 结束一个游戏
score 得分
isOver 游戏是否结束
如图(只看公共方法即可):
关于代码请看第二章