俄罗斯方块代码Word文档格式.docx

上传人:b****3 文档编号:17862791 上传时间:2022-12-11 格式:DOCX 页数:17 大小:18.09KB
下载 相关 举报
俄罗斯方块代码Word文档格式.docx_第1页
第1页 / 共17页
俄罗斯方块代码Word文档格式.docx_第2页
第2页 / 共17页
俄罗斯方块代码Word文档格式.docx_第3页
第3页 / 共17页
俄罗斯方块代码Word文档格式.docx_第4页
第4页 / 共17页
俄罗斯方块代码Word文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

俄罗斯方块代码Word文档格式.docx

《俄罗斯方块代码Word文档格式.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块代码Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

俄罗斯方块代码Word文档格式.docx

//当前的部件

POINTptIndex;

//部件数组在全局数组中的索引

//产生一个新的部件

voidNewComponet(void);

//是否还可以下落

boolCanDown(void);

//刷新函数

voidMyInvalidateRect(POINTptStart,intintDimension);

//消去行

voidDisappear(void);

//判断游戏是否结束

boolCheckFail(void);

//是否还可以旋转

boolCanRotate(void);

//是否还可以左移

boolCanLeft(void);

//是否还可以右移

boolCanRight(void);

//检查是否有足够的空位显示新的部件,否则游戏结束

boolCanNew();

};

CRusBlockView:

:

CRusBlockView()

//TODO:

addconstructioncodehere

for(inti=0;

i<

HIGH;

i++)

for(intj=0;

j<

WIDE;

j++)

m_intState[i][j]=0;

m_intLevel=NORMAL;

//初始化难度

srand((unsigned)time(NULL));

//初始化随机数

m_intScore=0;

m_CurrentCom.intComID=-1;

m_CurrentCom.intDimension=0;

m_CurrentCom.pintArray=NULL;

//初始化7个部件

//0:

方块

m_Componets[0].intComID=0;

m_Componets[0].intDimension=2;

m_Componets[0].pintArray=newint[4];

for(i=0;

4;

m_Componets[0].pintArray[i]=1;

//11

//11

//1:

-|

m_Componets[1].intComID=1;

m_Componets[1].intDimension=3;

m_Componets[1].pintArray=newint[9];

m_Componets[1].pintArray[0]=0;

m_Componets[1].pintArray[1]=1;

m_Componets[1].pintArray[2]=0;

//010

m_Componets[1].pintArray[3]=1;

//111

m_Componets[1].pintArray[4]=1;

//000

m_Componets[1].pintArray[5]=1;

m_Componets[1].pintArray[6]=0;

m_Componets[1].pintArray[7]=0;

m_Componets[1].pintArray[8]=0;

//2

m_Componets[2].intComID=2;

m_Componets[2].intDimension=3;

m_Componets[2].pintArray=newint[9];

m_Componets[2].pintArray[0]=1;

m_Componets[2].pintArray[1]=0;

m_Componets[2].pintArray[2]=0;

//100

m_Componets[2].pintArray[3]=1;

//110

m_Componets[2].pintArray[4]=1;

m_Componets[2].pintArray[5]=0;

m_Componets[2].pintArray[6]=0;

m_Componets[2].pintArray[7]=1;

m_Componets[2].pintArray[8]=0;

//3

m_Componets[3].intComID=3;

m_Componets[3].intDimension=3;

m_Componets[3].pintArray=newint[9];

m_Componets[3].pintArray[0]=0;

m_Componets[3].pintArray[1]=0;

m_Componets[3].pintArray[2]=1;

//001

m_Componets[3].pintArray[3]=0;

//011

m_Componets[3].pintArray[4]=1;

m_Componets[3].pintArray[5]=1;

m_Componets[3].pintArray[6]=0;

m_Componets[3].pintArray[7]=1;

m_Componets[3].pintArray[8]=0;

//4

m_Componets[4].intComID=4;

m_Componets[4].intDimension=3;

m_Componets[4].pintArray=newint[9];

m_Componets[4].pintArray[0]=1;

m_Componets[4].pintArray[1]=0;

m_Componets[4].pintArray[2]=0;

m_Componets[4].pintArray[3]=1;

m_Componets[4].pintArray[4]=1;

m_Componets[4].pintArray[5]=1;

m_Componets[4].pintArray[6]=0;

m_Componets[4].pintArray[7]=0;

m_Componets[4].pintArray[8]=0;

//5

m_Componets[5].intComID=5;

m_Componets[5].intDimension=3;

m_Componets[5].pintArray=newint[9];

m_Componets[5].pintArray[0]=0;

m_Componets[5].pintArray[1]=0;

m_Componets[5].pintArray[2]=1;

m_Componets[5].pintArray[3]=1;

m_Componets[5].pintArray[4]=1;

m_Componets[5].pintArray[5]=1;

m_Componets[5].pintArray[6]=0;

m_Componets[5].pintArray[7]=0;

m_Componets[5].pintArray[8]=0;

//6

m_Componets[6].intComID=6;

m_Componets[6].intDimension=4;

m_Componets[6].pintArray=newint[16];

m_Componets[6].pintArray[0]=0;

m_Componets[6].pintArray[1]=1;

m_Componets[6].pintArray[2]=0;

//0100

m_Componets[6].pintArray[3]=0;

m_Componets[6].pintArray[4]=0;

m_Componets[6].pintArray[5]=1;

m_Componets[6].pintArray[6]=0;

m_Componets[6].pintArray[7]=0;

m_Componets[6].pintArray[8]=0;

m_Componets[6].pintArray[9]=1;

m_Componets[6].pintArray[10]=0;

m_Componets[6].pintArray[11]=0;

m_Componets[6].pintArray[12]=0;

m_Componets[6].pintArray[13]=1;

m_Componets[6].pintArray[14]=0;

m_Componets[6].pintArray[15]=0;

}

