4096

#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
#include<math.h>
#include<graphics.h>
#include<mmsystem.h>
#pragma comment(lib,"Winmm.lib")
#define PI 3.1415926
int o = 0;
int times = 0;
//int main()
//{
//    int arr[4]=
//    {
//        0,0,6,9
//    };
//
//    int i, k;
//    for( i = 0 ; i < 3; ++i)
//    {
//        for( k = i + 1; k < 4; ++k)
//        {
//            if(arr[i] == 0 && arr[k] > 0)
//            {
//                arr[i] = arr[k];
//                arr[k] = 0;
//                break;
//            }
//        }
//    }
//    for(i = 0; i < 4; i++)
//    {
//        printf("%d ",arr[i]);
//    }
//}

int main()
{
    srand((unsigned int)time(NULL));
    //system("color 06");
    //system("pause");//暂停一下
    PlaySound(L"./从别后.wav", NULL, SND_LOOP | SND_FILENAME | SND_ASYNC);
    int rani, ranj;
    int i, j;
    initgraph(960,550);
            for(int i=0;i<40;i++)
        {
          cleardevice();
          settextcolor(GREEN);
          settextstyle(i, 0, L"宋体");
          outtextxy(600,300,L"杨仁凯工作室");
          outtextxy(600,350,L"欢迎来到4096Game");
          Sleep(30);
        }
    for(int i=0;i<20;i++)
    {
        settextcolor(YELLOW);
        outtextxy(200-i*10,i*10,L"><");
        Sleep(50);
    }
     int a,b;
    for(int i=0,b=20,a=20;i<30&&a>0;i++)
    {
        if(i>19)
        {
            outtextxy(200,a*10,L"><");
            Sleep(50);
            a=a-2;
            outtextxy(200,b*10,L"><");
            Sleep(50);
            b=b+1;
        }
        outtextxy(i*10,200,L"><");
        Sleep(50);
    }
        for(int i=0,a=0,b=0;i<60;i++)
        {
            int x1 = 200 - int(90 * sin(PI * 2 * i / 60));
            int y1 = 390 - int(90 * cos(PI * 2 * i / 60));
            int x = 390 - int(90 * sin(PI * 2 * i / 60));
            int y = 200 - int(90 * cos(PI * 2 * i / 60));
            settextcolor(BLUE);
            outtextxy(x1,y1,L"><");
            settextcolor(RED);
            outtextxy(x,y,L"><");
            if(i>45)
            {
                settextcolor(BLUE);
                a=a+15;
                outtextxy(290,390+a,L"><");
            }
            if(i>30&&i<45)
            {
                settextcolor(BLUE);
                b=b+10;
                outtextxy(390,290+b,L"><");
            }
            Sleep(50);
        }
        for(int i=0;i<60;i++)
        {
            int x1 = 480 - int(90 * sin(PI * 2 * i / 60));
            int y1 = 440 - int(90 * cos(PI * 2 * i / 60));
            outtextxy(x1,y1,L"><");
            Sleep(50);
        }
    settextstyle(20, 0, L"宋体");
    outtextxy(0,0,L"请输入enter继续........");
    int guan;
    guan=getch();
    system("cls");
    IMAGE ima;
    loadimage(&ima,L"代码1.jpg",400,200);
    putimage(500,20,&ima);
    guan=getch();
    closegraph();
    int map[4][4] = { {0},{},{},{} };//地图的二维数组
    void shang(int map[][4]);
    void down(int map[][4]);
    void left(int map[][4]);
    void right(int map[][4]);
    void print(int a[][4]);
    void ran(int a[][4]);
    void cheat(int a[][4]);
    void pass(int a[][4]);
    void cheat1(int a[][4]);
    void start(int a[][4]);
    void zero(int a[][4]);
    void color(short x);
    ranj = rani = (rand()*rand()) % 4;
    map[rani][ranj] = 2;
    start(map);
    /*键盘输入*/
    int input;
    int e = 0;
    while (1)
    {
        switch (input = getch())
        {
        case'w':shang(map);system("cls");ran(map);pass(map);if (map[0][0] == 3 || map[0][0] == 1) { break; }print(map);break;
        case's':down(map);system("cls");ran(map);pass(map);if (map[0][0] == 3 || map[0][0] == 1) { break; }print(map);break;
        case'a':left(map);system("cls");ran(map);pass(map);if (map[0][0] == 3 || map[0][0] == 1) { break; }print(map);break;
        case'd':right(map);system("cls");ran(map);pass(map);if (map[0][0] == 3 || map[0][0] == 1) { break; }print(map);break;
        case'q':cheat(map);system("cls");print(map);break;//作弊 直接出2048
        case'e':cheat1(map);system("cls");print(map);break;
        case'h':system("cls");zero(map);ran(map);print(map);break;
        case'j':zero(map);system("cls");e = 1;break;
        }
        if (e == 1)
        {
            system("cls");
            for (int z = 0;z < 10000;z++)
            {
                printf("\t\t\t导演:杨仁凯\n");
                printf("\t\t\t主演:杨仁凯\n");
                printf("\t\t\t制作人:杨仁凯\n");
                printf("\t\t\t特别鸣谢:杨仁凯有限公司\n");
            }
            printf("\t\t\t欢迎下次光临!\n");
            break;
        }
    }
    return 0;
}

 

