当前位置: 首页 > 工具软件 > 2048.cpp > 使用案例 >

2048C++/C

慕容宇
2023-12-01

题目
做一个简单又有逼格的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";
    }
}
 类似资料: