俄罗斯方块——图形编程2011-01-06王杰瑞第三个题目是俄罗斯方块游戏。该游戏算法比较简单,主要功夫都在界面体验上了,比如方块图形、用户控制、消去与累计等。图形我们采用GDI+画图方式显示,共8种图形,当然可以根据自己的喜好随意定制。如何表示图形?我们可以借鉴马赛克效果。把所有图形都用3*3矩阵表示,0表示背景色显示,1表示着色显示。比如{0,0,0},{0,1,0}, 表示T型,看出来了吗?每个数字位置其实就是一个正方形小块。{1,1,1}用户控制?简单KeyPress事件实现就好。当然还有一个无需用户控制的就是自动下落,可以使用Timer实现。消去算法?^_^,当然很简单,如果一行上有为0的单元格,那么表示没有充满,就不用消去;否则就要消去。累计就是数组追加,消去就是元素删除。当然了,消去与累计都需要将数据的变化体现到界面上,那就是画图。Graphics对象我们都会使用,在该windows窗体游戏中,我们可以实现OnPaint事件。每当需要重绘的时候,比如用户控制,消去等,就调用窗体refresh,那么自然会触发Paint事件。以下是代码示例:public int[][,] figures = new int[8][,]//8种图形
{
new int[3,3] {
{0,0,0},
{0,1,0},
{1,1,1}
},
new int[3,3]
{
{0,0,0},
{0,2,2},
{2,2,0}
},
new int[3,3]
{
{0,0,0},
{3,3,0},
{0,3,3}
},
new int[2,2]
{
{4,4},
{4,4}
},
new int[3,3]
{
{5,0,0},
{5,0,0},
{5,5,0}
},
new int[3,3]
{
{0,6,0},
{0,6,0},
{6,6,0}
},
new int[4,4]
{
{7,0,0,0},
{7,0,0,0},
{7,0,0,0},
{7,0,0,0}
},
new int[3,3]
{
{0,8,0},
{8,8,8},
{0,0,0}
}
};