KillTimer(1); Set=1;
Si.left=Sj.left; Si.top=0;
Si.right=Sj.right; Si.bottom=T;
}
}
if(nIDEvent==5) { MoveWindow(p1.x,p1.y,m_W,m_H); p1.y+=10; if(p1.y>=30)
KillTimer(5);
}
//=======================4 往左收埋 if(nIDEvent==4) { MoveWindow(p1.x,p1.y,m_W,m_H); p1.x-=10; if(p1.x+m_W+10<0) { KillTimer(4); Set=4;
Si.left=0; Si.top=Sj.top; Si.right=T; Si.bottom=Sj.bottom;
}
}
if(nIDEvent==8) {
MoveWindow(p1.x,p1.y,m_W,m_H);
-
-
19
}
p1.x+=10; if(p1.x>=30)
KillTimer(8);
(6)记分功能模块
此模块用来记录在游戏过程中,玩家所得的分数。并且一次性消去的方块行数越多,那么得到的分数也就越多。
实现此功能相关代码如下: {
G[object.x+a0][object.y+a1]=object.Type; G[object.x+a2][object.y+a3]=object.Type; G[object.x+a4][object.y+a5]=object.Type; G[object.x+a6][object.y+a7]=object.Type;
int i,j,k,p,q,o=0; for(i=0;i if(G[i][1]>0||G[i][0]>0) { } Runing=0; AfxMessageBox(\游戏结束!\CGameDlg dlg; dlg.DoModal(); return; void CGameDlg::KeepData() //保存放好所在位置 for( j = N-1; j >= 0; j--) { for(i=0,k=0;i if(G[i][j]>0) k++; if(k==M) { o++; - - 20 } } } for(p=j;p>=1;p--) for(q=0;q G[q][p]=G[q][p-1]; one(G[q][p],q,p); for(q=0;q Score+=100*o; G[q][0]=0; one(G[q][p],q,p); (7)鼠标控制功能模块 此模块也是本游戏的重点,玩家通过鼠标控制进行游戏。向上是变换图形,向下是很方块快速下落,向左是使方块向左移动,向右是很方块向右移动。 程序的具体实现部分如程序清单如下所示。 void CGameDlg::ChangeShape(OBJECT object)//转组 { do{ switch(object.group) { - - int z[4][2] = {0}; int i,j,k; if(Runing==0) { } OnDestroy(); return; 21 case1:ZZ=0;z[1][0]=1;z[1][1]=0;z[2][0]=0;z[2][1]=1;z[3][0]=1;z[3][1]=1;break; case 2:ZZ++; ZZ%=4;switch(ZZ) { case 0:z[1][0]=-1;z[1][1]=0; z[2][0]=1;z[2][1]=0;z[3][0]=-1;z[3][1]=-1;break; case 1:z[1][0]=0;z[1][1]=1; z[2][0]=0;z[2][1]=-1;z[3][0]=1;z[3][1]=-1;break; case 2:z[1][0]=-1;z[1][1]=0; z[2][0]=1;z[2][1]=0;z[3][0]=1;z[3][1]=1;break; case 3:z[1][0]=0;z[1][1]=-1; z[2][0]=0;z[2][1]=1;z[3][0]=-1;z[3][1]=1;break; } break; case 3:ZZ++; ZZ%=4; switch(ZZ) { case 0:z[1][0]=-1;z[1][1]=0; z[2][0]=1;z[2][1]=0;z[3][0]=1;z[3][1]=-1;break; case 1:z[1][0]=0;z[1][1]=1; z[2][0]=0;z[2][1]=-1;z[3][0]=1;z[3][1]=1;break; case 2:z[1][0]=-1;z[1][1]=0; z[2][0]=1;z[2][1]=0;z[3][0]=-1;z[3][1]=1;break; case 3:z[1][0]=0;z[1][1]=-1; z[2][0]=0;z[2][1]=1;z[3][0]=-1;z[3][1]=-1;break; } break; case 4: ZZ++; ZZ%=2; switch(ZZ) { case 1:z[1][0]=0;z[1][1]=-1; z[2][0]=0;z[2][1]=2;z[3][0]=0;z[3][1]=1;break; case 0:z[1][0]=1;z[1][1]=0; z[2][0]=2;z[2][1]=0;z[3][0]=-1;z[3][1]=0;break; } break; case 5: ZZ++; ZZ%=2; switch(ZZ) { case 1:z[1][0]=0;z[1][1]=-1; z[2][0]=1;z[2][1]=0;z[3][0]=1;z[3][1]=1;break; case 0: z[1][0]=0;z[1][1]=1; z[2][0]=-1;z[2][1]=1;z[3][0]=1;z[3][1]=0;break; } break; case 6:ZZ++; ZZ%=2; - - 22