【2048小游戏】屎山版本
By
永远喜欢胡桃
at 2025-03-22 • 0人收藏 • 44人看过
#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; }
登录后方可回帖