俄罗斯方块c语言代码 vc 6.0,VC++6.0下的控制台俄罗斯方块

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

Display();

}

/*----------------------------------------*/

void Move_Right(void)

{if(p==0) return;

int i,x,y;

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

if(b[i][9]==1) return;

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

{x=block[r][i][0];

y=block[r][i][1];

if(b[x+p][6+y+q]==2) return;}

Clean_Block();

q++;

Fill_Block();

Display();

}

/*----------------------------------------*/

void Move_Down(void)

{

Clean_Block();

p++;

Display();

Check_Block();

}

/*----------------------------------------*/

void End()

{char c=0;

int i,j,x,y;

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

{x=block[r][i][0];

y=block[r][i][1];

b[x+p][5+y+q]=2;

}

b[p][5+q]=2;

GotoXY(1,1);

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

{printf("■");

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

{switch(b[i][j])

{case 0:printf("  ");break;

case 1:printf("□");break;

case 2:printf("■");break;}}

printf("■\n");}

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

printf("■");

GotoXY(1,22);printf("SCORE:%d",score);

GotoXY(1,23);printf("LEVEL=%d",score/100);

//Display();

GotoXY(1,24);printf("Game Over");

GotoXY(1,25);printf("Press Q to ESC...");

do

{c=getch();}

while(c!='q');

exit(1);

}

/*----------------------------------------*/

void Check_Block()

{int i,x,y,k;

char c;

Display();

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

if(b[0][i]==1&&b[1][i]==2) End();

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

{x=block[r][i][0];

y=block[r][i][1];

if(b[x+p+1][5+y+q]==2||b[p+1][5+q]==2||x+p==19)

{

/*-----------------v0.12b-----------------------*/

for(k=0;k<10;k++)

{

if(kbhit())

{c=getch();

switch©

{case 'a':case '4':Move_Left();break;

case 'd':case '6':Move_Right();break;

case 'w':case '8':Clean_Block();Change_Block();Display();break;

case 'p':Pause();break;

case 'q':{GotoXY(1,24);printf("Game Over");

GotoXY(1,25);printf("Press any key to ESC...");

c=getch();

exit(1);};break;

}}

Sleep(5);}

/*-----------------v0.12b-----------------------*/

if(!(b[x+p+1][5+y+q]==2||b[p+1][5+q]==2||x+p==19)) Check_Block();

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

{x=block[r][i][0];

y=block[r][i][1];

b[x+p][5+y+q]=2;

}

b[p][5+q]=2;Check_Line();Block_Random();p=0;q=0;Fill_Block();Check_Block();Display();}

}

}

/*----------------------------------------*/

void Check_Line()

{int i,j,s=0,t=0;

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

{s=0;

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

s+=b[i][j];

if (s==20) {s=0;Clean_Line(i);t++;}

}

switch (t)

{case 1:score++;break;

case 2:score+=3;break;

case 3:score+=5;break;

case 4:score+=8;break;

}

switch(score/100)

{case 0:speed=25;break;

case 1:speed=20;break;

case 2:speed=17;break;

case 3:speed=15;break;

case 4:speed=12;break;

case 5:speed=10;break;

case 6:speed=7;break;

case 7:speed=5;break;

case 8:speed=2;break;

case 9:{speed=0;break;}

}

}

/*----------------------------------------*/

void Clean_Line(int l)

{int i,j;

for(i=l-1;i>=0;i--)

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

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

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

b[0][j]=0;

}

/*----------------------------------------*/

void Change_Block(void)

{int i,yy;

if (r==4) return;

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

{

if(block[r][i][0]*block[r][i][1]>0) block[r][i][1]=(-1)*block[r][i][1]; else

if(block[r][i][0]*block[r][i][1]<0) block[r][i][0]=(-1)*block[r][i][0]; else

if(block[r][i][0]==0) Swap(block[r][i][0],block[r][i][1]); else

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值