• 【CQgame】[下一百层] [Down]


    简单的下一百层的c++实现,代码一晚上就码完了

    注意:游戏前请在 默认值 或 属性 中调整缓冲区大小,否则会输出爆屏,方法写在代码里了

    觉得速度 快/慢 的可以在第 23 行手动改一下,相信大神们能看懂~

    /*************************************************************/

    /*
        < D O W N >
        **作者:CQzhangyu
        **使用说明:
        游戏时请在 窗口 上按 右键 打开菜单
        点击 默认值 ->
             布局 ->
          将 屏幕缓冲区 中的 高度 改为 9999
    */
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<iostream>
    #include<queue>
    #include<time.h>
    #include<conio.h>
    #include<windows.h>
    #define gowhite SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)
    #define goyellow SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED | FOREGROUND_GREEN|FOREGROUND_INTENSITY)
    #define gogreen SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_INTENSITY)
    #define gored SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_INTENSITY)
    using namespace std;
    const int n=20,m=24,unit=20,len=5,sfall=2,smove=1,sdown=5,hei=7;
    int tot,depth,score,dead,px,py;
    char input;
    queue<int> qx,qy;
    void GOTO(int x,int y)
    {
        COORD pos = {x,y};
        HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleCursorPosition(hOut, pos);
    }
    void pmenu()
    {
        GOTO(0,0);
        int i;
        printf("
    
    
    
    
    ");
        puts("          ╔═══════════════════════════╗");
        puts("          ║    ████      ███    █      █  █      █    ║");
        puts("          ║    █      █  █      █  █  █  █  ██    █    ║");
        puts("          ║    █      █  █      █  █  █  █  █  █  █    ║");
        puts("          ║    █      █  █      █  █  █  █  █  █  █    ║");
        puts("          ║    █      █  █      █  █  █  █  █  █  █    ║");
        puts("          ║    █      █  █      █    █  █    █    ██    ║");
        puts("          ║    ████      ███      █  █    █      █    ║");
        puts("          ╚═══════════════════════════╝");
        printf("
    
    
    ");
        puts("                           Press any key to start.");
        getch();
        system("cls");
        for(i=1;i<=n+1;i++)    printf("▼");
        printf("
    ");
        for(i=1;i<=m;i++)
        puts("║                                        ║");
        GOTO(50,3);
        printf("分 数:");
        GOTO(0,24);
    }
    int main()
    {
        srand(time(NULL));
        pmenu();
        qx.push((n-len)/2+1);
        qy.push(23);
        GOTO(n-len+3,23);
        int i,tx,ty;
        for(i=0;i<len;i++)
        printf("█");
        px=n/2;
        py=22;
        GOTO(n+2,22);
        goyellow;
        printf("●");
        gowhite;
        while(!dead)
        {
            tot++;
            if(tot%smove==0)
            {
                while(kbhit())
                {
                    input=_getch();
                    if(input=-32)
                    {
                        input=_getch();
                        if(input==75&&px>0&&(py!=qy.front()||px>qx.front()+len))
                        {
                            GOTO(px*2+2,py);
                            printf("  ");
                            px--;
                            GOTO(px*2+2,py);
                            goyellow;
                            printf("●");
                            gowhite;
                        }
                        if(input==77&&px<n-1&&(py!=qy.front()||px<qx.front()-1))
                        {
                            GOTO(px*2+2,py);
                            printf("  ");
                            px++;
                            goyellow;
                            printf("●");
                            gowhite; 
                        }
                    }
                }
            }
            if(tot%sdown==0)
            {
                depth++;
                if(py==depth)
                {
                    dead=1;
                    break;
                }
                GOTO(0,depth);
                for(i=1;i<=n+2;i++)    printf("▼");
                GOTO(50,depth+2);
                printf("           ");
                GOTO(50,depth+3);
                printf("分 数:");
                gogreen;
                printf("%04d",score);
                gowhite;
                GOTO(0,depth+23);
                puts("║                                        ║");
                if(depth%hei==0)
                {
                    score++;
                    tx=rand()%(n-len+1);
                    ty=depth+23;
                    qx.push(tx);
                    qy.push(depth+23);
                    GOTO(tx*2+2,ty);
                    for(i=1;i<=len;i++)
                        printf("█");
                }
            }
            if(tot%sfall==0)
            {
                while(!qy.empty()&&qy.front()<py)
                {
                    qx.pop();
                    qy.pop();
                }
                if(qy.empty()||py+1!=qy.front()||px<qx.front()||px>=qx.front()+len)
                {
                    GOTO(px*2+2,py);
                    printf("  ");
                    py++;
                    GOTO(px*2+2,py);
                    goyellow;
                    printf("●");
                    gowhite;
                }
            }
            if(py>=depth+24)
            {
                dead=1;
                break;
            }
            GOTO(0,depth+24);
            Sleep(unit);
        }
        GOTO(50,depth+15);
        gored;
        printf("---Game Over---");
        gowhite;
        GOTO(0,depth+24);
        getch();
        return 0;
    }

    | 欢迎来原网站坐坐! >原文链接<

  • 相关阅读:
    队列与双向队列

    linux nohup, jobs, fg, tail指令 指令前后台切换
    linux shell
    Linux学习笔记四 grep, sed, awk
    面试要求
    jenkins send files or publish
    mysql导入脚本
    第三方接口调用框架
    pdm文件name与comment互相同步
  • 原文地址:https://www.cnblogs.com/CQzhangyu/p/6149482.html
Copyright © 2020-2023  润新知