[email protected]
thank u !
thank u !
解决方案 »
- 如何设置MDI子窗体大小?
- 倾尽所有,江湖救急!请问如何实行用户自定义数据集的列进行打印?
- dbgrid中的记录,怎样循环插入到表test中?
- 各位师哥师姐,我是县级医院的网管,领导想叫我搞电子病历,给点指导,原则上用Delphi6+Oracle8.0.5(由于买了一套病案管理系统的数据库是
- 关于Rave的问题
- 窗体可以直接打印,就不知道怎么直接打印控件?
- fastReprot图片加载问题
- 80分献出:有必要换掉DELPHI5,使用D6吗?
- 关于一个编译成可独立执行程序的问题?(可不是一般的小case).
- 没有分数给了,但是请来帮我看看,以后我有分了一定给,先欠着
- 谁有1stclass(D6)控件组中,Outlookbar的使用方法或示例代码啊。。。急用。。。
- 在delphi中如何建立表的视图和把查询的结果存入另外一个表
http://www.csdn.net/expert/topic/366/366396.xml?temp=.9482691
Thank You!
先定义一个结构体
struct Stage{
int IsBlock; //如果有方块则为1,否则为0,默认为0(这里的方块实指单个方块)
BOOL CanChange; //如果落到底后为False,若没有则为True;
。//为了程序简洁还可以加上其他标志域方便判断
}
然后定义一个10*20的结构体数组StageArray[10][20];通过设置StageArray[x][x].IsBlack来表示该处是否应该画上方块;
在定义若干个数组Shape_X[4][4]来代表基本图形比如:
{{0,0,0,0},
{1,1,1,0},
{0,1,0,0},
{0,1,0,0}}
代表“T”型图元;这样转动图元就变成了转动数组不过必须保持含“1”的元素在右下角否则图元位置会又偏移;
图元下落就是把Shape_x加在StageArray上,下落时先判断它的下一个位置有没有阻挡它的方块(可以先式加一次如果有那么Shape_X中就有
为“2”的项)如果有就停止并将StageArray[x][x].CanChange改写为False;
最后要做的就是写界面判断StageArray那里有“1”就画一个方块;图元每动作一就刷新一次。