国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

簡單實現C語言2048游戲

2020-01-26 13:43:03
字體:
來源:轉載
供稿:網友

本文實例為大家分享了C語言2048游戲的具體代碼,供大家參考,具體內容如下

/*2048*/ #include<stdio.h>  #include<conio.h>  #include<stdlib.h>  #include<time.h>       //全局變量 int x[4][4]={0}; int score=0;  int can_move;   int empty()  {    int i,j;   int n=0;   for(i=0;i<4;i++)    {     for(j=0;j<4;j++)     {        if(x[i][j]==0)       n++;      }    }   return n; }   int check() {   int i,j;   int a,b;   if(empty() == 0)   {     a=b=0;     for(i=0;i<4;i++)      {       for(j=0;j<3;j++)       {          if(x[i][j]==x[i][j+1])         a=1;       }      }     for(j=0;j<4;j++)      {       for(i=0;i<3;i++)       {          if(x[i][j]==x[i+1][j])         b=1;       }      }     if(a==0 && b==0)       return 0;     else       return 1;     }   else     return 1;  }   int win() {   int i,j;   int a=0;   if(check())   {     for(i=0;i<4;i++)      {       for(j=0;j<4;j++)       {          if(x[i][j]==2048)         a=1;        }      }   }   return a; }  void add()  {    int i,j;   int n=0;   if(empty() > 0)   {     while(n<16)     {       i=rand()%4;       j=rand()%4;       if(x[i][j] == 0)       {         if(rand()%100 < 80)         {           x[i][j]=2;         }         else         {           x[i][j]=4;          }         break;       }       n++;     }   }    }    void move_up() {   int i,j,k;   can_move=0;   for(j=0;j<4;j++)   {     for(i=0;i<4;i++)     {       if(x[i][j] == 0)       {         for(k=i+1;k<4;k++)         {           if(x[k][j] != 0)           {             x[i][j]=x[k][j];             x[k][j]=0;             can_move=1;             break;           }         }       }     }       for(i=0;i<3;i++)     {       if(x[i][j] == x[i+1][j] && x[i][j] != 0)       {         x[i][j] *= 2;         x[i+1][j]=0;         can_move=1;         score += x[i][j];       }     }      for(i=0;i<4;i++)     {       if(x[i][j] == 0)       {         for(k=i+1;k<4;k++)         {           if(x[k][j] != 0)           {             x[i][j]=x[k][j];             x[k][j]=0;             break;           }         }       }     }   }   if(can_move == 1)   {     add();   } }     void move_down() {   int i,j,k;   can_move=0;   for(j=0;j<4;j++)   {     for(i=3;i>=0;i--)     {       if(x[i][j] == 0)       {         for(k=i-1;k>=0;k--)         {           if(x[k][j] != 0)           {             x[i][j]=x[k][j];             x[k][j]=0;             can_move=1;             break;           }         }       }     }       for(i=3;i>0;i--)     {       if(x[i][j] == x[i-1][j] && x[i][j] != 0)       {         x[i][j] *= 2;         x[i-1][j]=0;         can_move=1;         score += x[i][j];       }     }      for(i=3;i>=0;i--)     {       if(x[i][j] == 0)       {         for(k=i-1;k>=0;k--)         {           if(x[k][j] != 0)           {             x[i][j]=x[k][j];             x[k][j]=0;             break;           }         }       }     }   }   if(can_move == 1)   {     add();   }  }    void move_left() {   int i,j,k;   can_move=0;   for(i=0;i<4;i++)   {     for(j=0;j<4;j++)     {       if(x[i][j] == 0)       {         for(k=j+1;k<4;k++)         {           if(x[i][k] != 0)           {             x[i][j]=x[i][k];             x[i][k]=0;             can_move=1;             break;           }         }       }     }       for(j=0;j<3;j++)     {       if(x[i][j] == x[i][j+1] && x[i][j] != 0)       {         x[i][j] *= 2;         x[i][j+1]=0;         can_move=1;         score += x[i][j];       }     }      for(j=0;j<3;j++)     {       if(x[i][j] == 0)       {         for(k=j+1;k<4;k++)         {           if(x[i][k] != 0)           {             x[i][j]=x[i][k];             x[i][k]=0;             break;           }         }       }     }   }   if(can_move == 1)   {     add();   } }    void move_right() {   int i,j,k;   can_move=0;   for(i=0;i<4;i++)   {     for(j=3;j>=0;j--)     {       if(x[i][j] == 0)       {         for(k=j-1;k>=0;k--)         {           if(x[i][k] != 0)           {             x[i][j]=x[i][k];             x[i][k]=0;             can_move=1;             break;           }         }       }     }       for(j=3;j>0;j--)     {       if(x[i][j] == x[i][j-1] && x[i][j] != 0)       {         x[i][j] *= 2;         x[i][j-1]=0;         can_move=1;         score += x[i][j];       }     }      for(j=3;j>=0;j--)     {       if(x[i][j] == 0)       {         for(k=j-1;k>=0;k--)         {           if(x[i][k] != 0)           {             x[i][j]=x[i][k];             x[i][k]=0;             break;           }         }       }     }   }   if(can_move == 1)   {     add();   } }       void out()  {    int i,j;   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");      }          }   if(win())   {printf("You are win!");}   if(!check())   {printf("Game over!");} }     int main()  {        unsigned char key;    add();   add();   out();       while(1)    {      key = getch();            switch(key)      {        case 'w': move_up();    break;        case 'a': move_left();   break;        case 's': move_down();   break;        case 'd': move_right();  break;      }      out();    }    return 0;  }  

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 万荣县| 阜城县| 汉沽区| 阳高县| 海盐县| 尚义县| 平江县| 土默特右旗| 闸北区| 抚远县| 丰县| 阿鲁科尔沁旗| 沾益县| 尼木县| 乐至县| 信阳市| 邓州市| 马公市| 南丹县| 张家口市| 防城港市| 台山市| 泗阳县| 上思县| 普洱| 青冈县| 岢岚县| 和田县| 晴隆县| 新宁县| 合川市| 兴业县| 河曲县| 自治县| 泰宁县| 西平县| 屯昌县| 加查县| 荆州市| 高邮市| 淮南市|