void shang(int a[4][4])
{
    void ran(int a[4][4]);
    for (int j = 0;j < 4;j++)
    {
        for (int i = 0;i < 3;i++)
        {
            for (int l = 1;l < (4 - i);l++)
            {
                if (a[i][j] == 0)
                {
                    a[i][j] = a[i + l][j];
                    a[i + l][j] = 0;
                }
                else
                {
                    if (a[i + l][j] == a[i][j] || a[i + l][j] == 0)
                    {
                        a[i][j] = a[i][j] + a[i + l][j];
                        a[i + l][j] = 0;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
    }
}
void down(int a[4][4])
{
    void ran(int a[4][4]);
    for (int j = 0;j < 4;j++)
    {
        for (int i = 3;i > 0;i--)
        {
            for (int l = 1;l < i + 1;l++)
            {
                if (a[i][j] == 0)
                {
                    a[i][j] = a[i - l][j];
                    a[i - l][j] = 0;
                }
                else
                {
                    if (a[i - l][j] == a[i][j] || a[i - l][j] == 0)
                    {
                        a[i][j] = a[i][j] + a[i - l][j];
                        a[i - l][j] = 0;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
    }
}
void left(int a[4][4])
{
    void ran(int a[4][4]);
    for (int i = 0;i < 4;i++)
    {
        for (int j = 0;j < 3;j++)
        {
            for (int l = 1;l < (4 - j);l++)
            {
                if (a[i][j] == 0)
                {
                    a[i][j] = a[i][j + l];
                    a[i][j + l] = 0;
                }
                else
                {
                    if (a[i][j + l] == a[i][j] || a[i][j + l] == 0)
                    {
                        a[i][j] = a[i][j] + a[i][j + l];
                        a[i][j + l] = 0;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
    }
}
void right(int a[4][4])
{
    void ran(int a[4][4]);
    for (int i = 0;i < 4;i++)
    {
        for (int j = 3;j > 0;j--)
        {
            for (int l = 1;l < j + 1;l++)
            {
                if (a[i][j] == 0)
                {
                    a[i][j] = a[i][j - l];
                    a[i][j - l] = 0;
                }
                else
                {
                    if (a[i][j - l] == a[i][j] || a[i][j - l] == 0)
                    {
                        a[i][j] = a[i][j] + a[i][j - l];
                        a[i][j - 1] = 0;
                    }
                    else
                    {
                        break;
                    }
                }
            }
        }
    }
}
//随机出一个二
void end1(int a[][4]);
void ran(int a[4][4])
{

    int n = 0;
    int rani, ranj;
    while (1)
    {
        rani = (rand()*rand()) % 4;

        ranj = (rand()*rand()) % 4;
        if (a[rani][ranj] == 0)
        {
            a[rani][ranj] = 2;
            break;
        }
        else
        {
            n++;
            if (n > 1000)//检查是否结束
            {
                end1(a);
                break;
            }
        }
    }
}
void print(int a[4][4])
{
    int i, j;
    //printf("\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n");
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 6);
    printf("\t\t按(h)重新开始!\t\t\t\t按(j)退出游戏!\n");
    printf("\t\t按((e) x x)指定消除数字");
    printf("\t\t\t剩余消除次数:%d\n\n", (3 - times));
    printf("                                           0       1       2       3\n");
    printf("                                       ");
    printf("++++++++++++++++++++++++++++++++\n");
    for (i = 0;i < 4;i++)
    {
        for (j = 0;j < 4;j++)
        {
            if (j == 0)
            {
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 6);
                printf("                                 %d     ", i);
            }
            if (a[i][j] == 0)
            {
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 6);
                printf("+      +");
            }
            else
            {
                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a[i][j] * 45);
                printf("+%4d  +", a[i][j]);
            }
        }
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 6);
        printf("\n                                       ");
        printf("++++++++++++++++++++++++++++++++\n");
    }
    o++;
    if (0 > 20)
        o = 1;
    for (int x = 0;x < o;x++)
    {
        printf(" ");
    }
    printf("杨仁凯的最快纪录只要四步\n");
    for (int x = 0;x < o;x++)
    {
        printf(" ");
    }
    printf("你比杨仁凯差很多!\n");
}
/*最弊*/
void cheat(int a[4][4])
{
    int rani, ranj;
    while (1)
    {
        rani = (rand()*rand()) % 4;

        ranj = (rand()*rand()) % 4;
        if (a[rani][ranj] == 0)
        {
            a[rani][ranj] = 2048;
            break;
        }
        else
            continue;
    }
}
/*作弊 消除*/
void cheat1(int a[4][4])
{
    if (times < 3)
    {
        int i, j;
        scanf("%d%d", &i, &j);
        a[i][j] = 0;
        times++;
    }
}
/*通关*/
void pass(int a[][4])
{
    int(*x)[4] = a;
    int i, j;
    int end = 0;
    for (i = 0;i < 4;i++)
    {
        for (j = 0;j < 4;j++)
        {
            if (a[i][j] == 4096)
            {
                printf("\n\n\n\n");
                printf("                               *******                         ******          ******             ******\n");
                printf("                               *******                         ******          ******             ******\n");
                printf("                          ***  *******                         ******          ******             ******\n");
                printf("                         ***   *******                         ******          ******             ******\n");
                printf("                        ***********************            **************      ******             ******\n");
                printf("                       ************************            **************      ******             ******\n");
                printf("                      ****     *******                         ******          ******             ******\n");
                printf("                     ****      *******                         ******          ****************   ****************\n");
                printf("                               *******                         ******          ****************   ****************\n");
                printf("                        ***********************            **************      ******             ******\n");
                printf("                        ***********************            **************      ******             ******\n");
                printf("                               *******                         ******          ******             ******\n");
                printf("                               *******                         ******          ******             ******\n");
                printf("                               *******                         ******          ******             ******\n");
                printf("                               *******                     **********          ****************   ****************\n");
                printf("                               *******                     **********          ****************   ****************\n");
                a[0][0] = 3;
                printf("想重新挑战杨仁凯请按(h)\t想认他做大哥请按(j)\n");
                break;
            }
        }
    }
}
void start(int a[][4])
{
    printf("\n\n\n\n\n\n\n\n");
    printf("666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666\n");
    printf("666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666\n");
    printf("666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666\n");
    printf("6666666666                                                                                        6666666666\n");
    printf("6666666666                                                                                        6666666666\n");
    printf("6666666666                                                                                        6666666666\n");
    printf("6666666666      ***      ***          ************        ************          ************      6666666666\n");
    printf("6666666666      ***      ***          ************        ************          ************      6666666666\n");
    printf("6666666666      ***      ***          ***      ***        ***      ***          ***               6666666666\n");
    printf("6666666666      ***      ***          ***      ***        ***      ***          ***               6666666666\n");
    printf("6666666666      ***      ***          ***      ***        ***      ***          ***               6666666666\n");
    printf("6666666666      ************          ***      ***        ************          ************      6666666666\n");
    printf("6666666666      ************          ***      ***        ************          ************      6666666666\n");
    printf("6666666666               ***          ***      ***                 ***          ***      ***      6666666666\n");
    printf("6666666666               ***          ***      ***                 ***          ***      ***      6666666666\n");
    printf("6666666666               ***          ***      ***                 ***          ***      ***      6666666666\n");
    printf("6666666666               ***          ************        ************          ************      6666666666\n");
    printf("6666666666               ***          ************        ************          ************      6666666666\n");
    printf("6666666666                                                                                        6666666666\n");
    printf("6666666666                                                                                        6666666666\n");
    printf("6666666666                                                                                        6666666666\n");
    printf("666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666\n");
    printf("666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666\n");
    printf("666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666\n");
    printf("\t\t请做出选择:\n\t\t如果想愉快的玩耍请按1~~\t\t如果不想玩请按2!");
    int iput;
    switch (iput = getch())
    {
    case'1':system("cls");printf("开始你愉快的玩耍!\n");print(a);break;
    case'2':system("cls");printf("你不玩也得玩!\n");print(a);break;
    }
}
/*清零*/
void zero(int a[][4])
{
    for (int i = 0;i < 4;i++)
        for (int j = 0;j < 4;j++)
            a[i][j] = 0;
    times = 0;
}
void color(short x)
{
    if (x >= 0 && x <= 15)
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
    else
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
}
/*输了*/
void end1(int a[][4])
{
    int flag = 0;
    for (int i = 1;i < 3;i++)
        for (int j = 1;j < 3;j++)
        {
            if (a[i][j] == a[i][j + 1] || a[i][j] == a[i][j - 1] || a[i][j] == a[i - 1][j] || a[i][j] == a[i + 1][j])
                flag = 1;
        }
    if (a[0][0] == a[0][1] || a[0][0] == a[1][0] || a[3][3] == a[3][2] || a[3][3] == a[2][3] || a[3][0] == a[3][1] || a[3][0] == a[2][0])
        flag = 1;
    if (a[0][3] == a[0][2] || a[0][3] == a[1][3])
        flag = 1;
    if (flag == 0)
    {
        printf("************          ************        ****************        ************\n");
        printf("************          ************        ****************        ************\n");
        printf("***                   ***      ***        ****************        ***      ***\n");
        printf("***                   ***      ***        **     **     **        ***      ***\n");
        printf("***                   ***      ***        **     **     **        ***      ***\n");
        printf("***   ******          ************        **     **     **        ************\n");
        printf("***   ******          ************        **     **     **        ************\n");
        printf("***      ***          ***      ***        **     **     **        ***         \n");
        printf("***      ***          ***      ***        **     **     **        ***         \n");
        printf("************          ***      ***        **     **     **        ************\n");
        printf("************          ***      ***        **     **     **        ************\n");
        a[0][0] = 1;
        printf("想重新挑战杨仁凯请按(h)\t想认他做大哥请按(j)\n");
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值