资源描述:
《二维数组在俄罗斯方块游戏编程中的应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、二维数组在俄罗斯方块游戏编程中的应用在俄罗斯方块游戏编程过程中,二维数组起到了至关重要的作用,我们通过控制二维数组元素的值来达到控制方块的目的,在游戏中的障碍判断、行满判断及其各种形状方块的左右移动,实际上都需要借助于它。本文借俄罗斯方块游戏编程来指导大家对二维数组的学习和应用。关键词:二维数组;坐标;位图(DIB)资源 俄罗斯方块是大家都很熟悉的游戏,在其Height。其中mHeight分别是小方块的宽和高,我们通常设定两者相等。我们可以理解,在功能实现上,可以看做是先擦除图案,往下移动一个mHeight距离后再将图案显示出来的过程。若移动一个mH
2、eight距离后,任一个小方块的左上角纵坐标都没有超出方框底线,并且任一小方块当前所处位置所对应的数组元素都不等于1,就说明当前图案没有到底,也没有遇到障碍物,这是我们可以直接将其显示出来;否则,在显示之前应当向上移动一个mHeight距离,即取消刚才所做的距离移动。在这里擦除图案和显示图案分别用函数EraseDesign()和PaintDesign()来实现;函数CalcStatus()的作用是计算public变量i1-i4、j1-j4的值,这里擦除图案和显示图案分别用函数EraseDesign()和PaintDesign()来实现。函数Calcst
3、atus()的作用是计算public变量i1到i4、j1到j4的值,程序代码如下:VoidCBlocksVieer(UINTnIDEvent){EraseDesign();cy1+=mHeight;cy2+=mHeight;cy3+=mHeight;cy4+=mHeight;CalcStatus();if(cy1>(ulPosy+frmHeight)︱︱cy2>(ulPosy+frmHeight)︱︱cy3>(ulPosy+frmHeight)︱︱cy4>(ulPosy+frmHeight)︱︱(array[i1][j1]==1)︱︱(array[i2
4、][j2]==1)︱︱(array[i3][j3]==1)︱︱(array[i4][j4]==1)){cy1-=mHeight;cy2-=mHeight;cy3-=mHeight;cy4-=mHeight;PaintDesign();array[(cy1-ulPosy-frmHeight][(cx1-ulPosx-frmHeight][(cx2-ulPosx-frmHeight][(cx3-ulPosx-frmHeight][(cx4-ulPosx-frmHeight);CRectrect2(cx2,cy2,cx2+mHeight);CRectrect
5、3(cx3,cy3,cx3+mHeight);CRectrect4(cx4,cy4,cx4+mHeight);dc.FillRect(&rect1,&apBmp;Bmp.LoadBitmap(ID-101);ppDC,CreatepatibleDC(&dc);CBitmap*m-OldBmp=ppDC.SelectObject(&Bmp);dc.BitBlt(cx1,cy1,mHeight,&ppDC,0,0,SRCCOPY);dc.BitBlt(cx2,cy2,mHeight,&ppDC,0,0,SRCCOPY);dc.BitBlt(cx3,cy3,
6、mHeight,&ppDC,0,0,SRCCOPY);dc.BitBlt(cx4,cy4,mHeight,&ppDC,0,0,SRCCOPY);ppDC.SelectObject(m-OldBap);}voidCBlocksVieHeight;j1=(cx1-ulPosx-frmp;Bmp.LoadBitmap(ID-101);ppDC,CreatepatibleDC(&dc);CBitmap*m-OldBmp=ppDC.SelectObject(&Bmp);for(inti=19;i>=0;i--){BOOLIsFilled=TURE;for(int
7、j=0;j<=15;j++)if(array[i][j]==0){BOOLIsFilled=FALSE;break;}//消去一行if(IsFilled){CRectrc1(ulPosx+frmHeight+ulPosy+frmHeight);dc.FillRect(&rect1,&=0;m<=15;m++){if(array[n][m]==1)dc.BitBlt(m*mHeight+ulPosy+frmHeight,&ppDC,0,0,SRCCOPY);else{CRectrect(m*mHeight+ulPosy+frmHeight),dc.Fil
8、lRect(&rect,&-OldBmp);} 可以看出,在程序的开发处理中,二维数组起到至