~CRusBlockView()

//释放内存

for(inti=0;

MAXCOM;

delete[]m_Componets[i].pintArray;

delete[]m_CurrentCom.pintArray;

voidCRusBlockView:

OnDraw(CDC*pDC)

CRusBlockDoc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

adddrawcodefornativedatahere

//画游戏区域

CBrushbrushBK(RGB(135,197,255));

CBrush*pbrushOld=pDC->

SelectObject(&

brushBK);

pDC->

Rectangle(LEFT-1,TOP-1,LEFT+WIDE*SIZE+1,

TOP+HIGH*SIZE+1);

//画不能移动的方块

CBrushbrushStick(RGB(127,127,127));

brushStick);

if(m_intState[i][j]==1)

pDC->

Rectangle(LEFT+SIZE*j,TOP+SIZE*i,LEFT+SIZE*(j+1),

TOP+SIZE*(i+1));

//画下落的部件

if(m_CurrentCom.intComID>

=0)

{

CBrushbrushCom(RGB(0,255,0));

pDC->

brushCom);

intintDimension=m_CurrentCom.intDimension;

for(inti=0;

intDimension*intDimension;

{

if(m_CurrentCom.pintArray[i]==1)

{

intm=ptIndex.x+i/intDimension;

//找出部件对应整体数组中的位置

intn=ptIndex.y+(i%intDimension);

Rectangle(LEFT+SIZE*n,TOP+SIZE*m,LEFT+SIZE*(n+1),

TOP+SIZE*(m+1));

}

}

}

//显示得分

CStringstrOut;

strOut.Format("

得分%d"

m_intScore);

TextOut(LEFT+WIDE*SIZE+50,TOP+100,strOut);

pbrushOld);

OnTimer(UINTnIDEvent)

Addyourmessagehandlercodehereand/orcalldefault

intintDimension=m_CurrentCom.intDimension;

if(CanDown())//可以下落

//擦除

MyInvalidateRect(ptIndex,intDimension);

//下落

ptIndex.x++;

//显示新位置上的部件

else

m_intState[m][n]=1;

Disappear();

//消去行

if(CheckFail())//游戏结束

m_CurrentCom.intComID=-1;

KillTimer

(1);

MessageBox("

GameOver!

"

);

else

NewComponet();

//新部件

CView:

OnTimer(nIDEvent);

OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)

switch(nChar)//left37,right39,up38

case37:

if(CanLeft())

//擦除

MyInvalidateRect(ptIndex,intDimension);

//左移

ptIndex.y--;

//显示新位置上的部件

break;

case39:

if(CanRight())

//右移

ptIndex.y++;

case38:

if(CanRotate())

//转动

int*pintNewCom=newint[intDimension*intDimension];

for(inti=0;

intintR=intDimension*(intDimension-(i%intDimension)-1)+(i/intDimension);

pintNewCom[i]=m_CurrentCom.pintArray[intR];

for(i=0;

m_CurrentCom.pintArray[i]=pintNewCom[i];

delete[]pintNewCom;

OnKeyDown(nChar,nRepCnt,nFlags);

NewComponet(void)

intintComID=rand()%7;

//产生随机数

m_CurrentCom.intComID=intComID;

intintDimension=m_Componets[intComID].intDimension;

m_CurrentCom.intDimension=intDimension;

//删除上一个部件的内存分配

m_CurrentCom.pintArray=newint[intDimension*intDimension];

//拷贝部件

m_CurrentCom.pintArray[i]=m_Componets[intComID].pintArray[i];

ptIndex.x=0;

//行

ptIndex.y=5;

//列

if(CanNew())

//显示该部件

m_CurrentCom.intComID=-1;

KillTimer

(1);

MessageBox("

boolCRusBlockView:

CanDown(void)

boolboolDown=true;

POINTintNewIndex=ptIndex;

//假设可以下落

intNewIndex.x++;

if(m_CurrentCom.pintArray[i]==1)

intm=intNewIndex.x+i/intDimension;

intn=intNewIndex.y+(i%intDimension);

if(m>

=HIGH||m_intState[m][n]==1)//被挡住或出游戏区域

boolDown=false;

returnboolDown;

//可以左移

CanLeft(void)

boolboolLeft=true;

POINTptNewIndex=ptIndex;

//假设可以左移

ptNewIndex.y--;

intm=ptNewIndex.x+i/intDimension;

intn=ptNewIndex.y+(i%intDimension);

if(n<

0||m_intState[m][n]==1)//被挡住或出游戏区域

boolLeft=false;

returnboolLeft;

//可以右移

CanRight(void)

boolboolRight=true;

//假设可以右移

ptNewIndex.y++;

if(n>

=WIDE||m_intState[m][n]==1)//被挡住或出游戏区域

boolRight=false;

returnboolRight;

//可以旋转

CanRotate(void)

boolboolRotate=true;

//假设可以转动

//新的矩阵存储转动后的部件

int*pintNewCom=newint[intDimension*intDimension

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1