温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用C语言编写一个2048游戏

发布时间:2020-12-31 15:08:30 来源:亿速云 阅读:193 作者:Leah 栏目:开发技术

这篇文章给大家介绍使用C语言编写一个2048游戏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

代码如下

#include<bits/stdc++.h> #include<conio.h> #include <windows.h> void color(short x) {  if(x>=0 && x<=15)   SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);  else   SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7); } using namespace std; int qp[4][4]={0}; long long int gread=0; int pd() {  int i,j;  for(i=0;i<4;i++)  {  for(j=0;j<4;j++)  {  if(qp[i][j]==0)  {  return 0;  }  if(i==0&&j==0)  {  if(qp[i][j]==qp[i+1][j]||qp[i][j]==qp[i][j+1])  {   return 0;  }  }  else if(i==0&&j==3)  {  if(qp[i][j]==qp[i+1][j]||qp[i][j]==qp[i][j-1])  {   return 0;  }  }  else if(i==0)  {  if(qp[i][j]==qp[i+1][j]||qp[i][j]==qp[i][j+1]||qp[i][j]==qp[i][j-1])  {   return 0;  }  }  else if(i==3&&j==0)  {  if(qp[i][j]==qp[i][j+1]||qp[i][j]==qp[i-1][j])  {   return 0;  }  }  else if(j==0)  {  if(qp[i][j]==qp[i+1][j]||qp[i][j]==qp[i-1][j]||qp[i][j]==qp[i][j+1])  {   return 0;  }  }  else if(i==3&&j==3)  {  if(qp[i][j]==qp[i-1][j]||qp[i][j]==qp[i][j-1])  {   return 0;  }  }  else if(i==3)  {  if(qp[i][j]==qp[i-1][j]||qp[i][j]==qp[i][j-1]||qp[i][j]==qp[i][j+1])  {   return 0;  }  }  else if(j==3)  {  if(qp[i][j]==qp[i-1][j]||qp[i][j]==qp[i][j-1]||qp[i][j]==qp[i+1][j])  {   return 0;  }  }  }  }  return 1; } int sjs() {  int num = rand() % 100 + 1;  if(num<=5)  {  return 4;  }  else  {  return 2;  } } int sc() {  for(;;)  {  int n=rand()%4;  int m=rand()%4;  if(qp[n][m]==0)  {  qp[n][m]=sjs();  return 0;  }    } } void dy(int n) {  if(n==0)  {  cout<<"  ";  }  else if(n==2)  {  color(7);  cout<<" "<<n<<" ";  color(7);  }  else if(n==4)  {  color(14);  cout<<" "<<n<<" ";  color(7);  }  else if(n==8)  {  color(6);  cout<<" "<<n<<" ";  color(7);  }  else if(n==16)  {  color(12);  cout<<" "<<n<<" ";  color(7);  }  else if(n==32)  {  color(4);  cout<<" "<<n<<" ";  color(7);  }  else if(n==64)  {  color(13);  cout<<" "<<n<<" ";  color(7);  }  else if(n==128)  {  color(5);  cout<<" "<<n<<" ";  color(7);  }  else if(n==256)  {  color(9);  cout<<" "<<n<<" ";  color(7);  }  else if(n==512)  {  color(3);  cout<<" "<<n<<" ";  color(7);  }  else if(n==1024)  {  color(11);  cout<<n<<" ";  color(7);  }  else if(n==2048)  {  color(10);  cout<<n<<" ";  color(7);  }  else if(n==4096)  {  color(2);  cout<<n<<" ";  color(7);  }  else  {  color(15);  cout<<n;  color(7);  } } int main() {  srand(time(NULL));  int i,j;  cout<<"Game start!(输入w a s d进行控制)"<<endl;  sc();  sc();  cout<<"-------------------------"<<endl;   cout<<"|";  dy(qp[0][0]);  cout<<"|";  dy(qp[0][1]);  cout<<"|";  dy(qp[0][2]);  cout<<"|";  dy(qp[0][3]);  cout<<"|"<<endl;  cout<<"-------------------------"<<endl;   cout<<"|";  dy(qp[1][0]);  cout<<"|";  dy(qp[1][1]);  cout<<"|";  dy(qp[1][2]);  cout<<"|";  dy(qp[1][3]);  cout<<"|"<<endl;  cout<<"-------------------------"<<endl;   cout<<"|";  dy(qp[2][0]);  cout<<"|";  dy(qp[2][1]);  cout<<"|";  dy(qp[2][2]);  cout<<"|";  dy(qp[2][3]);  cout<<"|"<<endl;  cout<<"-------------------------"<<endl;   cout<<"|";  dy(qp[3][0]);  cout<<"|";  dy(qp[3][1]);  cout<<"|";  dy(qp[3][2]);  cout<<"|";  dy(qp[3][3]);  cout<<"|"<<endl;  cout<<"-------------------------"<<endl;    for(;;)  {  char n;  n=getch();  if(n=='w')  {  int g=0;  for(i=0;i<4;i++)  {  for(j=1;j<4;j++)  {   if(qp[j][i]!=0)   {   int k=j;   while(qp[k-1][i]==0&&k!=0)   {   k--;   }   qp[k][i]=qp[j][i];   if(k!=j)   {   qp[j][i]=0;   g=1;   }   }  }  if(qp[0][i]==qp[1][i]&&qp[0][i]!=0)  {   qp[0][i]=qp[0][i]*2;   gread+=qp[0][i];   qp[1][i]=qp[2][i];   qp[2][i]=qp[3][i];   qp[3][i]=0;   g=1;  }  if(qp[1][i]==qp[2][i]&&qp[1][i]!=0)  {   qp[1][i]=qp[1][i]*2;   gread+=qp[1][i];   qp[2][i]=qp[3][i];   qp[3][i]=0;   g=1;  }  if(qp[2][i]==qp[3][i]&&qp[2][i]!=0)  {   qp[2][i]=qp[2][i]*2;   gread+=qp[2][i];   qp[3][i]=0;   g=1;  }  }  if(g==0)  {  cout<<"换个方向试试~"<<endl;  continue;  }  else  {  system("cls");  }  }  else if(n=='d')  {  int g=0;  for(i=0;i<4;i++)  {  for(j=2;j>=0;j--)  {   if(qp[i][j]!=0)   {   int k=j;   while(qp[i][k+1]==0&&k!=3)   {   k++;   }   qp[i][k]=qp[i][j];   if(k!=j)   {   qp[i][j]=0;   g=1;   }   }  }  if(qp[i][3]==qp[i][2]&&qp[i][3]!=0)  {   qp[i][3]=qp[i][3]*2;   gread+=qp[i][3];   qp[i][2]=qp[i][1];   qp[i][1]=qp[i][0];   qp[i][0]=0;   g=1;  }  if(qp[i][2]==qp[i][1]&&qp[i][2]!=0)  {   qp[i][2]=qp[i][2]*2;   gread+=qp[i][2];   qp[i][1]=qp[i][0];   qp[i][0]=0;   g=1;  }  if(qp[i][1]==qp[i][0]&&qp[i][1]!=0)  {   qp[i][1]=qp[i][1]*2;   gread+=qp[i][1];   qp[i][0]=0;   g=1;  }  }  if(g==0)  {  cout<<"换个方向试试~"<<endl;  continue;  }  else  {  system("cls");  }  }  else if(n=='s')  {  int g=0;  for(i=0;i<4;i++)  {  for(j=3;j>=0;j--)  {   if(qp[j][i]!=0)   {   int k=j;   while(qp[k+1][i]==0&&k!=3)   {   k++;   }   qp[k][i]=qp[j][i];   if(k!=j)   {   qp[j][i]=0;   g=1;   }   }  }  if(qp[3][i]==qp[2][i]&&qp[3][i]!=0)  {   qp[3][i]=qp[3][i]*2;   gread+=qp[3][i];   qp[2][i]=qp[1][i];   qp[1][i]=qp[0][i];   qp[0][i]=0;   g=1;  }  if(qp[2][i]==qp[1][i]&&qp[2][i]!=0)  {   qp[2][i]=qp[2][i]*2;   gread+=qp[2][i];   qp[1][i]=qp[0][i];   qp[0][i]=0;   g=1;  }  if(qp[1][i]==qp[0][i]&&qp[1][i]!=0)  {   qp[1][i]=qp[1][i]*2;   gread+=qp[1][i];   qp[0][i]=0;   g=1;  }  }  if(g==0)  {  cout<<"换个方向试试~"<<endl;  continue;  }  else  {  system("cls");  }  }  else if(n=='a')  {  int g=0;  for(i=0;i<4;i++)  {  for(j=1;j<4;j++)  {   if(qp[i][j]!=0)   {   int k=j;   while(qp[i][k-1]==0&&k!=0)   {   k--;   }   qp[i][k]=qp[i][j];   if(k!=j)   {   qp[i][j]=0;   g=1;   }   }  }  if(qp[i][0]==qp[i][1]&&qp[i][0]!=0)  {   qp[i][0]=qp[i][0]*2;   gread+=qp[i][0];   qp[i][1]=qp[i][2];   qp[i][2]=qp[i][3];   qp[i][3]=0;   g=1;  }  if(qp[i][1]==qp[i][2]&&qp[i][1]!=0)  {   qp[i][1]=qp[i][1]*2;   gread+=qp[i][1];   qp[i][2]=qp[i][3];   qp[i][3]=0;   g=1;  }  if(qp[i][2]==qp[i][3]&&qp[i][2]!=0)  {   qp[i][2]=qp[i][2]*2;   gread+=qp[i][2];   qp[i][3]=0;   g=1;  }  }  if(g==0)  {  cout<<"换个方向试试~"<<endl;  continue;  }  else  {  system("cls");  }  }  else  {  cout<<"请输入w、a、s、d"<<endl;   continue;  }  sc();  cout<<"分数:"<<gread<<endl;  cout<<"-------------------------"<<endl;   cout<<"|";  dy(qp[0][0]);  cout<<"|";  dy(qp[0][1]);  cout<<"|";  dy(qp[0][2]);  cout<<"|";  dy(qp[0][3]);  cout<<"|"<<endl;  cout<<"-------------------------"<<endl;   cout<<"|";  dy(qp[1][0]);  cout<<"|";  dy(qp[1][1]);  cout<<"|";  dy(qp[1][2]);  cout<<"|";  dy(qp[1][3]);  cout<<"|"<<endl;  cout<<"-------------------------"<<endl;   cout<<"|";  dy(qp[2][0]);  cout<<"|";  dy(qp[2][1]);  cout<<"|";  dy(qp[2][2]);  cout<<"|";  dy(qp[2][3]);  cout<<"|"<<endl;  cout<<"-------------------------"<<endl;   cout<<"|";  dy(qp[3][0]);  cout<<"|";  dy(qp[3][1]);  cout<<"|";  dy(qp[3][2]);  cout<<"|";  dy(qp[3][3]);  cout<<"|"<<endl;  cout<<"-------------------------"<<endl;  if(pd()==1)  {  break;  }  }  cout<<"Game over~"<<endl;  cout<<"请输入“quit”并回车退出游戏"<<endl;  for(;;)  {  char s[10000];  cin>>s;  if(strcmp(s,"quit")==0)  {  break;  }  }  return 0; }

关于使用C语言编写一个2048游戏就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI