第一次写俄罗斯方块,完全是按照自己的想法做的。做完了很奇怪。
估计是按照相对坐标来算,好多的分支语句把自己都搞晕了。
所以决定放弃了,贴出来以祭奠。

设计的草稿是这样的

棋子记录状态

棋盘根据棋子状态进行判断和绘制

主要检测:

越界检测:每次左移或者右移时检测(在边界内则移动否则不动)OK

触底检测:每次下降时检测OK,也就是在时钟记录一次时探测

消行检测:触底触发时检测

旋转检测:能否旋转

 

检测时首先根据棋子种类再根据棋子状态进行筛选。

 

全局棋盘只在触底时更新(检测消行后的状态),上部分在数组部分不更新 仅仅根据状态由画刷画出。

 

触发事件:

触底时触发产生新的方块设置high_pos变量。

 

已经实现的功能:

越界检测触底检测

旋转检测旋转检测

 

代码这里下载,我想没人愿意去找错误所在的。呵呵相当繁琐。
 
如果大家有什么想法或者好的设计方法告诉我哈。非常乐意重新写。
我听同学说存储每个图形做比较简单。可以减少分支判断。

哈哈,第二天醒来终于意识到问题了,是数组的坐标系和图形的坐标系混淆了。以及数组和方块的参照系独立的原因。
可以修改了。


现在的问题只剩下旋转的时候会插到墙壁里,应该是个小问题。也是因为单个点记录造成对整体的把握性下降。

所以只能重新用新的方法去设计。

vczh跟我说他以前写过这个代码,我就打算参照他的脚本写的代码用C++写一个。这个脚本还真牛叉: