资源描述:
《定义左上角点在屏幕上位置》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#include#include#include#include#include/*定义左上角点在屏幕上的位置*/#defineMAPXOFT9#defineMAPYOFT5/*定义下一个方块显示的位置*/#defineMAPXOFT113#defineMAPYOFT1-2#defineLEFT0x4b00#defineRIGHT0x4d00#defineDOWN0x5000/*此键为加速键*/#defin
2、eUP0x4800/*此键为变形键*/#defineESC0x011b/*此键为退出键*/#defineENTER0x1c0d#defineTIMER0x1c/*时钟中断的中断号*//*中断处理函数在C和C++中的表示略有不同。如果定义了_cplusplus则表示在C++环境下,否则是在C环境下。*/#ifdef__cplusplus#define__CPPARGS...#else#define__CPPARGS#endifintTimerCounter=0;/*计时变量,每秒钟增加18。*//*指向原来时钟中断处理过程入口的中断处理函数指针(句柄)*/void
3、interrupt(*oldhandler)(__CPPARGS);/*新的时钟中断处理函数*/voidinterruptnewhandler(__CPPARGS){/*increasetheglobalcounter*/TimerCounter++;/*calltheoldroutine*/oldhandler();}/*设置新的时钟中断处理过程*/voidSetTimer(voidinterrupt(*IntProc)(__CPPARGS)){oldhandler=getvect(TIMER);disable();/*设置新的时钟中断处理过程时,禁止所有中断
4、*/setvect(TIMER,IntProc);enable();/*开启中断*/}/*恢复原有的时钟中断处理过程*/voidKillTimer(){disable();setvect(TIMER,oldhandler);enable();}structshape{intxy[8],next;};structshapeshapes[19]={/*x1,y1,x2,y2,x3,y3,x4,y4指四个小方块的相对坐标,next指此方块变形后应变为哪个小方块{x1,y1,x2,y2,x3,y3,x4,y4,next}*/{0,-2,0,-1,0,0,1,0,1},{
5、-1,0,0,0,1,-1,1,0,2},{0,-2,1,-2,1,-1,1,0,3},{-1,-1,-1,0,0,-1,1,-1,0},{0,-2,0,-1,0,0,1,-2,5},{-1,-1,0,-1,1,-1,1,0,6},{0,0,1,-2,1,-1,1,0,7},{-1,-1,-1,0,0,0,1,0,4},{-1,0,0,-1,0,0,1,0,9},{0,-2,0,-1,0,0,1,-1,10},{-1,-1,0,-1,1,-1,0,0,11},{0,-1,1,-2,1,-1,1,0,8},{-1,0,0,-1,0,0,1,-1,13},{0,-2
6、,0,-1,1,-1,1,0,12},{-1,-1,0,-1,0,0,1,0,15},{0,-1,0,0,1,-2,1,-1,14},{0,-3,0,-2,0,-1,0,0,17},{-1,0,0,0,1,0,2,0,16},{0,-1,0,0,1,-1,1,0,18}};intboard[10][20]={0};/*定义游戏板初始化为0*/charsp[]="0",le[]="0",sc[]="00000";intspeed,speed0,level,score;intsign,flag;intstyle,style1;/*style为当前方块的种类,styl
7、e1为即将输出的方块的种类*/voiddraw_block(intx,inty,intstyle,intway);voiddraw_little_block(intx,inty);voidinit();voidinitialize();voidspeed_change(void);voidscore_change(int);voidkill_line(inty);voidfill_board(intx,inty,intstyle);intchange(int*i,int*j,intkey);voidrenovate(void);voidajustment(voi
8、d);voidlevel