首页 > 代码库 > C语言实现2048

C语言实现2048

#include<stdio.h>#include<stdlib.h>#include<time.h>int num[5][5];          //定义函数和变量 int score;int 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);}int 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  再来一点自己的创新什么的在里面。 希望大家能愉快的学习。

C语言实现2048