题目
做一个简单又有逼格的2048游戏
如果对你有帮助请点个赞吧!
#include <bits/stdc++.h>
#include <unistd.h>
#include <windows.h>
using namespace std;
void print();
char n;
int a[4][4]=
{
{1,1,1,1},
{1,1,1,1},
{1,1,1,1},
{1,1,1,1}
},x,y;
void say(string a)
{
for(int i=0;i<a.length();i++)
{
if(a[i]=='-') cout << endl;
else cout << a[i];
usleep(20000);
}
}
void shuzi()
{
srand(time(0));
int num=rand()%16;
x=num/4;
y=num%4;
if(a[x][y]==1){a[x][y]=2;return;}
while(y!=3)
{
y++;
if(a[x][y]==1){a[x][y]=2;return;}
}
while(y!=0)
{
y--;
if(a[x][y]==1){a[x][y]=2;return;}
}
while(x!=3)
{
x++;
if(a[x][y]==1){a[x][y]=2;return;}
}
while(x!=0)
{
x--;
if(a[x][y]==1){a[x][y]=2;return;}
}
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(a[i][j]==1) a[i][j]==2;return;
}
}
}
void w()
{
for(int i=1;i<=3;i++)
{
for(int j=0;j<4;j++)
{
for(int k=0;k<4;k++)
{
if(a[j-1][k]==1)
{
a[j-1][k]=a[j][k];
a[j][k]=1;
}
else if(a[j][k]==a[j-1][k])
{
a[j-1][k]*=2;
a[j][k]=1;
}
}
}
}
}
void s()
{
for(int i=1;i<=3;i++)
{
for(int j=0;j<4;j++)
{
for(int k=0;k<4;k++)
{
if(a[j+1][k]==1)
{
a[j+1][k]=a[j][k];
a[j][k]=1;
}
else if(a[j][k]==a[j+1][k])
{
a[j+1][k]*=2;
a[j][k]=1;
}
}
}
}
}
void aa()
{
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
for(int k=0;k<4;k++)
{
if(k==0) continue;
if(a[j][k-1]==1)
{
swap(a[j][k],a[j][k-1]);
}
else if(a[j][k]==a[j][k-1])
{
a[j][k-1]*=2;
a[j][k]=1;
}
}
}
}
}
void d()
{
for(int i=0;i<3;i++)
{
for(int j=0;j<4;j++)
{
for(int k=0;k<4;k++)
{
if(k==3) continue;
if(a[j][k+1]==1)
{
swap(a[j][k],a[j][k+1]);
}
else if(a[j][k]==a[j][k+1])
{
a[j][k+1]*=2;
a[j][k]=1;
}
}
}
}
}
int main()
{
int num=0;
clear;
sleep(2);
clear;
shuzi();
shuzi();
print();
while(1)
{
num=0;
cin >> n;
if(n=='w') w();
if(n=='s') s();
if(n=='a') aa();
if(n=='d') d();
system("cls");
shuzi();
print();
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(a[i][j]==2048)
{
cout << "\n\nyou win!!!!!";
return 0;
}
if(a[i][j]!=1)
{
num++;
}
}
}
if(num>=16)
{
cout << "\n\nyou lose!";
return 0;
}
}
}
void print()
{
cout << " ---- ---- ---- ---- \n";
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
if(a[i][j]==1) cout << "| |";
else if(a[i][j]<10) cout << "| "<<a[i][j] << " |";
else if(a[i][j]<100) cout<< "| "<< a[i][j]<< " |";
else if(a[i][j]<1000)cout<< "|"<<a[i][j] << " |";
else if(a[i][j]>=1000)cout << "|"<< a[i][j] << "|";
}
cout << endl;
cout << " ---- ---- ---- ----\n";
}
}