俄罗斯方块编程(4)
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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




