c#使用Graphics绘制俄罗斯方块图形
1、先说下我的思路:
§1.画出几种图形
§2.移动图形,左,右移动。
§3.让图形在指定的范围内显示,正确的位置停止。
§4.让每种图形由用户控制旋转
§5.当每一行图形全满后,能够将此行擦去
§6.擦去一行后将上面所有的图形全部往下移
2、理想中的思路:
§定义三个类:
§1.Huatu (画图) 类 用来画几种基本图形
§2.Bianhuan (变换) 类 用来旋转图形
§3.Panduan (判断) 类 限制图形在指定的位置,判断图形有某一行图形满后,消去一行
§主程序做初始化工作,随机产生标志,产生某个图形。等等..
3、实际后来操作的方法与理论上有差距:
§因为三个类都会用到相同的数组,静态数组定义后实现不成功。中间变转换,有点麻烦,时间也稍晚了些。 §现在就用了一个类,程序规划待后继续。
§旋转(bianhaun)和判断(panduan)类,都放到了画图(hautu)类里。
4、几种基础图形:
§每个图形用一个数组存放其位置

1、一、画图形1.自己定义图形的初始位置

2、二、用timer移动图形
§在Timer里不断改变每种图形数组的值,使得改变图形的位置
§实现方法:先把当前位置的图形擦去,然后调用zhuanL(Z,T,l1)改变位置值,再在现在的位置画出新的图形。
§ huatu.ca_L(); //把原来的图形擦去,
§ huatu.zhuanL(); //改变位置,
§ huatu.hua_L(); //再画出图
3、2.擦、画图形


4、三、让图形在正确的位置显示

5、图形停止后,要做的工作
§1.重新产生,产生图形的随机数
§2.把图形数组再赋初值
6、四、旋转图形

7、§图形模拟二维数组显示效果图:

8、判断是否落到别的图形上
§此步可以和判断图形显示的位置一起
§定义了youtu数组之后:
§在刚才的基础上只需判断youtu数组里的值是否为1即可,若为1则执行初始化的那段程序
9、五、判断一行已满,将此行消去
§定义一个数组public int [,] youtu=new int[1001,1001];//定义记录是否划到图,图停留
§在一个图形落下,停止后,把图形的位置用数组记录下来。把图形的位置放入数组的下标,把其值赋为1.
§图形显示框是一行21个图形,此时只需判断youtu数组里一行中的每一个值都是1,则说明这一行已满。

10、六、将上面的图形全部往下移
