




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#include#define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b #define ENTER 0x1c0d#define N 20 /*行数*/#define M 10 /*列数*/int wuzhiwenkey; /*用来接收你所按的键*/int zhongkai; /*用来接收当前的物体状态信息*/int warcraft3=4; /*用来接收第一层状态信息*/ struct pointint x;int y;int flag; /*画黑格还是有色格子*/ int gezi_control; /*判断是否处于结构体gezi的控制下*/;struct point wuNM; struct geziint x;int y;int flag; /*判断这点是否要画色格*/;struct gezi zhiwen44;struct array /*用来装物体的形状*/int a44;struct bossarray /*搞这么多层,其实是为了随机出物体和改变物体的方向有顺序*/struct array b4;shape7; /*要控制的物体的形状*/int a144= 0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0 ;int a244= 0,1,0,0,0,1,1,0,0,1,0,0,0,0,0,0 ;int a344= 0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0 ;int a444= 0,1,0,0,1,1,0,0,0,1,0,0,0,0,0,0 ;int b144= 1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,0 ;int b244= 0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0 ;int b344= 0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0 ;int b444= 0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0 ;int c144= 0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0 ;int c244= 1,0,0,0,1,1,0,0,0,1,0,0,0,0,0,0 ;int c344= 0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0 ;int c444= 0,1,0,0,1,1,0,0,1,0,0,0,0,0,0,0 ;int d144= 0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,0 ;int d244= 0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0 ;int d344= 1,0,0,0,1,0,0,0,1,1,0,0,0,0,0,0 ;int d444= 1,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0 ;int e144= 1,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0 ;int e244= 1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0 ;int e344= 0,0,1,0,0,0,1,0,0,1,1,0,0,0,0,0 ;int e444= 0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0 ;int f144= 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0 ;int f244= 0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0 ;int f344= 0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0 ;int f444= 0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0 ;int g144= 0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0 ;int g244= 0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0 ;int g344= 0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0 ;int g444= 0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0 ;void setshape(int a44,int temp44) /*把上面的数组的形状装到shape里*/ int i,j; for(i=0;i4;i+) for(j=0;j4;j+) aij=tempij; void setshape2() /*给shape给他形状*/setshape(shape0.b0.a,a1);setshape(shape0.b1.a,a2);setshape(shape0.b2.a,a3);setshape(shape0.b3.a,a4);setshape(shape1.b0.a,b1);setshape(shape1.b1.a,b2);setshape(shape1.b2.a,b3);setshape(shape1.b3.a,b4);setshape(shape2.b0.a,c1);setshape(shape2.b1.a,c2);setshape(shape2.b2.a,c3);setshape(shape2.b3.a,c4);setshape(shape3.b0.a,d1);setshape(shape3.b1.a,d2);setshape(shape3.b2.a,d3);setshape(shape3.b3.a,d4);setshape(shape4.b0.a,e1);setshape(shape4.b1.a,e2);setshape(shape4.b2.a,e3);setshape(shape4.b3.a,e4);setshape(shape5.b0.a,f1);setshape(shape5.b1.a,f2);setshape(shape5.b2.a,f3);setshape(shape5.b3.a,f1);setshape(shape6.b0.a,g1);setshape(shape6.b1.a,g2);setshape(shape6.b2.a,g3);setshape(shape6.b3.a,g4);/*改变格子数组flag的值,使之能显示物体的形状*/void zhiwen_flag()void temp1(int a44); /*函数声明*/int estimate_error();void end();int k;randomize();k=random(6);zhongkai=k; /*保存当前的要下落的物体的形状信息*/warcraft3=4; /*还原状态的初值*/switch(k) case 0: temp1(shape0.b0.a);break; case 1: temp1(shape1.b0.a);break; case 2: temp1(shape2.b0.a);break; case 3: temp1(shape3.b0.a);break; case 4: temp1(shape4.b0.a);break; case 5: temp1(shape5.b0.a);break; case 6: temp1(shape6.b0.a);break; if(estimate_error()end(); void temp1(int a44) /*跟着zhiwen_flag函数,是他的小弟*/int i,j;for(i=0;i4;i+)for(j=0;j4;j+)if(aij=1)zhiwenij.flag=1;elsezhiwenij.flag=0;void zhiwenflag_enter()warcraft3+;temp1(shapezhongkai.bwarcraft3%4.a); /*这函数用来改变方框的gezi_control的值,为画方框做准备*/void change() int i,j,k,p; for(k=0;k4;k+) for(p=0;p4;p+) if(zhiwenkp.flag=1) for(i=0;iN;i+) for(j=0;jM;j+) if( (zhiwenkp.x=wuij.x) & (zhiwenkp.y=wuij.y) ) wuij.gezi_control=1;void draw() /*画出图形*/int i,j;for(i=0;iN;i+)for(j=0;jM;j+) if(wuij.flag=0) setfillstyle(0,BLACK); bar(wuij.x,wuij.y,wuij.x+20,wuij.y+20); setcolor(BLACK); rectangle(wuij.x,wuij.y,wuij.x+20,wuij.y+20); for(i=0;iN;i+)for(j=0;jM;j+)if(wuij.gezi_control=1)setfillstyle(11,YELLOW);bar(wuij.x,wuij.y,wuij.x+20,wuij.y+20);setcolor(RED); rectangle(wuij.x,wuij.y,wuij.x+20,wuij.y+20); if(wuij.flag)setfillstyle(11,YELLOW); bar(wuij.x,wuij.y,wuij.x+20,wuij.y+20);setcolor(RED); rectangle(wuij.x,wuij.y,wuij.x+20,wuij.y+20);void wuzhiwen200910214117() /*给zhiwen数组给初值,位置是最上面的格子*/int i,j; for(i=0;i4;i+)for(j=0;j4;j+)zhiwenij.x=wuij+2.x;zhiwenij.y=wuij+2.y;zhiwenij.flag=0;void cleargezi_control() /*物体下落后,把wu的gezi_control恢复原来的值*/int i,j;for(i=0;iN;i+)for(j=0;jM;j+)wuij.gezi_control=0;void setflag() /*下落的物本固定住*/ int i,j; for(i=0;iN;i+) for(j=0;jM;j+) if(wuij.gezi_control=1) wuij.flag=1;int tmd() /*看格子的flag与方框的flag是否重复*/int i,j,k,p;for(k=0;k4;k+)for(p=0;p4;p+)if(zhiwenkp.flag=1)for(i=0;iN;i+)for(j=0;jM;j+) if(wuij.flag=1) if( (wuij.x=zhiwenkp.x) & (wuij.y=zhiwenkp.y) ) return(1); return(0);int estimate_error() /*判断zhiwen数组下移后是否与方框的格子重复*/int i,j;for(i=0;i4;i+)for(j=0;j4;j+)if(tmd()return(1); return(0);int isunder() /*判断是否到了低了*/int i,j;for(i=0;i4;i+)for(j=0;j4;j+)if( (zhiwenij.flag=1) & (zhiwenij.y=wuN-11.y) )return(1); return(0);int turnleft_error() /*功能是判断向左时合不合理*/int i,j;for(i=0;i4;i+)for(j=0;j4;j+)if(zhiwenij.flag=1)if(zhiwenij.x=wu10.x-20)return(1); return(0);int turnright_error() /*功能是判断向右时合不合理*/int i,j;for(i=0;i4;i+)for(j=0;j4;j+)if(zhiwenij.flag=1)if(zhiwenij.x=wu1M-1.x+20)return(1); return(0);void deleteline() /*删除一行!妈呀终于到了最后一个函数了!*/void deleteline2(int wuzhiwen);int i,j,sum=0;for(i=0;iN;i+)for(j=0,sum=0;jM;j+)sum+=wuij.flag;if(sum=M)deleteline2(i);draw();sleep(1);void deleteline2(int wuzhiwen) /*wuzhiwen是所在行,此函数专为deleteline()服务*/int i,j;for(j=0;j=0;i-)for(j=0;jM;j+)if(wuij.flag=1)wuij.flag=0;wui+1j.flag=1;void end()clrscr();outtextxy(200,200,press any key to exit!);getch();exit(1);void main()int i,j; /*中间数据*/ int graphdriver=DETECT,graphmode; void playgame();/*给point结构体数组给初值;*/for(i=1,wu00.x=200;iM;i+)wu0i.x=wu0i-1.x+20;for(i=1;iN;i+)for(j=0;jM;j+)wuij.x=wu0j.x; for(i=1,wu00.y=20;iN;i+)wui0.y=wui-10.y+20;for(j=1;jM;j+)for(i=0;iN;i+)wuij.y=wui0.y; for(i=0;iN;i+) for(j=0;jM;j+) wuij.flag=0; wuij.gezi_control=0; setshape2(); /*给每一个形状初值*/ wuzhiwen200910214117(); /*给zhiwen数组给初值*/ zhiwen_flag(); /* 给格子数组初值 */*图形驱动*/ initgraph(&graphdriver,&graphmode,); setcolor(YELLOW); outtextxy(10,40,writer: wuzhiwen); outtextxy(10,60,number: 200910214117); outtextxy(10,80,finish in 2010-6-29); outtextxy(10,100,from: zhongkai_school); outtextxy(10,120,class: jiji 091.); setcolor(WHITE); outtextxy(10,200,how to play:); outtextxy(10,220, press ENTER to change); outtextxy(10,240, press RIGHT or LEFT ); outtextxy(10,260, press ESC to exit); sleep(3); setcolor(WHITE); rectangle(wu00.x-5 , wu00.y-5 ,wuN-1M-1.x+25 , wuN-1M-1.y+25); playgame(); void playgame() int i,j,k,p,i1,j1; /*中间数据*/ while(1) cleargezi_control(); change(); draw(); /*画图*/ sleep(1); /*格子数组的y值增加20。*/ for(i1=0;i14;i1+) for(j1=0;j14;j1+) zhiweni1j1.y+=20; if(isunder() /*当到了低时的那种情况*/ if(estimate_error() for(i1=0;i14;i1+) for(j1=0;j14;j1+) zhiweni1j1.y-=20; cleargezi_control(); change(); setflag(); cleargezi_control(); deleteline(); wuzhiwen200910214117(); /*回到初始位置*/ zhiwen_flag(); /*给它形状*/ else cleargezi_control(); change(); setflag(); cleargezi_control(); deleteline(); wuzhiwen200910214117(); zhiwen_flag(); else if(estimate_error() for(i1=0;i14;i1+) for(j1=0;j14;j1+) zhiweni1j1.y-=20; cleargezi_control(); change(); setflag(); cleargezi_control(); deleteline(); wuzhiwen200910214117(); zhiwen_flag(); while(kbhit() wuzhiwenkey=bioskey(0);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络直播平台汽车行业内容合作合同
- 城市公共单位房改房产权明晰转让协议
- 生物材料合成生物学研究员岗位协议
- 美团外卖平台商家入驻及运营支持服务合同
- 初中安全纪律主题班会
- 《商务沟通与职业素养》课件
- 部门质量管理半年总结
- 《哈尔滨医科大学附属第一医院王立博课件》
- 初一生物下册课件
- 《大型活动策划与执行攻略:课件精讲》
- 游戏室电竞椅行业跨境出海战略研究报告
- 初二下学期期中家长会发言稿
- 福建省福州市2025年初中毕业班教学质量检测二生物学试卷(无答案)
- 山东省济南市东南片区2024-2025学年七年级下学期期中考试英语试题
- 2025-2030中国城市规划行业深度分析及发展前景与发展战略研究报告
- 2025年全国焊工作业人员职业技能理论考试练习题库(900题)含答案
- 道岔区无砟轨道我国高速铁路道岔区采用的无砟轨道主要有长枕埋
- 《行政法与行政诉讼法》课件各章节内容-第二十六章 行政赔偿及诉讼
- 【9物一模】2025年安徽省合肥市45中(橡树湾)中考一模物理试卷
- 计算机系统规划与管理考试内容试题及答案
- 药店质量负责人聘用合同范例二零二五年
评论
0/150
提交评论