【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;
}


登录后方可回帖

登 录
信息栏
欢迎来到滑稽社论坛!注册会员即可发帖!

你好啊

Loading...