C语言实现2048
#include<stdio.h> #include<stdlib.h> #include<time.h> int num[5][5]; //定义函数和变量 int score; void gett(int k); void up(); void down(); void left(); void right(); void outt(); void nextt(); void endd(); int main(){ //赋初值 num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0; num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0; num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0; num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0; int i,j; i=1+(int)(4.0*rand()/(RAND_MAX+1.0)); j=1+(int)(4.0*rand()/(RAND_MAX+1.0)); while (num[i][j]!=0){ i=1+(int)(4.0*rand()/(RAND_MAX+1.0)); j=1+(int)(4.0*rand()/(RAND_MAX+1.0)); } num[i][j]=2; i=1+(int)(4.0*rand()/(RAND_MAX+1.0)); j=1+(int)(4.0*rand()/(RAND_MAX+1.0)); while (num[i][j]!=0){ i=1+(int)(4.0*rand()/(RAND_MAX+1.0)); j=1+(int)(4.0*rand()/(RAND_MAX+1.0)); } num[i][j]=2; score=0; outt(); endd(); return 0; } void endd(){ printf(" 2048 mini game \n"); printf(" \n"); printf(" GAME \n"); printf(" \n"); printf(" OVER \n"); printf(" \n"); printf(" YOUR FINAL \n"); printf(" \n"); printf(" SCORE=%d \n",score); printf(" \n"); printf(" \n"); printf(" 2048 mini game \n"); } void outt(){ //输出部分 printf(" 2048 mini game \n"); printf(" score=%d \n",score); printf("┌-—┬-—┬-—┬—-┐\n"); printf("│%3d│%3d│%3d│%3d│\n",num[1][1],num[1][2],num[1][3],num[1][4]); printf("├-—┼-—┼—-┼—-┤\n"); printf("│%3d│%3d│%3d│%3d│\n",num[2][1],num[2][2],num[2][3],num[2][4]); printf("├-—┼—-┼—-┼—-┤\n"); printf("│%3d│%3d│%3d│%3d│\n",num[3][1],num[3][2],num[3][3],num[3][4]); printf("├-—┼-—┼-—┼—-┤\n"); printf("│%3d│%3d│%3d│%3d│\n",num[4][1],num[4][2],num[4][3],num[4][4]); printf("└-—┴-—┴—-┴—-┘\n"); printf(" By SHIRO-marisa\n"); int init; scanf("%d",&init); gett(init); } void gett(int k){ //跳转操作 if (k==5){up();} if (k==2){down();} if (k==1){left();} if (k==3){right();}} void up(){ //上 int i,j,k; int zz[5][5]; zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0; zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0; zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0; zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0; zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4]; zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4]; zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4]; zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4]; num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0; num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0; num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0; num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0; for (i=1;i<=4;i++){ k=1; j=1; while (j<5){ if (zz[j][i]!=0){ if (j==4) {num[k][i]=zz[j][i];j++; } else { if (zz[j][i]==zz[j+1][i]){ num[k][i]=zz[j][i]*2; score=zz[j][i]*2+score; k++; j=j+2; } else { num[k][i]=zz[j][i]; j=j+1; k++; } } } else j++; } } zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0; zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0; zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0; zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0; zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4]; zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4]; zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4]; zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4]; num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0; num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0; num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0; num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0; for (i=1;i<=4;i++){ k=1; j=1; while (j<5){ if (zz[j][i]!=0){ if (j==4) {num[k][i]=zz[j][i];j++; } else { if (zz[j][i]==zz[j+1][i]){ num[k][i]=zz[j][i]*2; score=zz[j][i]*2+score; k++; j=j+2; } else { num[k][i]=zz[j][i]; j=j+1; k++; } } } else j++; } } system("CLS"); nextt(); } void down(){ //下 int i,j,k; int zz[5][5]; zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0; zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0; zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0; zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0; zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4]; zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4]; zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4]; zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4]; num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0; num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0; num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0; num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0; for (i=1;i<=4;i++){ k=4; j=4; while (j>0){ if (zz[j][i]!=0){if (j==1) {num[k][i]=zz[j][i];j--; } else { if (zz[j][i]==zz[j-1][i]){ num[k][i]=zz[j][i]*2; score=zz[j][i]*2+score; k--; j=j-2; } else { num[k][i]=zz[j][i]; j=j-1; k--; } } } else j--; } } zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0; zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0; zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0; zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0; zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4]; zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4]; zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4]; zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4]; num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0; num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0; num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0; num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0; for (i=1;i<=4;i++){ k=4; j=4; while (j>0){ if (zz[j][i]!=0){if (j==1) {num[k][i]=zz[j][i];j--; } else { if (zz[j][i]==zz[j-1][i]){ num[k][i]=zz[j][i]*2; score=zz[j][i]*2+score; k--; j=j-2; } else { num[k][i]=zz[j][i]; j=j-1; k--; } } } else j--; } } system("CLS"); nextt(); } void left(){ //左 int i,j,k; int zz[5][5]; zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0; zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0; zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0; zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0; zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4]; zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4]; zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4]; zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4]; num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0; num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0; num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0; num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0; for (i=1;i<=4;i++){ k=1; j=1; while (j<5){ if (zz[i][j]!=0){if (j==4) {num[i][k]=zz[i][j];j++; } else { if (zz[i][j]==zz[i][j+1]){ num[i][k]=zz[i][j]*2; score=zz[i][j]*2+score; k++; j=j+2; } else { num[i][k]=zz[i][j]; j=j+1; k++; } } } else j++; } } zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0; zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0; zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0; zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0; zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4]; zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4]; zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4]; zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4]; num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0; num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0; num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0; num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0; for (i=1;i<=4;i++){ k=1; j=1; while (j<5){ if (zz[i][j]!=0){if (j==4) {num[i][k]=zz[i][j];j++; } else { if (zz[i][j]==zz[i][j+1]){ num[i][k]=zz[i][j]*2; score=zz[i][j]*2+score; k++; j=j+2; } else { num[i][k]=zz[i][j]; j=j+1; k++; } } } else j++; } } system("CLS"); nextt(); } void right(){ //右 int i,j,k; int zz[5][5]; zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0; zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0; zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0; zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0; zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4]; zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4]; zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4]; zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4]; num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0; num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0; num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0; num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0; for (i=1;i<=4;i++){ k=4; j=4; while (j>0){ if (zz[i][j]!=0){if (j==1) {num[i][k]=zz[i][j];j--; } else { if (zz[i][j]==zz[i][j-1]){ num[i][k]=zz[i][j]*2; score=zz[i][j]*2+score; k--; j=j-2; } else { num[i][k]=zz[i][j]; j=j-1; k--; } } } else j--; } } zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0; zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0; zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0; zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0; zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4]; zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4]; zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4]; zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4]; num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0; num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0; num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0; num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0; for (i=1;i<=4;i++){ k=4; j=4; while (j>0){ if (zz[i][j]!=0){if (j==1) {num[i][k]=zz[i][j];j--; } else { if (zz[i][j]==zz[i][j-1]){ num[i][k]=zz[i][j]*2; score=zz[i][j]*2+score; k--; j=j-2; } else { num[i][k]=zz[i][j]; j=j-1; k--; } } } else j--; } } system("CLS"); nextt(); } void nextt(){ //随机生成新方块 开始下一次 srand((int)time(0)); int i,j,k; k=0; for (i=1;i<5;i++) for (j=1;j<5;j++) if (num[i][j]!=0) k++; if (k==16) {return;} i=1+(int)(4.0*rand()/(RAND_MAX+1.0)); j=1+(int)(4.0*rand()/(RAND_MAX+1.0)); while (num[i][j]!=0){ i=1+(int)(4.0*rand()/(RAND_MAX+1.0)); j=1+(int)(4.0*rand()/(RAND_MAX+1.0)); } num[i][j]=2; outt(); }
希望大家能去看看这个代码 自己去分析一下 也可以自己模仿这这个代码自己去写一个2048 再来一点自己的创新什么的在里面。 希望大家能愉快的学习。
温馨提示:用数字来代替上下左右键 5213分别代表上下左右