简单实现C语言2048游戏分享!

本文实例为大家分享了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:%dn",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;    }    

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/482345.html

(0)
上一篇 2020年11月9日
下一篇 2020年11月9日

精彩推荐