【2048小游戏】屎山版本
By
永远喜欢胡桃
at 2025-03-22 • 0人收藏 • 67人看过
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <conio.h>
#include <random>
using namespace std;
int arr[6][6]={0,0,0,0,0,0,0,2,0,0,0};
int panduan1(int a,int b)//←
{
if(arr[a][b]==arr[a][b+1] and arr[a][b]!=0){return 1;}
if(arr[a][b]==0){return 2;}
else{return 0;}
}
int panduan2(int a,int b)//→
{
if(arr[a][b]==arr[a][b-1] and arr[a][b]!=0){return 1;}
if(arr[a][b]==0){return 2;}
else{return 0;}
}
int panduan3(int a,int b)//↑
{
if(arr[a][b]==arr[a+1][b] and arr[a][b]!=0){return 1;}
if(arr[a][b]==0){return 2;}
else{return 0;}
}
int panduan4(int a,int b)//↓
{
if(arr[a][b]==arr[a-1][b] and arr[a][b]!=0){return 1;}
if(arr[a][b]==0){return 2;}
else{return 0;}
}
//test
int main()
{
srand(time(0));
int dong(0);
cout<<"欢迎试玩2048小游戏,2为↓,4为←,6为→,8为↑"<<endl;
for(int i=1;i<5;i++)
{
for(int j=1;j<5;j++)
{
cout<<arr[i][j]<<" "<<"\t";
}
cout<<"\n";
}
int temp1,temp2;
while(1)
{
int num;
cin>>num;
cout<<endl;
system("cls");
if(num==4)//zuo
{
for(int i=1;i<5;i++)
{
for(int j=1;j<4;j++)
{
if(panduan1(i,j)==2)
{
for(int x=j;x<5;x++)
{
arr[i][x]=arr[i][x+1];
}
}
if(panduan1(i,j)==2)
{
for(int x=j;x<5;x++)
{
arr[i][x]=arr[i][x+1];
}
}
if(panduan1(i,j)==2)
{
for(int x=j;x<5;x++)
{
arr[i][x]=arr[i][x+1];
}
}
}
}
for(int i=1;i<5;i++)
{
for(int j=1;j<4;j++)
{
if(panduan1(i,j)==1)
{
arr[i][j]+=arr[i][j+1];
for(int ii=j+1;ii<5;ii++)
{
arr[i][ii]=arr[i][ii+1];
}
break;
}
}
}
while(1)
{
int m(0),n(0);
m=rand()%4+1;
n=rand()%4+1;
if(arr[m][n]==0)
{
arr[m][n]=((rand()*2)%4)+2;
break;
}
dong=0;
for(int i=1;i<5;i++)
{
for(int j=1;j<5;j++)
{
if(arr[i][j]==0)
{
dong++;
}
}
}
if(dong==0){break;}
}
}
if(num==6)//you
{
for(int i=1;i<5;i++)
{
for(int j=4;j>1;j--)
{
if(panduan2(i,j)==2)
{
for(int x=j;x>=1;x--)
{
arr[i][x]=arr[i][x-1];
}
}
if(panduan2(i,j)==2)
{
for(int x=j;x>=1;x--)
{
arr[i][x]=arr[i][x-1];
}
}
if(panduan2(i,j)==2)
{
for(int x=j;x>=1;x--)
{
arr[i][x]=arr[i][x-1];
}
}
}
}
for(int i=1;i<5;i++)
{
for(int j=4;j>1;j--)
{
if(panduan2(i,j)==1)
{
arr[i][j]+=arr[i][j-1];
for(int ii=j-1;ii>0;ii--)
{
arr[i][ii]=arr[i][ii-1];
}
break;
}
}
}
while(1)
{
int m(0),n(0);
m=rand()%4+1;
n=rand()%4+1;
if(arr[m][n]==0)
{
arr[m][n]=((rand()*2)%4)+2;
break;
}
dong=0;
for(int i=1;i<5;i++)
{
for(int j=1;j<5;j++)
{
if(arr[i][j]==0)
{
dong++;
}
}
}
if(dong==0){break;}
}
}
if(num==8)//shang
{
for(int i=1;i<4;i++)
{
for(int j=1;j<5;j++)
{
if(panduan3(i,j)==2)
{
for(int x=i;x<=4;x++)
{
arr[x][j]=arr[x+1][j];
}
}
if(panduan3(i,j)==2)
{
for(int x=i;x<=4;x++)
{
arr[x][j]=arr[x+1][j];
}
}
if(panduan3(i,j)==2)
{
for(int x=i;x<=4;x++)
{
arr[x][j]=arr[x+1][j];
}
}
}
}
for(int j=1;j<5;j++)
{
for(int i=1;i<4;i++)
{
if(panduan3(i,j)==1)
{
arr[i][j]+=arr[i+1][j];
for(int ii=i+1;ii<5;ii++)
{
arr[ii][j]=arr[ii+1][j];
}
break;
}
}
}
while(1)
{
int m(0),n(0);
m=rand()%4+1;
n=rand()%4+1;
if(arr[m][n]==0)
{
arr[m][n]=((rand()*2)%4)+2;
break;
}
dong=0;
for(int i=1;i<5;i++)
{
for(int j=1;j<5;j++)
{
if(arr[i][j]==0)
{
dong++;
}
}
}
if(dong==0){break;}
}
}
if(num==2)//xia
{
for(int i=4;i>1;i--)
{
for(int j=1;j<5;j++)
{
if(panduan4(i,j)==2)
{
for(int x=i;x>=1;x--)
{
arr[x][j]=arr[x-1][j];
}
}
if(panduan4(i,j)==2)
{
for(int x=i;x>=1;x--)
{
arr[x][j]=arr[x-1][j];
}
}
if(panduan4(i,j)==2)
{
for(int x=i;x>=1;x--)
{
arr[x][j]=arr[x-1][j];
}
}
}
}
for(int j=1;j<5;j++)
{
for(int i=4;i>1;i--)
{
if(panduan4(i,j)==1)
{
arr[i][j]+=arr[i-1][j];
for(int ii=i-1;ii>0;ii--)
{
arr[ii][j]=arr[ii-1][j];
}
break;
}
}
}
while(1)
{
int m(0),n(0);
m=rand()%4+1;
n=rand()%4+1;
if(arr[m][n]==0)
{
arr[m][n]=((rand()*2)%4)+2;
break;
}
dong=0;
for(int i=1;i<5;i++)
{
for(int j=1;j<5;j++)
{
if(arr[i][j]==0)
{
dong++;
}
}
}
if(dong==0){break;}
}
}
int max(0);
max=arr[1][1];
for(int i=1;i<5;i++)
{
for(int j=1;j<5;j++)
{
if(arr[i][j]>max){max=arr[i][j];}
}
}
for(int i=1;i<5;i++)
{
for(int j=1;j<5;j++)
{
cout<<arr[i][j]<<" "<<"\t";
}
cout<<"\n";
}
cout<<"目前合成最大数为—————"<<max<<" "<<endl;
if(max>=2048){cout<<"恭喜!完成2048!"<<endl;}
cout<<"请进行下一步操作"<<endl;
temp1=1;
temp2=0;
for(int i=1;i<5;i++)
{
for(int j=1;j<5;j++)
{
temp1=(temp1*arr[i][j])%443;
if(arr[i][j]==arr[i-1][j])
{
temp2++;
}
if(arr[i][j]==arr[i+1][j])
{
temp2++;
}
if(arr[i][j]==arr[i][j-1])
{
temp2++;
}
if(arr[i][j]==arr[i][j+1])
{
temp2++;
}
}
}
if(temp1!=0 and temp2==0)
{
cout<<"游戏结束!";
break;
}
}
system("pause");
return 0;
}登录后方可回帖