糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 简明c语言 简明易懂的C语言俄罗斯方块

简明c语言 简明易懂的C语言俄罗斯方块

时间:2020-01-25 01:50:49

相关推荐

简明c语言 简明易懂的C语言俄罗斯方块

该楼层疑似违规已被系统折叠隐藏此楼查看此楼

randomize();

registerbgidriver(EGAVGA_driver);

initgraph(&driver,&mode,"");

cleardevice();

setfillstyle(SOLID_FILL,BLUE);

bar(0,0,639,479);

x1=AREAX;

y1=AREAY-BOXW*MAXY;

x2=AREAX+MAXX*BOXW;

y2=AREAY;

rectangle(--x1,--y1,++x2,++y2);

setfillstyle(SOLID_FILL,BLACK);

bar(++x1,++y1,--x2,--y2);

y1=AREAY-MAXY*BOXW;y2=AREAY;

setcolor(DARKGRAY);

for(i=0;i

{

x1=AREAX+i*BOXW;

line(x1,y1,x1,y2);

}

x1=AREAX;x2=x1+MAXX*BOXW;

for(j=0;j

{

y1=AREAY-j*BOXW;

line(x1,y1,x2,y1);

}

for(j=0;j

for(i=0;i

area[j][i]=oldarea[j][i]=0;

actX=0;actY=0;actW=MAXX-1;actH=MAXY-1;

draw();

MESSAGE=mGEN;

}

intgenBox()

{

inti,j,boxidx;

boxidx=random(7);FORCOLOR=random(7)+1;

for(j=0;j<4;j++)

for(i=0;i<4;i++)

box[j][i]=BOX[boxidx][j][i];

curW=getW();curH=getH();

curX=(MAXX+curW)/2;

if(curX+curW>=MAXX)curX=MAXX-1-curW;

curY=MAXY-1-curH;

newX=curX;newY=curY;actX=curX;actY=curY;

actW=newW=curW;actH=newH=curH;

active=1;

if(collision(box))return0;

putNewBox();

draw();MESSAGE=0;

return1;

}

voidlineFull()

{

introw,col,rowEnd,full,i,j;

rowEnd=newY+newH;

if(rowEnd>=MAXY-1)rowEnd=MAXY-2;

for(row=newY;row<=rowEnd;)

{

full=1;

for(col=0;col

if(!area[row][col]){full=0;break;}

if(!full){++row;continue;}

for(j=row;j

for(i=0;i

area[j][i]=area[j+1][i];

actX=0;actY=row;actW=MAXX-1;actH=MAXY-1-row;

draw();rowEnd--;

}

MESSAGE=mGEN;

}

voiddraw()

{

introw,col,x1,y1,x2,y2;

for(row=actY;row<=actY+actH;row++)

for(col=actX;col<=actX+actW;col++)

if(area[row][col]!=oldarea[row][col])

{

if(area[row][col]==0)

setfillstyle(SOLID_FILL,BACKCOLOR);

else

setfillstyle(SOLID_FILL,FORCOLOR);

x1=AREAX+col*BOXW;x2=x1+BOXW;

y1=AREAY-(row+1)*BOXW;y2=y1+BOXW;

bar(++x1,++y1,--x2,--y2);

oldarea[row][col]=area[row][col];

}

MESSAGE=0;

}

intmoveLeft()

{

newX=curX-1;clearOldBox();

if(collision(box))

{

newX=curX;

putNewBox();

MESSAGE=0;

return0;

}

putNewBox();

actW=curW+1;actX=curX=newX;

MESSAGE=mDRAW;

return1;

}

intmoveRight()

{

newX=curX+1;clearOldBox();

if(collision(box))

{

newX=curX;

putNewBox();

MESSAGE=0;

return0;

}

putNewBox();

actW=curW+1;actX=curX;curX=newX;

MESSAGE=mDRAW;

return1;

}

intmoveDown()

{

inti,j;

newY=curY-1;

clearOldBox();

if(collision(box))

{

newY=curY;

putNewBox();

active=0;

MESSAGE=mLINE;

return0;

}

putNewBox();

actH=curH+1;actY=newY;curY=newY;

MESSAGE=mDRAW;

return1;

}

introtate()

{

intnewBox[4][4];

inti,j;

clearOldBox();

for(j=0;j<4;j++)

for(i=0;i<4;i++)

newBox[j][i]=0;

for(j=0;j<4;j++)

for(i=0;i<4;i++)

newBox[curW-i][j]=box[j][i];

newW=curH;newH=curW;

if(collisionRotate(newBox))

{

newW=curW;newH=curH;newX=curX;newY=curY;

putNewBox();

MESSAGE=0;

return0;

}

for(j=0;j<4;j++)

for(i=0;i<4;i++)

box[j][i]=newBox[j][i];

putNewBox();

actH=newH>curH?newH:curH;

actW=curX+actH-newX;

actX=newX;actY=newY;curX=newX;

curY=newY;curW=newW;curH=newH;

MESSAGE=mDRAW;

return1;

}

intgetW()

{

inti,j;

for(i=3;i>0;i--)

for(j=0;j<4;j++)

if(box[j][i])returni;

return0;

}

intgetH()

{

inti,j;

for(j=3;j>0;j--)

for(i=0;i<4;i++)

if(box[j][i])returnj;

return0;

}

voidclearOldBox()

{

inti,j;

for(j=0;j<=curH;j++)

for(i=0;i<=curW;i++)

if(box[j][i])

area[curY+j][curX+i]=0;

}

voidputNewBox()

{

inti,j;

for(j=0;j<=newH;j++)

for(i=0;i<=newW;i++)

if(box[j][i])

area[newY+j][newX+i]=FORCOLOR;

}

intcollision(intcbox[][4])

{

inti,j;

if(newX<0)return1;

if(newX+newW>=MAXX)return1;

if(newY<0)return1;

for(j=0;j<=newH;j++)

for(i=0;i<=newW;i++)

if(area[newY+j][newX+i]&&cbox[j][i])return1;

return0;

}

intcollisionRotate(intcbox[][4])

{

inti,j;

if(newX+newW>=MAXX)newX=MAXX-1-newW;

if(newY+newH>=MAXY)newY=MAXY-1-newH;

if(collision(cbox))return1;

for(i=0;i<=newW;i++)

for(j=0;j<=newH;j++)

if(area[newY+j][newX+i])

{

newX-=newW-i+1;gotoL;

}

L:returncollision(cbox);

}

intgameOver()

{

if(!active&&(curY+curH>MAXY-3))return1;

elsereturn0;

}

/*theend*/

如果觉得《简明c语言 简明易懂的C语言俄罗斯方块》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。