
一个编程多年的程序员确写不出俄罗斯方块是什么体验
233 同感,用的东西不同。
毕竟写个俄罗斯方块用swing。
做后台的一万年不会用一次。
刚开始自学的时候还自己编贪吃蛇,打飞机,俄罗斯,工作一年就不会了,前几天整理旧电脑发现了封藏多年的贪吃蛇源码,竟然看不懂主程序了。
。
。
。
。
编程时间越长越不会写啊。
请问,谁见过这道题
编程题,类似俄罗斯方块,但是比俄罗斯方块要简单,只有两种形状
这编程这个是VC还是C++
getvalue(0)指取得该行第一列的值括号里可以是int型的,取得的时第i+1列的值或者是string类型,如getvalue(name),指取得列名为name那列的值
编程最简单最好编的是什么
有没有编俄罗斯方块或者是很小能很快出的东西
刚学c的时候编的,所以程序规范性以及代码的执行效率都不高,而且程序超长。
但应该没有太难的语句。
#include #include #include #include #include #include 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]=; \\\/*各个种类的方块分别有几种状态*\\\/ 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],score; \\\/*dotx[]doty[]表示一个方块个点的坐标*\\\/ int ddx,ddy; int rzt1,rzt2,i,u,t=1; int a[5],b[11],o,p,an,bn; 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++) for(u=0;u<19;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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; } 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; } system(cls); \\\/*显示初始阶段*\\\/ printf(\\\ \\\ \\\ ); \\\/*游戏区域下移3*\\\/ for(u=0;u<19;u++) { for(i=0;i<12;i++) printf(%c,str[i][u]); printf(\\\ ); } gotoxy(16,5);printf(--------); gotoxy(16,12);printf(--------); for(i=6;i<12;i++) for(i=6;i<12;i++) 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++) 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++) 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) break; } goto begin3; } if(c==8051||c==20480) spd=1; \\\/*加速(spd==1表示加速状态)*\\\/ if(c==4471||c==18432) \\\/*旋转的处理*\\\/ { for(i=0;i<4;i++) \\\/*dx[]与dy[]是临时变量,这样一旦判断为不能旋转,就可方便的回复旋转前的坐标*\\\/ cir(); \\\/*旋转*\\\/ jiance(); \\\/*判断旋转是否能进行*\\\/ for(i=0;i<4;i++) \\\/*根据jiance()得到的j值,判断是对dotx[]与doty[]赋旋转后的还是旋转前的值*\\\/ if(j==1) \\\/*如果旋转可已经行,就对原方块的状态进行改变*\\\/ { an=(j||bn);zt2=zt2+1; if(zt2>maxzt[zt1]) zt2=1; goto overif; \\\/*结束旋转的处理*\\\/ } for(i=0;i<4;i++) \\\/*如果不能旋转,再判断坐标右移一个后能否旋转*\\\/ cir(); jiance(); for(i=0;i<4;i++) if(j==1) { an=(j||bn);zt2=zt2+1; if(zt2>maxzt[zt1]) zt2=1; goto overif; } if(dotx[2]==1) goto overif; for(i=0;i<4;i++) \\\/*判断坐标左移一个后能否旋转*\\\/ cir(); jiance(); for(i=0;i<4;i++) if(j==1) { an=(j||bn);zt2=zt2+1; if(zt2>maxzt[zt1]) zt2=1; goto overif; } overif: ; } } begin3: for(i=0;i<4;i++) \\\/*方块下移的处理*\\\/ 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) 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; continue; } 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) goto over; for(o=1;o<11;o++) b[o]=0; if(t==1) goto ran; switch(t) \\\/*消除方块的处理,t=要消除的函数+1*\\\/ \\\/*将要消除的行中,最上面一行,上面的方格整体下移,下面的case 4,3,2类似*\\\/ case 4: for(u=a[3];u>1;u--) case 3: for(u=a[2];u>1;u--) case 2: for(u=a[1];u>1;u--) } 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; 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; break; } for(i=6;i<12;i++) \\\/*刷新一下用来显示下一个方块的那个区域*\\\/ for(i=6;i<12;i++) for(u=17;u<23;u++) for(i=0;i<4;i++) c=bioskey(1);an=0; if(c!=0) c=bioskey(0); if(spd==1) goto begin2; over: system(cls); gotoxy(36,11);printf(GAME OVER); bioskey(0); system(cls); printf(Your score is %d\\\ \\\ ,score); printf(Press 'Q' to exit\\\ If you want to play again,please press other keys.); score=0; c=bioskey(0); if(c!=4209) goto begin; }另外,团IDC网上有许多产品团购,便宜有口碑