面向对象程序设计(C++)大作业 下载本文

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