c语言编辑十种方块俄罗斯方块块程序中,控制方块旋转的这段程序是什么意思?(第三张图)

C语言中编辑俄罗斯方块保存游戏进度的源代码?_百度知道
C语言中编辑俄罗斯方块保存游戏进度的源代码?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
采纳数:132
获赞数:86
假设有地图 map[V][C],这个数组的值可以是颜色值,或者是编号,把这个数组全部写入文件;另外在此之前,文件需要一个文件头,里面包含标识字、保存日期、得分、当前方块的编号和位置、下一块方块的编号,等等信息。进度恢复时,需要根据当前得分定位速度、恢复方块的位置、恢复地图,刷新画板。
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。问:普京会不会玩俄罗斯方块?答:普京原先是KGB在德国的车船飞机械格电脑经济都很精通俄罗斯方块不在话下
问:俄罗斯方块c语言的码答:俄罗斯方块c语言的码()第个cpp:#include"colorConsole.h"HANDLE initiate(){ HANDLE
问:用c语言编写俄罗斯方块的程序答:这里把游戏的关键设计放在三个盒子和个坐标上:大盒子:个两维数组,着方块点阵的开与关(把游戏的舞台想像成个点阵),在下面也把这个东西称为地图两个*...
问:俄罗斯方块怎么做(要思想)具体怎么是想给个思想,不要只给源码,告诉我思想,听说要哪个数组什么的,请问要...答:俄罗斯方块游戏设计的主要步骤为以下个方面:()游戏界面的设计。()俄罗斯方块的造型。()俄罗斯方块的旋转。()俄罗斯方块的运动情况(包括向左,向...
问:求助:用JA编个俄罗斯方块的程序希望高手帮忙啊!帮忙用JA做个俄罗斯方块的程序.用双向法,做个简单的俄罗斯方块...答:你倒轻松了,这么多行码谁白给你敲啊?又没点悬赏分,给我分我就给你敲!ja.awt.*;import ja.awt.event.*;俄罗斯方块类 public class ERS_Block...
问:俄罗斯方块的c语言源码 api实现用c语言怎么写啊?而且要用api实现,尤其是窗口部分请注释详细点,mfc就免了吧!...答:TC下面的/*Desc:俄罗斯方块游戏*By:hoodlum*Email:jinfd*Date:..:*/include&stdio.h&#include&bios.h&#include&dos.h&#...
问:俄罗斯方块哪里有最好的俄罗斯方块游戏?网上怎么?听说在经受了创伤后,玩...答:下就有了。很多的
问:C语言俄罗斯方块问题 include&stdio.h&#include&s.h&int main(){ int i,j;int fk[][]={{,,...答:就是if(fk[i][j]!)
问:c语言做俄罗斯方块c语言实现俄罗斯方块,要求有详细注释.答:我来对这段程序做释:#include&stdlib.h&/*标准库*/include&graphics.h&/*绘图库*/include&bios.h&/*BIOS库,输入输出,BIOS时间等*/define m/*各种...
问:求俄罗斯方块编程思想?目前,我想用JA或VB写个俄罗斯方块的游戏,可是点思绪都没有,望那位高手...答:俄罗斯方块思想(--::)分类:JME俄罗斯方块俄罗斯方块是款非常流行的小游戏,通过个方块的旋转和位移,构成各种变幻莫测的图。而游戏者也...
问:俄罗斯方块用什么语言编写好?我的毕业设计要做个俄罗斯方块,我各种语言都不是很精通,想请问大家,像我...答:这个的例程很多,: ishare.iask.sina./f/?from=zhishi还有: ishare.iask.sina./f/?from=like都是。
问:C语言俄罗斯方块如何更新游戏底板答:根据实现方法不同有不同的做法,最笨的方法就是全部清空重新绘制,比较好点的就是不理会底板,只消除需要消除的方块,然后绘制新方块,再好点的就是,将底板...
问:c语言编译俄罗斯方块详细的俄罗斯方块编译答:main(int argc,char*ar[]){ if(argc!){ if(ar[]!Heng=atoi(ar[]);if(ar[]!Shu=atoi(ar[]);} Init();初始化界面*/PreAct=random();取得...
问:谁能大致描述下C语言做俄罗斯方块的思想答:其实做俄罗斯方块这种东西不需要多么复杂的算法,你要考虑下面几个问题:.俄罗斯方块的难度设置,即方块的下落速度,这个有定时器控制。所以你需要用到...
09-1809-0109-0409-16
02-2503-0204-1501-26
◇本站云标签C#实现的俄罗斯方块程序(源码)
C#实现的俄罗斯方块程序(源码)
C实现的俄罗斯方块程序(源码)&&&&
12345678910c语言 编写俄罗斯方块的程序 要求有详细的中文注释_百度知道
c语言 编写俄罗斯方块的程序 要求有详细的中文注释
最好有流程图加中文注释越详尽越好本人是初学者太难也看不懂简单点就好拜托各位高手啦..如果满意会追加100分...
最好有流程图 加中文注释 越详尽越好 本人是初学者 太难也看不懂 简单点就好 拜托各位高手啦..如果满意会追加100分
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
别动队领导
别动队领导
采纳数:102
获赞数:325
刚学c的时候编的,所以程序规范性以及代码的执行效率都不高,而且程序超长。但应该没有太难的语句。 #include&stdio.h& #include&string.h& #include&bios.h& #include&stdlib.h& #include&time.h& #include&dos.h& int dx[4],dy[4]; /*定义全局变量*/ int zt1,zt2,str[15][19]; /*str[15][19]是把整个屏幕分为15*19个方格,每一个方格用一个数组单元表示, 如果=15,则这个方格已被占用,=0,则还是空的*/ int cx[8][5][4],cy[8][5][4]; /*该变量表示每种状态下,旋转时坐标的改变*/ int x,y,j,ji,c; int maxzt[8]={0,2,1,4,2,2,4,4}; /*各个种类的方块分别有几种状态*/ cir() /*旋转的处理函数*/ { dx[0]=dx[0]+cx[zt1][zt2][0];dy[0]=dy[0]+cy[zt1][zt2][0]; dx[2]=dx[2]+cx[zt1][zt2][2];dy[2]=dy[2]+cy[zt1][zt2][2]; dx[3]=dx[3]+cx[zt1][zt2][3];dy[3]=dy[3]+cy[zt1][zt2][3]; } jiance() /*检测旋转或移动能否进行的函数,能则j=1,不能j=0*/ { j=1; for(ji=0;ji&4;ji++) { x=dx[ji];y=dy[ji]; if(str[x][y]!=' ') j=0; } c=bioskey(1); if(c!=0) c=bioskey(0); } main() { int dotx[4],doty[4], /*dotx[]doty[]表示一个方块个点的坐标*/ int ddx, int rzt1,rzt2,i,u,t=1; int a[5],b[11],o,p,an, int rotx[4],roty[4],spd=0; begin: system(&cls&); /*游戏初始化阶段*/ printf(&londing...&); for(i=0;i&12;i++) /*变量初始阶段*/ { for(u=0;u&19;u++) str[i][u]=' '; } for(i=0;i&12;i++) { str[i][0]='-';str[i][18]='-'; } for(u=0;u&19;u++) { str[0][u]='|';str[11][u]='|'; } cx[1][1][0]=1;cx[1][1][2]=-1;cx[1][1][3]=-2; /*对旋转变量进行赋值*/ cy[1][1][0]=1;cy[1][1][2]=-1;cy[1][1][3]=-2; cx[1][2][0]=-1;cx[1][2][2]=1;cx[1][2][3]=2; cy[1][2][0]=-1;cy[1][2][2]=1;cy[1][2][3]=2; cx[2][1][0]=0;cx[2][1][2]=0;cx[2][1][3]=0; cy[2][1][0]=0;cy[2][1][2]=0;cy[2][1][3]=0; cx[3][1][0]=1;cx[3][1][2]=-1;cx[3][1][3]=1; cy[3][1][0]=-1;cy[3][1][2]=1;cy[3][1][3]=1; cx[3][2][0]=1;cx[3][2][2]=-1;cx[3][2][3]=-1; cy[3][2][0]=1;cy[3][2][2]=-1;cy[3][2][3]=1; cx[3][3][0]=-1;cx[3][3][2]=1;cx[3][3][3]=-1; cy[3][3][0]=1;cy[3][3][2]=-1;cy[3][3][3]=-1; cx[3][4][0]=-1;cx[3][4][2]=1;cx[3][4][3]=1; cy[3][4][0]=-1;cy[3][4][2]=1;cy[3][4][3]=-1; cx[4][1][0]=-1;cx[4][1][2]=1;cx[4][1][3]=2; cy[4][1][0]=1;cy[4][1][2]=1;cy[4][1][3]=0; cx[4][2][0]=1;cx[4][2][2]=-1;cx[4][2][3]=-2; cy[4][2][0]=-1;cy[4][2][2]=-1;cy[4][2][3]=0; cx[5][1][0]=1;cx[5][1][2]=1;cx[5][1][3]=0; cy[5][1][0]=-1;cy[5][1][2]=1;cy[5][1][3]=2; cx[5][2][0]=-1;cx[5][2][2]=-1;cx[5][2][3]=0; cy[5][2][0]=1;cy[5][2][2]=-1;cy[5][2][3]=-2; cx[6][1][0]=1;cx[6][1][2]=-1;cx[6][1][3]=0; cy[6][1][0]=-1;cy[6][1][2]=1;cy[6][1][3]=2; cx[6][2][0]=1;cx[6][2][2]=-1;cx[6][2][3]=-2; cy[6][2][0]=1;cy[6][2][2]=-1;cy[6][2][3]=0; cx[6][3][0]=-1;cx[6][3][2]=1;cx[6][3][3]=0; cy[6][3][0]=1;cy[6][3][2]=-1;cy[6][3][3]=-2; cx[6][4][0]=-1;cx[6][4][2]=1;cx[6][4][3]=2; cy[6][4][0]=-1;cy[6][4][2]=1;cy[6][4][3]=0; cx[7][1][0]=-1;cx[7][1][2]=1;cx[7][1][3]=2; cy[7][1][0]=1;cy[7][1][2]=-1;cy[7][1][3]=0; cx[7][2][0]=-1;cx[7][2][2]=1;cx[7][2][3]=0; cy[7][2][0]=-1;cy[7][2][2]=1;cy[7][2][3]=2; cx[7][3][0]=1;cx[7][3][2]=-1;cx[7][3][3]=-2; cy[7][3][0]=-1;cy[7][3][2]=1;cy[7][3][3]=0; cx[7][4][0]=1;cx[7][4][2]=-1;cx[7][4][3]=0; cy[7][4][0]=1;cy[7][4][2]=-1;cy[7][4][3]=-2; srand(time(0)); /*对随机数函数rand()进行初始化*/ zt1=rand()%7+1; /*生成第一、二个方块*/ if(zt1==2) zt2=1; if(zt1==1||zt1==4||zt1==5) zt2=rand()%2+1; if(zt1==3||zt1==6||zt1==7) zt2=rand()%4+1; rzt1=rand()%7+1; if(rzt1==2) rzt2=1; if(rzt1==1||rzt1==4||rzt1==5) rzt2=rand()%2+1; if(rzt1==3||rzt1==6||rzt1==7) rzt2=rand()%4+1; score=0; for(o=1;o&11;o++) b[o]=0; switch(zt1*10+zt2) /*zt1和zt2分别代表方块的种类和状态,这步是根据这两个变量确定方块的四个点的坐标*/ { case 11: dotx[0]=4;dotx[1]=5;dotx[2]=6;dotx[3]=7; doty[0]=2;doty[1]=2;doty[2]=2;doty[3]=2;
case 12: dotx[0]=5;dotx[1]=5;dotx[2]=5;dotx[3]=5; doty[0]=4;doty[1]=3;doty[2]=2;doty[3]=1;
case 21: dotx[0]=5;dotx[1]=6;dotx[2]=5;dotx[3]=6; doty[0]=1;doty[1]=1;doty[2]=2;doty[3]=2;
case 31: dotx[0]=4;dotx[1]=5;dotx[2]=6;dotx[3]=5; doty[0]=2;doty[1]=2;doty[2]=2;doty[3]=1;
case 32: dotx[0]=5;dotx[1]=5;dotx[2]=5;dotx[3]=6; doty[0]=1;doty[1]=2;doty[2]=3;doty[3]=2;
case 33: dotx[0]=6;dotx[1]=5;dotx[2]=4;dotx[3]=5; doty[0]=1;doty[1]=1;doty[2]=1;doty[3]=2;
case 34: dotx[0]=6;dotx[1]=6;dotx[2]=6;dotx[3]=5; doty[0]=3;doty[1]=2;doty[2]=1;doty[3]=2;
case 41: dotx[0]=6;dotx[1]=5;dotx[2]=5;dotx[3]=4; doty[0]=2;doty[1]=2;doty[2]=1;doty[3]=1;
case 42: dotx[0]=5;dotx[1]=5;dotx[2]=6;dotx[3]=6; doty[0]=3;doty[1]=2;doty[2]=2;doty[3]=1;
case 51: dotx[0]=4;dotx[1]=5;dotx[2]=5;dotx[3]=6; doty[0]=2;doty[1]=2;doty[2]=1;doty[3]=1;
case 52: dotx[0]=5;dotx[1]=5;dotx[2]=6;dotx[3]=6; doty[0]=1;doty[1]=2;doty[2]=2;doty[3]=3;
case 61: dotx[0]=4;dotx[1]=5;dotx[2]=6;dotx[3]=6; doty[0]=2;doty[1]=2;doty[2]=2;doty[3]=1;
case 62: dotx[0]=5;dotx[1]=5;dotx[2]=5;dotx[3]=6; doty[0]=1;doty[1]=2;doty[2]=3;doty[3]=3;
case 63: dotx[0]=6;dotx[1]=5;dotx[2]=4;dotx[3]=4; doty[0]=1;doty[1]=1;doty[2]=1;doty[3]=2;
case 64: dotx[0]=6;dotx[1]=6;dotx[2]=6;dotx[3]=5; doty[0]=3;doty[1]=2;doty[2]=1;doty[3]=1;
case 71: dotx[0]=6;dotx[1]=5;dotx[2]=4;dotx[3]=4; doty[0]=2;doty[1]=2;doty[2]=2;doty[3]=1;
case 72: dotx[0]=5;dotx[1]=5;dotx[2]=5;dotx[3]=6; doty[0]=3;doty[1]=2;doty[2]=1;doty[3]=1;
case 73: dotx[0]=4;dotx[1]=5;dotx[2]=6;dotx[3]=6; doty[0]=1;doty[1]=1;doty[2]=1;doty[3]=2;
case 74: dotx[0]=6;dotx[1]=6;dotx[2]=6;dotx[3]=5; doty[0]=1;doty[1]=2;doty[2]=3;doty[3]=3;
} switch(rzt1*10+rzt2) /*确定第二个方块各个点的坐标*/ { case 11: rotx[0]=4;rotx[1]=5;rotx[2]=6;rotx[3]=7; roty[0]=2;roty[1]=2;roty[2]=2;roty[3]=2;
case 12: rotx[0]=5;rotx[1]=5;rotx[2]=5;rotx[3]=5; roty[0]=4;roty[1]=3;roty[2]=2;roty[3]=1;
case 21: rotx[0]=5;rotx[1]=6;rotx[2]=5;rotx[3]=6; roty[0]=1;roty[1]=1;roty[2]=2;roty[3]=2;
case 31: rotx[0]=4;rotx[1]=5;rotx[2]=6;rotx[3]=5; roty[0]=2;roty[1]=2;roty[2]=2;roty[3]=1;
case 32: rotx[0]=5;rotx[1]=5;rotx[2]=5;rotx[3]=6; roty[0]=1;roty[1]=2;roty[2]=3;roty[3]=2;
case 33: rotx[0]=6;rotx[1]=5;rotx[2]=4;rotx[3]=5; roty[0]=1;roty[1]=1;roty[2]=1;roty[3]=2;
case 34: rotx[0]=6;rotx[1]=6;rotx[2]=6;rotx[3]=5; roty[0]=3;roty[1]=2;roty[2]=1;roty[3]=2;
case 41: rotx[0]=6;rotx[1]=5;rotx[2]=5;rotx[3]=4; roty[0]=2;roty[1]=2;roty[2]=1;roty[3]=1;
case 42: rotx[0]=5;rotx[1]=5;rotx[2]=6;rotx[3]=6; roty[0]=3;roty[1]=2;roty[2]=2;roty[3]=1;
case 51: rotx[0]=4;rotx[1]=5;rotx[2]=5;rotx[3]=6; roty[0]=2;roty[1]=2;roty[2]=1;roty[3]=1;
case 52: rotx[0]=5;rotx[1]=5;rotx[2]=6;rotx[3]=6; roty[0]=1;roty[1]=2;roty[2]=2;roty[3]=3;
case 61: rotx[0]=4;rotx[1]=5;rotx[2]=6;rotx[3]=6; roty[0]=2;roty[1]=2;roty[2]=2;roty[3]=1;
case 62: rotx[0]=5;rotx[1]=5;rotx[2]=5;rotx[3]=6; roty[0]=1;roty[1]=2;roty[2]=3;roty[3]=3;
case 63: rotx[0]=6;rotx[1]=5;rotx[2]=4;rotx[3]=4; roty[0]=1;roty[1]=1;roty[2]=1;roty[3]=2;
case 64: rotx[0]=6;rotx[1]=6;rotx[2]=6;rotx[3]=5; roty[0]=3;roty[1]=2;roty[2]=1;roty[3]=1;
case 71: rotx[0]=6;rotx[1]=5;rotx[2]=4;rotx[3]=4; roty[0]=2;roty[1]=2;roty[2]=2;roty[3]=1;
case 72: rotx[0]=5;rotx[1]=5;rotx[2]=5;rotx[3]=6; roty[0]=3;roty[1]=2;roty[2]=1;roty[3]=1;
case 73: rotx[0]=4;rotx[1]=5;rotx[2]=6;rotx[3]=6; roty[0]=1;roty[1]=1;roty[2]=1;roty[3]=2;
case 74: rotx[0]=6;rotx[1]=6;rotx[2]=6;rotx[3]=5; roty[0]=1;roty[1]=2;roty[2]=3;roty[3]=3;
} system(&cls&); /*显示初始阶段*/ printf(&\n\n\n&); /*游戏区域下移3*/ for(u=0;u&19;u++) { for(i=0;i&12;i++) printf(&%c&,str[i][u]); printf(&\n&); } gotoxy(16,5);printf(&--------&); gotoxy(16,12);printf(&--------&); for(i=6;i&12;i++) { gotoxy(16,i);printf(&|&);gotoxy(23,i);printf(&|&); } for(i=6;i&12;i++) { gotoxy(16,i);printf(&|&);gotoxy(23,i);printf(&|&); } for(i=0;i&4;i++) { gotoxy(rotx[i]+14,roty[i]+6);printf(&%c&,15); } begin2: delay(26000); /*游戏开始,延迟1*/ speed: delay(10000); /*加速,延迟2*/ gotoxy(16,14);printf(&Score:%d&,score); for(i=0;i&4;i++) { gotoxy(dotx[i]+1,doty[i]+4);printf(& &); ddx=dotx[i];ddy=doty[i]; str[ddx][ddy]=' '; } an=an-0.4; /*表示按键是否一直按着,用于方块落地后的移动*/ c=bioskey(1); /*按键处理部分*/ /*bioskey(1)是用来检测是否按下案件的函数*/ if(c!=0) { c=bioskey(0); if(c==8292||c==19712) { for(i=0;i&4;i++) { dx[i]=dotx[i]+1;dy[i]=doty[i]; } jiance(); for(i=0;i&4;i++) dotx[i]=(j)? dx[i] : dotx[i]; an=(j||bn); } if(c==7777||c==19200) { for(i=0;i&4;i++) { dx[i]=dotx[i]-1;dy[i]=doty[i]; } jiance(); for(i=0;i&4;i++) dotx[i]=(j)? dx[i] : dotx[i]; an=(j||bn); } if(c==6512) /*暂停的处理*/ { while(1) { c=bioskey(0); if(c==6512) } goto begin3; } if(c==8051||c==20480) spd=1; /*加速(spd==1表示加速状态)*/ if(c==4471||c==18432) /*旋转的处理*/ { for(i=0;i&4;i++) { dx[i]=dotx[i];dy[i]=doty[i]; } /*dx[]与dy[]是临时变量,这样一旦判断为不能旋转,就可方便的回复旋转前的坐标*/ cir(); /*旋转*/ jiance(); /*判断旋转是否能进行*/ for(i=0;i&4;i++) { dotx[i]=(j)? dx[i] : dotx[i]; doty[i]=(j)?dy[i] : doty[i]; } /*根据jiance()得到的j值,判断是对dotx[]与doty[]赋旋转后的还是旋转前的值*/ if(j==1) /*如果旋转可已经行,就对原方块的状态进行改变*/ { an=(j||bn);zt2=zt2+1; if(zt2&maxzt[zt1]) zt2=1;
/*结束旋转的处理*/ } for(i=0;i&4;i++) { dx[i]=dotx[i]+1;dy[i]=doty[i]; } /*如果不能旋转,再判断坐标右移一个后能否旋转*/ cir(); jiance(); for(i=0;i&4;i++) { dotx[i]=(j)? dx[i] : dotx[i]; doty[i]=(j)?dy[i] : doty[i]; } if(j==1) { an=(j||bn);zt2=zt2+1; if(zt2&maxzt[zt1]) zt2=1;
} if(dotx[2]==1) for(i=0;i&4;i++) { dx[i]=dotx[i]-1;dy[i]=doty[i]; } /*判断坐标左移一个后能否旋转*/ cir(); jiance(); for(i=0;i&4;i++) { dotx[i]=(j)? dx[i] : dotx[i]; doty[i]=(j)?dy[i] : doty[i]; } if(j==1) { an=(j||bn);zt2=zt2+1; if(zt2&maxzt[zt1]) zt2=1;
} overif: ; } } begin3: for(i=0;i&4;i++) /*方块下移的处理*/ { dx[i]=dotx[i];dy[i]=doty[i]+1; } jiance(); bn=j; for(i=0;i&4;i++) doty[i]=(j)? dy[i] : doty[i]; for(i=0;i&4;i++) { gotoxy(dotx[i]+1,doty[i]+4);printf(&%c&,15); ddx=dotx[i];ddy=doty[i]; str[ddx][ddy]=15; } if(j==1&&spd==1) { spd=0; } if(j==1||an&0) goto begin2; for(u=17;u&0;u--) /*方块停止下移(方块移动到底了)的处理*/ { for(i=1;i&11;i++) /*判断每一行是否排满*/ if(str[i][u]==15) b[i]=1; if (b[1]+b[2]+b[3]+b[4]+b[5]+b[6]+b[7]+b[8]+b[9]+b[10]&10) { for(o=1;o&11;o++) b[o]=0;
} for(o=1;o&11;o++) b[o]=0; a[t]=u;t++; } score+=(t)*(t-1)/2; for(i=1;i&11;i++) if(str[i][1]==15) b[i]=1; if (b[1]+b[2]+b[3]+b[4]+b[5]+b[6]+b[7]+b[8]+b[9]+b[10]&0 &&t==1) for(o=1;o&11;o++) b[o]=0; if(t==1) switch(t) /*消除方块的处理,t=要消除的函数+1*/ { case 5: for(u=a[4];u&1;u--) { for(i=1;i&11;i++) str[i][u]=str[i][u-1]; } /*将要消除的行中,最上面一行,上面的方格整体下移,下面的case 4,3,2类似*/ case 4: for(u=a[3];u&1;u--) { for(i=1;i&11;i++) str[i][u]=str[i][u-1]; } case 3: for(u=a[2];u&1;u--) { for(i=1;i&11;i++) str[i][u]=str[i][u-1]; } case 2: for(u=a[1];u&1;u--) { for(i=1;i&11;i++) str[i][u]=str[i][u-1]; } } t=1; for(u=1;u&18;u++) { for(i=1;i&11;i++) { gotoxy(i+1,u+4); printf(&%c&,str[i][u]); } } ran: zt1=rzt1;zt2=rzt2;rzt1=rand()%7+1; /*生成下两个方块*/ if(rzt1==2) rzt2=1; if(rzt1==1||rzt1==4||rzt1==5) rzt2=rand()%2+1; if(rzt1==3||rzt1==6||rzt1==7) rzt2=rand()%4+1; for(i=0;i&4;i++) { dotx[i]=rotx[i];doty[i]=roty[i]; gotoxy(dotx[i]+1,doty[i]+4);printf(&%c&,15); } switch(rzt1*10+rzt2) { case 11: rotx[0]=4;rotx[1]=5;rotx[2]=6;rotx[3]=7; roty[0]=2;roty[1]=2;roty[2]=2;roty[3]=2;
case 12: rotx[0]=5;rotx[1]=5;rotx[2]=5;rotx[3]=5; roty[0]=4;roty[1]=3;roty[2]=2;roty[3]=1;
case 21: rotx[0]=5;rotx[1]=6;rotx[2]=5;rotx[3]=6; roty[0]=1;roty[1]=1;roty[2]=2;roty[3]=2;
case 31: rotx[0]=4;rotx[1]=5;rotx[2]=6;rotx[3]=5; roty[0]=2;roty[1]=2;roty[2]=2;roty[3]=1;
case 32: rotx[0]=5;rotx[1]=5;rotx[2]=5;rotx[3]=6; roty[0]=1;roty[1]=2;roty[2]=3;roty[3]=2;
case 33: rotx[0]=6;rotx[1]=5;rotx[2]=4;rotx[3]=5; roty[0]=1;roty[1]=1;roty[2]=1;roty[3]=2;
case 34: rotx[0]=6;rotx[1]=6;rotx[2]=6;rotx[3]=5; roty[0]=3;roty[1]=2;roty[2]=1;roty[3]=2;
case 41: rotx[0]=6;rotx[1]=5;rotx[2]=5;rotx[3]=4; roty[0]=2;roty[1]=2;roty[2]=1;roty[3]=1;
case 42: rotx[0]=5;rotx[1]=5;rotx[2]=6;rotx[3]=6; roty[0]=3;roty[1]=2;roty[2]=2;roty[3]=1;
case 51: rotx[0]=4;rotx[1]=5;rotx[2]=5;rotx[3]=6; roty[0]=2;roty[1]=2;roty[2]=1;roty[3]=1;
case 52: rotx[0]=5;rotx[1]=5;rotx[2]=6;rotx[3]=6; roty[0]=1;roty[1]=2;roty[2]=2;roty[3]=3;
case 61: rotx[0]=4;rotx[1]=5;rotx[2]=6;rotx[3]=6; roty[0]=2;roty[1]=2;roty[2]=2;roty[3]=1;
case 62: rotx[0]=5;rotx[1]=5;rotx[2]=5;rotx[3]=6; roty[0]=1;roty[1]=2;roty[2]=3;roty[3]=3;
case 63: rotx[0]=6;rotx[1]=5;rotx[2]=4;rotx[3]=4; roty[0]=1;roty[1]=1;roty[2]=1;roty[3]=2;
case 64: rotx[0]=6;rotx[1]=6;rotx[2]=6;rotx[3]=5; roty[0]=3;roty[1]=2;roty[2]=1;roty[3]=1;
case 71: rotx[0]=6;rotx[1]=5;rotx[2]=4;rotx[3]=4; roty[0]=2;roty[1]=2;roty[2]=2;roty[3]=1;
case 72: rotx[0]=5;rotx[1]=5;rotx[2]=5;rotx[3]=6; roty[0]=3;roty[1]=2;roty[2]=1;roty[3]=1;
case 73: rotx[0]=4;rotx[1]=5;rotx[2]=6;rotx[3]=6; roty[0]=1;roty[1]=1;roty[2]=1;roty[3]=2;
case 74: rotx[0]=6;rotx[1]=6;rotx[2]=6;rotx[3]=5; roty[0]=1;roty[1]=2;roty[2]=3;roty[3]=3;
} for(i=6;i&12;i++) /*刷新一下用来显示下一个方块的那个区域*/ { gotoxy(16,i);printf(&|&);gotoxy(23,i);printf(&|&); } for(i=6;i&12;i++) for(u=17;u&23;u++) { gotoxy(u,i);printf(&%c&,32); } for(i=0;i&4;i++) { gotoxy(rotx[i]+14,roty[i]+6);printf(&%c&,15); } c=bioskey(1);an=0; if(c!=0) c=bioskey(0); if(spd==1) { spd=0; } goto begin2; over: system(&cls&); gotoxy(36,11);printf(&GAME OVER&); bioskey(0); system(&cls&); printf(&Your score is %d\n\n&,score); printf(&Press 'Q' to exit\nIf you want to play again,please press other keys.&); score=0; c=bioskey(0); if(c!=4209) }
采纳数:245
获赞数:2018
别心急,知道么
采纳数:35
获赞数:109
直接复制到迅雷下载。别忘了给分^_^试一试这个
采纳数:458
获赞数:540
自己倒是写过一个.400多行.不过注释都是写的英文,而且是很早以前写的.不好看,比前面那位兄台的好处在于是图形界面的,(* ̄▽ ̄*)......./***************************************
chichujnversion 1.1start at finish at modify at ***************************************//*
Head Files
*/#include &stdio.h&#include &bios.h&#include &stdlib.h&#include &graphics.h&/*Struct of block*//**************************************Shape of block:The block is put in 4x4 areaFirst row,
bit 31-28;Second row, bit 27-24...Postion of block:bit 15-8, bottombit 7-4,
widebit 3-0,
left**************************************/long all[19];/*************************************** □□□□ □□□□ □□□□ □□□□ □□□□ □□□□ □□□□ □□□□ □□□□□□□□ □□□□ □■□□ □□□□ ■□□□ □□□□ ■■□□ □□□□ □■□□■■□□ ■■□□ ■■□□ □■■□ ■■□□ ■□□□ ■□□□ ■■■□ □■□□■■□□ □■■□ ■□□□ ■■□□ □■□□ ■■■□ ■□□□ □□■□ ■■□□□□□□ □□□□ □□□□ □□□□ □□□□ □□□□ □□□□ □□□□ □□□□ ■□□□□□□□ ■□□□ □□□□ ■■□□ □□□□ ■□□□ □□□□ □■□□ □□□□ ■□□□□□■□ ■□□□ ■■■□ □■□□ □■□□ ■■□□ ■■■□ ■■□□ □□□□ ■□□□■■■□ ■■□□ ■□□□ □■□□ ■■■□ ■□□□ □■□□ □■□□ ■■■■ ■□□□***************************************/int screen[25];/*Record the fixed blocks*//********************************screen[n]bit 9-0********************************//*
Function Welcome
*/void Welcome(void){
gotoxy(37,10);
printf(&TETRIS&);
gotoxy(1,19);
printf(&Version
:1.1\nProgramBy:chichujn\n\nKEY: q-Q w-R a-L d-R s-Speedup.\n\n&);
printf(&Press any key to start...&);
getch();}/*
Function Data_Init
*/void Data_Init(void){
all[0]=0x00CC0014;
all[1]=0x00C60024;
all[2]=0x04C80014;
all[3]=0x006C0024;
all[4]=0x08C40014;
all[5]=0x008E0024;
all[6]=0x0C880014;
all[7]=0x00E20024;
all[8]=0x044C0014;
all[9]=0x002E0024;
all[10]=0x088C0014;
all[11]=0x00E80024;
all[12]=0x0C440014;
all[13]=0x004E0024;
all[14]=0x08C80014;
all[15]=0x00E40024;
all[16]=0x04C40014;
all[17]=0x000F0034;
all[18]=0x;
for(i=0;i&25;++i)
screen[i]=0;}/*
Function Block_Init
*/long Block_Init(){
randomize();
return(all[random(19)]);}/*
Function Block_Position
*//***********************************Return position param of the blockn=0,bottomn=1,leftn=2,right************************************/int Block_Position(long block,int n){
return( (int)block&&8 );
return( (int)block&0x000F );
return( ((int)block&0x000F) + ( ((int)block&&4)&0x000F ) );}/*
*//**************************************Display the blocks.Postion:16,16;32,16;48,16...16,32;32,32;48,32...Width of the blocks:14 pixelsColor:White**************************************/void Display(long block){
bottom=Block_Position(block,0);
left=Block_Position(block,1);
for(i=0;i&25;++i)
for(j=0;j&10;++j)
if(( (screen[i]&&(9-j))&0x0001 )==0)
setfillstyle(SOLID_FILL,BLACK);
setfillstyle(SOLID_FILL,WHITE);
bar( (j+1)*16, (i+1)*16, (j+1)*16+14, (i+1)*16+14 );
setfillstyle(SOLID_FILL,WHITE);
for(i=0;i&16;++i)
if( ( ((block&&(31-i))&0x0001)==1 ) && ((bottom-3+i/4)&=0) )
bar( (left+i%4+1)*16, (bottom+i/4-3+1)*16, (left+i%4+1)*16+14, (bottom+i/4-3+1)*16+14 );}/*
Function delay
*/void delay(int n){
long t1,t2;
t1=t2=biostime(0,0);
while(t2-t1&n)
t2=biostime(0,0);}/*
Function Block_Rotate
*/long Block_Rotate(long block){
switch( (int)(block&&16) )
case 0x00C6:tmp=0x04C80000+(tmp&0x0000FFFF);
case 0x04C8:tmp=0x00C60000+(tmp&0x0000FFFF);
case 0x006C:tmp=0x08C40000+(tmp&0x0000FFFF);
case 0x08C4:tmp=0x006C0000+(tmp&0x0000FFFF);
case 0x008E:tmp=0x0C880000+(tmp&0x0000FFFF);
case 0x0C88:tmp=0x00E20000+(tmp&0x0000FFFF);
case 0x00E2:tmp=0x044C0000+(tmp&0x0000FFFF);
case 0x044C:tmp=0x008E0000+(tmp&0x0000FFFF);
case 0x002E:tmp=0x088C0000+(tmp&0x0000FFFF);
case 0x088C:tmp=0x00E80000+(tmp&0x0000FFFF);
case 0x00E8:tmp=0x0C440000+(tmp&0x0000FFFF);
case 0x0C44:tmp=0x002E0000+(tmp&0x0000FFFF);
case 0x000F:tmp=0x+(tmp&0x0000FFFF);
case 0x8888:tmp=0x000F0000+(tmp&0x0000FFFF);
case 0x004E:tmp=0x08C80000+(tmp&0x0000FFFF);
case 0x08C8:tmp=0x00E40000+(tmp&0x0000FFFF);
case 0x00E4:tmp=0x04C40000+(tmp&0x0000FFFF);
case 0x04C4:tmp=0x004E0000+(tmp&0x0000FFFF);
default:return(block);
n=(int)(block&&4)&0x000F;
tmp+=0x0030;
tmp+=0x0010;
tmp-=0x0010;
tmp-=0x0030;
if(Block_Check(tmp))
return(block);
return(tmp);}/*
Function Block_Check
*//***********************************Check the status of the blockreturn 0:Not out of edge and no crashreturn 1:Out of edgereturn 2:Crash with other blocks***********************************/int Block_Check(long block){
bottom=Block_Position(block,0);
left=Block_Position(block,1);
right=Block_Position(block,2);
if(left==0x000F||right&9||bottom&24)
return(1);
for(i=0;i&16;++i)
if( ((block&&(31-i))&1) && ( (screen[bottom-3+i/4]&&(9-left-i%4) ) &1 ) )
return(2);
return(0);}/*
Function Block_Move
*//***********************************Move the blockn=0:downn=1:leftn=2:right***********************************/long Block_Move(long block,int n){
tmp+=0x0100;
tmp-=0x0001;
tmp+=0x0001;
if(Block_Check(tmp))
return(block);
return(tmp);}/*
Function Screen_Refresh
*//***********************************If the block touchs the bottom or crashes with other blocks.Fresh the screen.***********************************/int Screen_Refresh(long block){
bottom=Block_Position(block,0);
left=Block_Position(block,1);
for(i=0;i&16;++i)
if( ((block&&(31-i))&0x0001)==1 && ((((int)block&&8)&0x00FF)-i/4)&0 )
return(-1);
tmp=left&6?( ( (block&&28) &0x000F) && (left-6) ):( ( (block&&28) &0x000F) && (6-left) );
screen[bottom-3]=screen[bottom-3]|
tmp=left&6?( ( (block&&24) &0x000F) && (left-6) ):( ( (block&&24) &0x000F) && (6-left) );
screen[bottom-2]=screen[bottom-2]|
tmp=left&6?( ( (block&&20) &0x000F) && (left-6) ):( ( (block&&20) &0x000F) && (6-left) );
screen[bottom-1]=screen[bottom-1]|
tmp=left&6?( ( (block&&16) &0x000F) && (left-6) ):( ( (block&&16) &0x000F) && (6-left) );
screen[bottom]=screen[bottom]|
for(i=0;i&25;++i)
if(screen[i]==0x03FF)
for(j=i;j&0;--j)
screen[j]=screen[j-1];
return(score);}/*
Function Block_Next
*//**********************************Display the next block**********************************/void Block_Next(long next){
setfillstyle(SOLID_FILL,BLACK);
bar(306,98,328,120);
setfillstyle(SOLID_FILL,WHITE);
bottom=Block_Position(next,0);
for(i=0;i&16;++i)
if((next&&(31-i))&1)
bar( (i%4+1)*6+300, (bottom+i/4-3+1)*6+110, (i%4+1)*6+304, (bottom+i/4-3+1)*6+114 );}/*
Function Graph_Text
*//*********************************In graph mode,put a number on screenposition:left,bottomnumber:n*********************************/void Graph_Text(int left,int bottom,int n,int color){
itoa(n,ch,10);
setcolor(color);
outtextxy(left,bottom,ch);}/*
Function Game
*/int Game(){
long block_
int speed_
int Game_S
int Game_S
Game_Score=0;
Game_Speed=speed_tmp=1;
block=Block_Init();
Display(block);
setcolor(WHITE);
settextstyle(4,0,3);
outtextxy(250,50,&Score:&);
outtextxy(250,80,&SPeed:&);
outtextxy(250,110,&Next :&);
rectangle(14,14,176,416);
Graph_Text(300,50,Game_Score,WHITE);
Graph_Text(300,80,Game_Speed,WHITE);
next=Block_Init();
Block_Next(next);
if(bioskey(1)!=0)
key=getch();
if(key=='q'||key=='Q')
if(key=='s'||key=='S')
speed_tmp=10;
speed_tmp=Game_S
if(t==30000)
if(t%(11-speed_tmp)==0)
block_tmp=
block=Block_Move(block,0);
if(block_tmp==block)
tmp=Game_S
Graph_Text(300,50,Game_Score,BLACK);
Game_Score+=Screen_Refresh(block);
if(Game_Score&tmp)
return(tmp);
Graph_Text(300,50,Game_Score,WHITE);
if(Game_Score&tmp&&Game_Score%20==0&&Game_Speed&10&&Game_Score&0)
Graph_Text(300,80,Game_Speed,BLACK);
Game_Speed++;
Graph_Text(300,80,Game_Speed,WHITE);
next=Block_Init();
Block_Next(next);
speed_tmp=Game_S
Display(block);
if(key=='A'||key=='a'||key=='D'||key=='d'||key=='W'||key=='w')
if(key=='A'||key=='a')
block=Block_Move(block,1);
if(key=='D'||key=='d')
block=Block_Move(block,2);
if(key=='W'||key=='w')
block=Block_Rotate(block);
key='m';
Display(block);
return(Game_Score);}/*
*/int main(){
int gd=DETECT,
Welcome();
Data_Init();
initgraph(&gd,&gm,&&);
registerbgidriver(EGAVGA_driver);
score=Game();
closegraph();
gotoxy(35,12);
printf(&Game Over&);
gotoxy(1,23);
printf(&Your score:%d\nPress any key to quit...&,score);
其他1条回答
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 方块上面有月亮等俄罗斯方块 的文章

 

随机推荐