鱼C论坛

 找回密码
 立即注册
查看: 1807|回复: 1

[技术交流] 发一个小游戏。

[复制链接]
发表于 2015-1-6 16:39:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 kklloo 于 2015-1-6 16:39 编辑

这个是小组里一个学弟写的2048
相信大家都玩过2048八 快来玩玩八
温馨提示:用数字来代替上下左右键 5213分别代表上下左右

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<time.h>
  4. int num[5][5];          //定义函数和变量
  5. int score;
  6. void gett(int k);
  7. void up();
  8. void down();
  9. void left();
  10. void right();
  11. void outt();   
  12. void nextt();
  13. void endd();
  14. int main(){             //赋初值
  15.     num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0;
  16.     num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0;
  17.     num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0;
  18.     num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0;
  19.     int i,j;
  20.     i=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  21.     j=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  22.     while (num[i][j]!=0){
  23.         i=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  24.         j=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  25.     }
  26.     num[i][j]=2;
  27.     i=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  28.     j=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  29.     while (num[i][j]!=0){
  30.         i=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  31.         j=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  32.     }
  33.     num[i][j]=2;
  34.     score=0;
  35.     outt();
  36.     endd();
  37.     return 0;
  38. }
  39. void endd(){
  40.     printf("    2048 mini game    \n");
  41.     printf("                      \n");
  42.     printf("         GAME         \n");
  43.     printf("                      \n");
  44.     printf("         OVER         \n");
  45.     printf("                      \n");
  46.     printf("      YOUR FINAL      \n");
  47.     printf("                      \n");
  48.     printf("    SCORE=%d      \n",score);
  49.     printf("                      \n");
  50.     printf("                      \n");
  51.     printf("    2048 mini game    \n");
  52. }
  53. void outt(){          //输出部分
  54.     printf("    2048 mini game    \n");
  55.     printf(" score=%d \n",score);
  56.     printf("┌-—┬-—┬-—┬—-┐\n");
  57.     printf("│%3d│%3d│%3d│%3d│\n",num[1][1],num[1][2],num[1][3],num[1][4]);
  58.     printf("├-—┼-—┼—-┼—-┤\n");
  59.     printf("│%3d│%3d│%3d│%3d│\n",num[2][1],num[2][2],num[2][3],num[2][4]);
  60.     printf("├-—┼—-┼—-┼—-┤\n");
  61.     printf("│%3d│%3d│%3d│%3d│\n",num[3][1],num[3][2],num[3][3],num[3][4]);
  62.     printf("├-—┼-—┼-—┼—-┤\n");
  63.     printf("│%3d│%3d│%3d│%3d│\n",num[4][1],num[4][2],num[4][3],num[4][4]);
  64.     printf("└-—┴-—┴—-┴—-┘\n");   
  65.     printf("       By SHIRO-marisa\n");
  66.     int init;
  67.     scanf("%d",&init);
  68.     gett(init);
  69. }
  70. void gett(int k){    //跳转操作
  71.     if (k==5){up();}
  72.     if (k==2){down();}
  73.     if (k==1){left();}
  74.     if (k==3){right();}

  75.     }
  76. void up(){         //上
  77.     int i,j,k;
  78.     int zz[5][5];
  79.     zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0;
  80.     zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0;
  81.     zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0;
  82.     zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0;
  83.     zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4];
  84.     zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4];
  85.     zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4];
  86.     zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4];
  87.     num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0;
  88.     num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0;
  89.     num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0;
  90.     num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0;
  91.     for (i=1;i<=4;i++){
  92.         k=1;
  93.         j=1;
  94.         while (j<5){
  95.             if (zz[j][i]!=0){
  96.                 if (j==4) {num[k][i]=zz[j][i];j++; }
  97.                     else {
  98.                       if (zz[j][i]==zz[j+1][i]){
  99.                             num[k][i]=zz[j][i]*2;
  100.                          score=zz[j][i]*2+score;
  101.                           k++;
  102.                         j=j+2;
  103.                       }
  104.                       else {
  105.                           num[k][i]=zz[j][i];
  106.                         j=j+1;
  107.                         k++;
  108.                         }
  109.                  }   
  110.                 }
  111.                 else j++;
  112.         }
  113.     }
  114.         zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0;
  115.     zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0;
  116.     zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0;
  117.     zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0;
  118.     zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4];
  119.     zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4];
  120.     zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4];
  121.     zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4];
  122.     num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0;
  123.     num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0;
  124.     num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0;
  125.     num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0;
  126.     for (i=1;i<=4;i++){
  127.         k=1;
  128.         j=1;
  129.         while (j<5){
  130.             if (zz[j][i]!=0){
  131.                 if (j==4) {num[k][i]=zz[j][i];j++; }
  132.                     else {
  133.                       if (zz[j][i]==zz[j+1][i]){
  134.                             num[k][i]=zz[j][i]*2;
  135.                          score=zz[j][i]*2+score;
  136.                           k++;
  137.                         j=j+2;
  138.                       }
  139.                       else {
  140.                           num[k][i]=zz[j][i];
  141.                         j=j+1;
  142.                         k++;
  143.                         }
  144.                  }   
  145.                 }
  146.                 else j++;
  147.         }
  148.     }
  149.     system("CLS");
  150.     nextt();
  151. }
  152. void down(){         //下
  153.     int i,j,k;
  154.     int zz[5][5];
  155.     zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0;
  156.     zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0;
  157.     zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0;
  158.     zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0;
  159.     zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4];
  160.     zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4];
  161.     zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4];
  162.     zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4];
  163.     num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0;
  164.     num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0;
  165.     num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0;
  166.     num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0;
  167.     for (i=1;i<=4;i++){
  168.         k=4;
  169.         j=4;
  170.         while (j>0){
  171.             if (zz[j][i]!=0){if (j==1) {num[k][i]=zz[j][i];j--; }
  172.             else {
  173.                       if (zz[j][i]==zz[j-1][i]){
  174.                             num[k][i]=zz[j][i]*2;
  175.                          score=zz[j][i]*2+score;
  176.                           k--;
  177.                         j=j-2;
  178.                       }
  179.                       else {
  180.                           num[k][i]=zz[j][i];
  181.                         j=j-1;
  182.                         k--;
  183.                         }
  184.                  }   
  185.                 }
  186.                 else j--;
  187.         }
  188.     }
  189.         zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0;
  190.     zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0;
  191.     zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0;
  192.     zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0;
  193.     zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4];
  194.     zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4];
  195.     zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4];
  196.     zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4];
  197.     num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0;
  198.     num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0;
  199.     num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0;
  200.     num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0;
  201.     for (i=1;i<=4;i++){
  202.         k=4;
  203.         j=4;
  204.         while (j>0){
  205.             if (zz[j][i]!=0){if (j==1) {num[k][i]=zz[j][i];j--; }
  206.             else {
  207.                       if (zz[j][i]==zz[j-1][i]){
  208.                             num[k][i]=zz[j][i]*2;
  209.                          score=zz[j][i]*2+score;
  210.                           k--;
  211.                         j=j-2;
  212.                       }
  213.                       else {
  214.                           num[k][i]=zz[j][i];
  215.                         j=j-1;
  216.                         k--;
  217.                         }
  218.                  }   
  219.                 }
  220.                 else j--;
  221.         }
  222.     }
  223.     system("CLS");
  224.     nextt();
  225. }
  226. void left(){       //左
  227.     int i,j,k;
  228.     int zz[5][5];
  229.     zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0;
  230.     zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0;
  231.     zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0;
  232.     zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0;
  233.     zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4];
  234.     zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4];
  235.     zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4];
  236.     zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4];
  237.     num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0;
  238.     num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0;
  239.     num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0;
  240.     num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0;
  241.     for (i=1;i<=4;i++){
  242.         k=1;
  243.         j=1;
  244.         while (j<5){
  245.             if (zz[i][j]!=0){if (j==4) {num[i][k]=zz[i][j];j++;
  246.             }
  247.             else {
  248.                       if (zz[i][j]==zz[i][j+1]){
  249.                             num[i][k]=zz[i][j]*2;
  250.                          score=zz[i][j]*2+score;
  251.                           k++;
  252.                         j=j+2;
  253.                       }
  254.                       else {
  255.                           num[i][k]=zz[i][j];
  256.                         j=j+1;
  257.                         k++;
  258.                         }
  259.                  }   
  260.                 }
  261.                 else j++;
  262.         }
  263.     }
  264.     zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0;
  265.     zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0;
  266.     zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0;
  267.     zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0;
  268.     zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4];
  269.     zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4];
  270.     zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4];
  271.     zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4];
  272.     num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0;
  273.     num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0;
  274.     num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0;
  275.     num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0;
  276.     for (i=1;i<=4;i++){
  277.         k=1;
  278.         j=1;
  279.         while (j<5){
  280.             if (zz[i][j]!=0){if (j==4) {num[i][k]=zz[i][j];j++;
  281.             }
  282.             else {
  283.                       if (zz[i][j]==zz[i][j+1]){
  284.                             num[i][k]=zz[i][j]*2;
  285.                          score=zz[i][j]*2+score;
  286.                           k++;
  287.                         j=j+2;
  288.                       }
  289.                       else {
  290.                           num[i][k]=zz[i][j];
  291.                         j=j+1;
  292.                         k++;
  293.                         }
  294.                  }   
  295.                 }
  296.                 else j++;
  297.         }
  298.     }
  299.     system("CLS");
  300.     nextt();
  301. }

  302. void right(){        //右
  303.     int i,j,k;
  304.     int zz[5][5];
  305.     zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0;
  306.     zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0;
  307.     zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0;
  308.     zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0;
  309.     zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4];
  310.     zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4];
  311.     zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4];
  312.     zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4];
  313.     num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0;
  314.     num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0;
  315.     num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0;
  316.     num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0;
  317.     for (i=1;i<=4;i++){
  318.         k=4;
  319.         j=4;
  320.         while (j>0){
  321.             if (zz[i][j]!=0){if (j==1) {num[i][k]=zz[i][j];j--; }
  322.             else {
  323.                       if (zz[i][j]==zz[i][j-1]){
  324.                             num[i][k]=zz[i][j]*2;
  325.                          score=zz[i][j]*2+score;
  326.                           k--;
  327.                         j=j-2;
  328.                       }
  329.                       else {
  330.                           num[i][k]=zz[i][j];
  331.                         j=j-1;
  332.                         k--;
  333.                         }
  334.                  }   
  335.                 }
  336.                 else j--;
  337.         }
  338.     }
  339.     zz[1][1]=0;zz[1][2]=0;zz[1][3]=0;zz[1][4]=0;
  340.     zz[2][1]=0;zz[2][2]=0;zz[2][3]=0;zz[2][4]=0;
  341.     zz[3][1]=0;zz[3][2]=0;zz[3][3]=0;zz[3][4]=0;
  342.     zz[4][1]=0;zz[4][2]=0;zz[4][3]=0;zz[4][4]=0;
  343.     zz[1][1]=num[1][1];zz[1][2]=num[1][2];zz[1][3]=num[1][3];zz[1][4]=num[1][4];
  344.     zz[2][1]=num[2][1];zz[2][2]=num[2][2];zz[2][3]=num[2][3];zz[2][4]=num[2][4];
  345.     zz[3][1]=num[3][1];zz[3][2]=num[3][2];zz[3][3]=num[3][3];zz[3][4]=num[3][4];
  346.     zz[4][1]=num[4][1];zz[4][2]=num[4][2];zz[4][3]=num[4][3];zz[4][4]=num[4][4];
  347.     num[1][1]=0;num[1][2]=0;num[1][3]=0;num[1][4]=0;
  348.     num[2][1]=0;num[2][2]=0;num[2][3]=0;num[2][4]=0;
  349.     num[3][1]=0;num[3][2]=0;num[3][3]=0;num[3][4]=0;
  350.     num[4][1]=0;num[4][2]=0;num[4][3]=0;num[4][4]=0;
  351.     for (i=1;i<=4;i++){
  352.         k=4;
  353.         j=4;
  354.         while (j>0){
  355.             if (zz[i][j]!=0){if (j==1) {num[i][k]=zz[i][j];j--; }
  356.             else {
  357.                       if (zz[i][j]==zz[i][j-1]){
  358.                             num[i][k]=zz[i][j]*2;
  359.                          score=zz[i][j]*2+score;
  360.                           k--;
  361.                         j=j-2;
  362.                       }
  363.                       else {
  364.                           num[i][k]=zz[i][j];
  365.                         j=j-1;
  366.                         k--;
  367.                         }
  368.                  }   
  369.                 }
  370.                 else j--;
  371.         }
  372.     }
  373.     system("CLS");
  374.     nextt();
  375. }
  376. void nextt(){       //随机生成新方块 开始下一次
  377.     srand((int)time(0));
  378.     int i,j,k;
  379.     k=0;
  380.     for (i=1;i<5;i++)
  381.         for (j=1;j<5;j++)
  382.             if (num[i][j]!=0) k++;
  383.     if (k==16) {return;}        
  384.     i=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  385.     j=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  386.     while (num[i][j]!=0){
  387.         i=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  388.         j=1+(int)(4.0*rand()/(RAND_MAX+1.0));
  389.     }
  390.     num[i][j]=2;
  391.     outt();
  392. }
复制代码
QQ截图20150106164008.png




评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
拈花小仙 + 5 + 5 + 3 感谢楼主无私奉献!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-1-6 16:57:41 | 显示全部楼层
必须顶,不解释~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-18 16:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表