vc程序设计实验报告-俄罗斯方块游戏(编辑修改稿)内容摘要:

|(posXwidth1)||(posY1)||(posY+1height1)) return 0。 if((image[posY][posX1]!=0)||(image[posY][posX]!=0)||(image[posY][posX+1]!=0)||(image[posY+1][posX]!=0)) return 0。 } return 1。 } void CTBrick::operator (unsigned char **binImage) {unsigned int orientation。 unsigned int posX。 unsigned int posY。 unsigned char colour。 posX=getPosX()。 11 posY=getPosY()。 orientation=getOrientation()。 colour=getColour()。 if(orientation==0) {binImage[posY1][posX]=colour。 binImage[posY][posX]=colour。 binImage[posY][posX1]=colour。 binImage[posY][posX+1]=colour。 } if(orientation==1) {binImage[posY1][posX]=colour。 binImage[posY][posX]=colour。 binImage[posY+1][posX]=colour。 binImage[posY][posX+1]=colour。 } if(orientation==2) {binImage[posY][posX1]=colour。 binImage[posY][posX]=colour。 binImage[posY][posX+1]=colour。 binImage[posY+1][posX]=colour。 } if(orientation==3) {binImage[posY][posX1]=colour。 binImage[posY][posX]=colour。 binImage[posY1][posX]=colour。 binImage[posY+1][posX]=colour。 } } void CTBrick::putAtTop(unsigned int newOrient, unsigned int newPosX) {setPosX(newPosX)。 setOrientation(newOrient)。 switch(newOrient) { case 0: setPosY(1)。 break。 case 1: setPosY(1)。 break。 case 2: setPosY(0)。 break。 case 3: setPosY(1)。 break。 } } //反 L 型砖块代码的实现部分: (黑色方块为程序中所选的坐标点 ) CFLBrick类型砖块: 12 (左移、右移、上键、下键消息响应函数与 I型砖块代码的实现部分相同,这里就不列出来了) ◆ shiftLeft(CBin*bin)◆ shiftDown(CBin*bin)◆ shiftRight(CBin*bin)◆ rotateClockwise(CBin*bin) int CFLBrick::checkCollision(CBin *bin) {unsigned int width。 unsigned int height。 unsigned char**image。 unsigned int orientation。 unsigned int posX。 unsigned int posY。 width=bingetWidth()。 height=bingetHeight()。 image=new unsigned char*[height]。 for(unsigned int i=0。 iheight。 i++) {image[i]=new unsigned char[width]。 } bingetImage(image)。 orientation=getOrientation()。 posX=getPosX()。 posY=getPosY()。 if(orientation==0) {if((posX1)||(posXwidth1)||(posY2)||(posYheight1)) return 0。 if((image[posY2][posX]!=0)||(image[posY1][posX]!=0)||(image[posY][posX]!=0)||(image[posY][posX1]!=0)) return 0。 } if(orientation==1) {if((posX+11)||(posX+2width1)||(posY1)||(posYheight1)) return 0。 if((image[posY1][posX]!=0)||(image[posY][posX]!=0)||(image[posY][posX+1]!=0)||(image[posY][posX+2]!=0)) return 0。 } if(orientation==2) {if((posX+11)||(posX+1width1)||(posY+11)||(posY+2height1)) return 0。 if((image[posY][posX]!=0)||(image[posY][posX+1]!=0)||(image[posY+1][posX]!=0)||(image[posY+2][posX]!=0)) return 0。 } if(orientation==3) 13 {if((posX2)||(posXwidth1)||(posY+11)||(posY+1height1)) return 0。 if((image[posY][posX2]!=0)||(image[posY][posX1]!=0)||(image[posY][posX]!=0)||(image[posY+1][posX]!=0)) return 0。 } return 1。 } void CFLBrick::operator (unsigned char **binImage ) {unsigned int orientation。 unsigned int posX。 unsigned int posY。 unsigned char colour。 posX=getPosX()。 posY=getPosY()。 orientation=getOrientation()。 colour=getColour()。 if(orientation==0) {binImage[posY2][posX]=colour。 binImage[posY1][posX]=colour。 binImage[posY][posX]=colour。 binImage[posY][posX1]=colour。 } if(orientation==1) {binImage[posY1][posX]=colour。 binImage[posY][posX]=colour。 binImage[posY][posX+1]=colour。 binImage[posY][posX+2]=colour。 } if(orientation==2) {binImage[posY][posX]=colour。 binImage[posY][posX+1]=colour。 binImage[posY+1][posX]=colour。 binImage[posY+2][posX]=colour。 } if(orientation==3) {binImage[posY][posX2]=colour。 binImage[posY][posX1]=colour。 binImage[posY][posX]=colour。 binImage[posY+1][posX]=colour。 } } void CFLBrick::putAtTop(unsigned int newOrient, unsigned int newPosX) { setPosX(newPosX)。 setOrientation(newOrient)。 14 switch(newOrient) {case 0: setPosY(2)。 break。 case 1: setPosY(1)。 break。 case 2: setPosY(0)。 break。 case 3: setPosY(0)。 break。 } } //反 S 型砖块代码的实现部分: (黑色方块为程序中所选的坐标点 ) CFSBrick类型砖块: (左移、右移、上键、下键消息响应函数与 I型砖块代码的实现部分相同,这里就不列出来了) ◆ shiftLeft(CBin*bin)◆ shiftDown(CBin*bin)◆ shiftRight(CBin*bin)◆ rotateClockwise(CBin*bin) int CFSBrick::checkCollision(CBin *bin) { unsigned int width。 unsigned int height。 unsigned char**image。 unsigned int orientation。 unsigned int posX。 unsigned int posY。 width=bingetWidth()。 height=bingetHeight()。 image=new unsigned char*[height]。 for(unsigned int i=0。 iheight。 i++) { image[i]=new unsigned char[width]。 } bingetImage(image)。 orientation=getOrientation()。 posX=getPosX()。 posY=getPosY()。 if(orientation==0) { if((posX1)||(posXwidth1)||(posY1)||(posY+1height1)) return 0。 15 if((image[posY1][posX]!=0)||(image[posY][posX]!=0)||(image[posY][posX1]!=0)||(image[posY+1][posX1]!=0)) return 0。 } if(orientation==1) { if((posX+11)||(posX+1width1)||(posY1)||(posYheight1)) return 0。 if((image[posY1][posX1]!=0)||(image[posY1][posX]!=0)||(image[posY][posX]!=0)||(image[posY][posX+1]!=0)) return 0。 } if(orientation==2) { if((posX+11)||(posX+1width1)||(posY1)||(posY+1height1)) return 0。 if((image[posY][posX]!=0)||(image[posY+1][posX]!=0)||(image[posY1][posX+1]!=0)||(image[posY][posX+1]!=0)) return 0。 } if(orientation==3) { if((posX1)||(posXwidth1)||(posY+11)||(posY+1height。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。