教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

俄罗斯方块编程(4)

来源:网络收集 时间:2026-01-18
导读: void KillTimer(){ disable(); setvect(TIMER,oldhandler); enable(); } /* 测试当前方块是否可以向下落*/ int downok(){ int i,j,k=1,a[4][4]; for(i=0;i a[i/4][i%4]=boxstr[boxgs][boxfx][i]; for(i=0;i if(a[j]

void KillTimer(){ disable();

setvect(TIMER,oldhandler); enable(); }

/* 测试当前方块是否可以向下落*/ int downok(){ int i,j,k=1,a[4][4]; for(i=0;i<16;i++)

a[i/4][i%4]=boxstr[boxgs][boxfx][i]; for(i=0;i<4;i++) for(j=0;j<4;j++)

if(a[j] && gril[col+i+1][row+j]) k=0; return(k); }

/* 测试当前方块是否可以向左行*/ int leftok(){

int i,j,k=1,a[4][4]; for(i=0;i<16;i++)

a[i/4][i%4]=boxstr[boxgs][boxfx][i]; for(i=0;i<4;i++) for(j=0;j<4;j++)

if(a[j] && gril[col+i][row+j-1]) k=0; return(k); }

/* 测试当前方块是否可以向右行*/ int rightok(){ int i,j,k=1,a[4][4]; for(i=0;i<16;i++)

a[i/4][i%4]=boxstr[boxgs][boxfx][i]; for(i=0;i<4;i++) for(j=0;j<4;j++)

if(a[j] && gril[col+i][row+j+1]) k=0; return(k); }

/* 测试当前方块是否可以变形*/ int upok(){

int i,j,k=1,a[4][4]; for(i=0;i<4;i++) for(i=0;i<16;i++)

a[i/4][i%4]=boxstr[boxgs][boxfx+1][i];

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

if(a[j] && gril[col+i][row+j]) k=0; return(k); }

/*当前方块落下之后,给屏幕坐标作标记*/ void setgril(){ int i,j,a[4][4];

funbox(0,0,minboxcolor,0); for(i=0;i<16;i++)

a[i/4][i%4]=boxstr[boxgs][boxfx][i]; for(i=0;i<4;i++) for(j=0;j<4;j++) if(a[j])

gril[col+i][row+j]=1; col=1;row=7; }

/*游戏结束*/ void gameover(){ int i,j;

for(i=20;i>0;i--) for(j=1;j<15;j++)

minbox(j*MINBOXSIZE,i*MINBOXSIZE,2,0); txt(103,203,\ }

/*按键的设置*/

void call_key(int keyx){ switch(keyx){

case VK_DOWN: { /*下方向键,横坐标加一。*/ if(downok()){ col++;

funbox(0,0,minboxcolor,0);} else{

funbox(0,0,minboxcolor,0); setgril();

nextfunbox(NEXTCOL,NEXTROW,4,4); boxrad();

nextfunbox(NEXTCOL,NEXTROW,nextminboxcolor,0); delete(); } break; }

case VK_UP: { /*上方向键,方向形状旋转90度*/

if(upok()) boxfx++; if(boxfx>3) boxfx=0;

funbox(0,0,minboxcolor,0); break; }

case VK_LEFT:{ /*左方向键,纵坐标减一*/ if(leftok()) row--;

funbox(0,0,minboxcolor,0); break; }

case VK_RIGHT:{ /*右方向键,纵坐标加一*/ if(rightok()) row++;

funbox(0,0,minboxcolor,0); break; }

case VK_SPACE: /*空格键,直接落到最后可以落到的们置*/ while(downok()) col++;

funbox(0,0,minboxcolor,0); setgril();

nextfunbox(NEXTCOL,NEXTROW,4,4); boxrad();

nextfunbox(NEXTCOL,NEXTROW,nextminboxcolor,0); delete(); break; default: {

txt(423,53,\

txt(428,80,\ getch();

clscr(420,50,622,97,BGCOLOR); } } }

/*时间中断开始*/ void timezd(void){ int key;

SetTimer(newhandler); boxrad();

nextfunbox(NEXTCOL,NEXTROW,nextminboxcolor,0);

for(;;){

if(bioskey(1)){ key=bioskey(0);

funbox(0,0,BGCOLOR,BGCOLOR); if(key==VK_ESC) break;

call_key(key); }

if(TimerCounter>gamedj[dj]){ TimerCounter=0; if(downok()){

funbox(0,0,BGCOLOR,BGCOLOR); col++;

funbox(0,0,minboxcolor,0); } else {

if(col==1){ gameover(); getch(); break; }

setgril(); delete();

funbox(0,0,minboxcolor,0); col=1;row=7;

funbox(0,0,BGCOLOR,BGCOLOR); nextfunbox(NEXTCOL,NEXTROW,4,4); boxrad();

nextfunbox(NEXTCOL,NEXTROW,nextminboxcolor,0); } } } }

/*主程序开始*/ void main(void){ int i,j;

char *nm=\ init(VGA,VGAHI); cls();

/*屏幕坐标初始化*/

for(i=0;i<=MAXCOL+1;i++) for(j=0;j<=MAXROW+1;j++) gril[i][j]=0;

for(i=0;i<=MAXCOL+1;i++) {

gril[i][0]=1; gril[i][15]=1; }

for(j=1;j<=MAXROW;j++){ gril[0][j]=1; gril[21][j]=1; }

clscr(0,0,640,480,15); win(1,1,639,479,4,15);

win(SCCOL+MINBOXSIZE-2,SCROW+MINBOXSIZE-2,SCCOL+15*MINBOXSIZE+2,SCROW+21*MINBOXSIZE+2,BGCOLOR,0); nextboxgs=random(8); nextboxfx=random(4); sprintf(nm,\

txt(456,173,\ txt(456,193,nm,1,15);

txt(456,243,\ timezd(); KillTimer(); closegraph(); getch(); }

…… 此处隐藏:947字,全部文档内容请下载后查看。喜欢就下载吧 ……
俄罗斯方块编程(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/447159.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)