在这里可能需要清楚的一点就是OnTimer()和按下方向键“下”的时候都会触发这个GoDown()函数,其实消息队列是一个队列,有先来后到之分,应用程序会根据消息依次调用GoDown()函数。
首先在TerisView.cpp文件中加入GoDown()函数的定义:
bool CMy18TetrisView::GoDown() { //按下方向键“下”的时候,或者计时器触发时
for (int w = 0; w<4; ++w) {
int i = (shift[w][0] + rowPos) / 2;
int j = (shift[w][1] + colPos) / 2 + 1; //看看它的下一个格子是不是已经是地面了
if (GameMap[i][j] == 1) return true; //落地返回true
}
colPos += 2;
Invalidate();
return false;
}
在加入我们的OnTimer()函数,定义好一些函数,
比如说,函数落地时,调用的trans()函数:
void CMy18TetrisView::trans() { //方块落地转化为地图
for (int w = 0; w<4; ++w) {
int i = (shift[w][0] + rowPos) / 2;
int j