文章插图
大家好,小跳来为大家解答以上的问题 。俄罗斯方块C语言代码,俄罗斯方块c语言代码这个很多人还不知道,现在让我们一起来看看吧!
1、俄罗斯方块C源代码#include #include
2、游戏等级、得分和游戏速度int flag,next;//当前要操作的方块类型序号,下一个方块类型序号void gtxy(int m, int n);//以下声明要用到的自编函数void gflag( );//获得下一方块序号void csh( );//初始化界面void start( );//开始部分void prfk ( );//打印方块void clfk( );//清除方块void mkfk( );//制作方块void keyD( );//按键操作intifmov( );//判断方块能否移动或变体void clHA( );//清除满行的方块void clNEXT( );//清除边框外的NEXT方块int main( ){ csh( );while(1){start( );//开始部分while(1){ prfk( );Sleep(speed);//延时clfk( );Tb=x;Tc=flag;//临存当前x坐标和序号,以备撤销操作keyD( );y++;//方块向下移动if (ifmov( )==0) { y--; prfk( ); dlHA( ); break;} //不可动放下,删行,跨出循环}for(i=y-2;i
4、19种小类型 { case 1: { a[x][y-1]=b[1]; a[x+2][y-1]=b[2]; a[x+2][y]=b[3]; break; }//田字方块case 2: { a[x-2][y]=b[1]; a[x+2][y]=b[2]; a[x+4][y]=b[3]; break; }//直线方块:----case 3: { a[x][y-1]=b[1]; a[x][y-2]=b[2]; a[x][y+1]=b[3]; break; }//直线方块: |case 4: { a[x-2][y]=b[1]; a[x+2][y]=b[2]; a[x][y+1]=b[3]; break; }//T字方块case 5: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y]=b[3]; break; }//T字顺时针转90度case 6: { a[x][y-1]=b[1]; a[x-2][y]=b[2]; a[x+2][y]=b[3]; break; }//T字顺转180度case 7: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x+2][y]=b[3]; break; }//T字顺转270度case 8: { a[x][y+1]=b[1]; a[x-2][y]=b[2]; a[x+2][y+1]=b[3]; break; } //Z字方块case 9: { a[x][y-1]=b[1]; a[x-2][y]=b[2]; a[x-2][y+1]=b[3]; break; }//Z字顺转90度case 10: { a[x][y-1]=b[1]; a[x-2][y-1]=b[2]; a[x+2][y]=b[3]; break; }//Z字顺转180度case 11: { a[x][y+1]=b[1]; a[x+2][y-1]=b[2]; a[x+2][ y]=b[3]; break; } //Z字顺转270度case 12: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y-1]=b[3]; break; }//7字方块case 13: {a[x-2][y]=b[1]; a[x+2][y-1]=b[2]; a[x+2][y]=b[3]; break; }//7字顺转90度case 14: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x+2][y+1]=b[3]; break; }//7字顺转180度case 15: { a[x-2][y]=b[1]; a[x-2][y+1]=b[2]; a[x+2][y]=b[3]; break; }//7字顺转270度case 16: { a[x][y+1]=b[1]; a[x][y-1]=b[2]; a[x+2][y-1]=b[3]; break; }//倒7字方块 case 17: { a[x-2][y]=b[1]; a[x+2][y+1]=b[2]; a[x+2][y]=b[3]; break; }//倒7字顺转90度 case 18: { a[x][y-1]=b[1]; a[x][y+1]=b[2]; a[x-2][y+1]=b[3]; break; }//倒7字顺转180度case 19: { a[x-2][y]=b[1]; a[x-2][y-1]=b[2]; a[x+2][y]=b[3]; break; }//倒7字顺转270度 }}void keyD( )//按键操作{ if (kbhit( )){ int key;key=getch();if (key==224){ key=getch();if (key==75) { x-=2; }//按下左方向键,中心横坐标减2if (key==77) { x+=2; }//按下右方向键 , 中心横坐标加2if (key==72)//按下向上方向键,方块变体{ if (flag>=2 && flag<=3 ) { flag++; flag%=2; flag+=2; }if ( flag>=4 && flag<=7 ) { flag++; flag%=4; flag+=4; }if (flag>=8 && flag<=11 ) { flag++; flag%=4; flag+=8; }if (flag>=12 && flag<=15 ) { flag++; flag%=4; flag+=12; }if ( flag>=16 && flag<=19 ) { flag++; flag%=4; flag+=16; } }}if (key==32)//按空格键 。
5、暂停{ prfk( ); while(1) { if (getch( )==32) { clfk( );break;} } }//再按空格键,继续游戏if (ifmov( )==0) { x=Tb; flag=Tc; }//如果不可动,撤销上面操作else { prfk( ); Sleep(speed); clfk( ); Tb=x;Tc=flag;}//如果可动 。
6、执行操作}}int ifmov( )//判断能否移动{ if (a[x][y]!=0) { return 0; }//方块中心处有图案返回0 , 不可移动 else{ if ( (flag==1 && ( a[x][ y-1]==0 && a[x+2][y-1]==0 && a[x+2][y]==0 ) ) ||(flag==2 && ( a[x-2][y]==0 && a[x+2][y]==0 && a[x+4][y]==0 ) ) ||(flag==3 && ( a[x][y-1]==0 && a[x][y-2]==0 && a[x][y+1]==0 ) ) ||(flag==4 && ( a[x-2][y]==0 && a[x+2][y]==0 && a[x][y+1]==0 ) ) ||(flag==5 && ( a[x][y-1]==0 && a[x][y+1]==0 && a[x-2][y]==0 ) ) ||(flag==6 && ( a[x][ y-1]==0 && a[x-2][y]==0 && a[x+2][y]==0 ) ) ||(flag==7 && ( a[x][y-1]==0 && a[x][y+1]==0 && a[x+2][y]==0 ) ) ||(flag==8 && ( a[x][y+1]==0 && a[x-2][y]==0 && a[x+2][y+1]==0 ) ) ||(flag==9 && ( a[x][y-1]==0 && a[x-2][y]==0 && a[x-2][y+1]==0 ) ) ||(flag==10 && ( a[x][y-1]==0 && a[x-2][y-1]==0 && a[x+2][y]==0 ) ) ||(flag==11 && ( a[x][y+1]==0 && a[x+2][y-1]==0 && a[x+2][y]==0 ) ) ||(flag==12 && ( a[x][y-1]==0 && a[x][y+1]==0 && a[x-2][y-1]==0 ) ) ||( flag==13 && ( a[x-2][y]==0 && a[x+2][y-1]==0 && a[x+2][y]==0 ) ) ||( flag==14 && ( a[x][y-1]==0 && a[x][y+1]==0 && a[x+2][y+1]==0 ) ) ||(flag==15 && ( a[x-2][y]==0 && a[x-2][y+1]==0 && a[x+2][y]==0 ) ) ||(flag==16 && ( a[x][y+1]==0 && a[x][y-1]==0 && a[x+2][y-1]==0 ) ) ||( flag==17 && ( a[x-2][y]==0 && a[x+2][y+1]==0 && a[x+2][y]==0 ) ) ||(flag==18 && ( a[x][y-1]==0 &&a[x][y+1]==0 && a[x-2][y+1]==0 ) ) ||(flag==19 && ( a[x-2][y]==0 && a[x-2][y-1]==0&& a[x+2][y]==0 ) ) ) { return 1; }}return 0;//其它情况返回0}void clNEXT( )//清除框外的NEXT方块{ flag = next;x=ZL+WID+6;y=ZL+10;clfk( ); }void clHA( )//清除满行的方块{ int k, Hang=0;//k是某行方块个数, Hang是删除的方块行数for(j=ZL+HEI-1;j>=ZL+1;j--)//当某行有WID/2-2个方块时 , 则为满行{ k=0; for(i=ZL+2;i
【俄罗斯方块c语言代码 俄罗斯方块C语言代码】本文到此分享完毕,希望对大家有所帮助 。
- 判断闰年c语言 判断闰年c语言函数的方法
- 梅花、黑桃、红心和方块的 两人跑的快有些什么牌
- 巴西官方语言
- 国际奥委会法定官方语言
- 马来语在线翻译 马来语言翻译
- c4是什么意思网络语言
- qq俄罗斯方块加速器
- 畲族主要分布在什么地方 畲族讲什么语言
- 享受春雨在语言方面有什么特点 用简洁的语言概括春雨的特点
- 机器语言是由什么组成 机器语言代表语言有哪些