2048 C语言版

来源:互联网 发布:python无限循环语句 编辑:程序博客网 时间:2024/06/05 03:14


#include<stdio.h>#include<conio.h>#include<stdlib.h> #include<time.h> int x[4][4]={0},i,j,k,score=0;int empty(){int n=0;for(i=0;i<16;i++){if(x[i/4][i%4]==0)n++;}return n;}int check(){int a,b,f=0;for(a=0;a<4;a++){for(b=0;b<4;b++){if(x[a][b]>=2048)return 1;if(b<3){if(x[a][b]==x[a][b+1]||x[b][a]==x[b+1][a])f=1;}}}if(f==1)return 0;else return -1;}void add(int p){int rn=0,randp,randn;srand((unsigned)time(NULL));randp=rand()%empty();if(p==1){randn=2;}else{if(rand()%2==1)randn=4;else randn=2;}for(i=0;i<16;i++){if(x[i/4][i%4]==0){if(rn==randp){x[i/4][i%4]=randn;break;}rn++;}}}void out(){system("cls");for(i=0;i<10;i++){if(i==0)printf("┏━━┳━━┳━━┳━━┓\n┃    ┃    ┃    ┃    ┃\n┃");else if(i==8)printf("┗━━┻━━┻━━┻━━┛\n");else if(i==9)printf(" SCORE:%d\n",score);else if(i%2==0)printf("┣━━╋━━╋━━╋━━┫\n┃    ┃    ┃    ┃    ┃\n┃");else{for(j=0;j<4;j++){if(x[i/2][j]!=0)printf("%4d",x[i/2][j]); else printf("    ");printf("┃");}printf("\n");}}}void move(int d){int f0=0,fb=0,fm=0,dx,dy,nx=0,ny=0;//if(check()!=-1)for(j=0;j<4;j++){for(k=0;k<3;k++){if(fb==1){fb=0;break;}for(i=0;i<3;i++){switch(d){case 1:dx=i;dy=j;nx=1;ny=0;break;case 2:dx=j;dy=3-i;nx=0;ny=-1;break;case 3:dx=3-i;dy=j;nx=-1;ny=0;break;case 4:dx=j;dy=i;nx=0;ny=1;break;}if(x[dx][dy]==0){if(x[dx+nx][dy+ny]!=0)f0=1;x[dx][dy]=x[dx+nx][dy+ny];x[dx+nx][dy+ny]=0;}elseif(x[dx][dy]!=0&&x[dx][dy]==x[dx+nx][dy+ny]){x[dx][dy]=x[dx][dy]+x[dx+nx][dy+ny];x[dx+nx][dy+ny]=0;score+=x[dx][dy];fb=1;fm=1;}}}}if(empty()>0&&(f0==1||fm==1))add(0);out();if(check()==1)printf("\n YOU WIN!");else if(check()==-1)printf("\n YOU LOSE!");}int main(){unsigned char key;add(1);add(1);out();while((key=getch())!=0x1b){if(key == 0||key==0xE0) { key = getch(); switch(key) { case 72:move(1);break; case 75:move(4);break; case 77:move(2);break; case 80:move(3);break; }}}return 0;//C_2048 By:Blue [Email:zzx094@gmail.com]}



0 0
原创粉丝点击