• -贪吃蛇-


    好玩的话记得点赞哦!!!

    #include<bits/stdc++.h>
    #include<windows.h>
    #include<conio.h>
    #define X 23
    #define Y 75
    #define UP 0
    #define DOWN 1
    #define LEFT 2
    #define RIGHT 3
    int WAIT_TIME=150;
    int map_0[X][Y];
    int Snake[X*Y][2];
    int Slength;
    int direction;
    int score=0;
    bool pdEatFood=false;
    void csh();
    void huaMap();
    void huaSnake();
    void gotoxy(int x,int y);
    void move();
    void intokey();
    bool check(int x,int y);
    void putfood();
    bool gameover();
    void dy_fs();
    void Game();
    int main(){
        while(true)
            Game();
        return 0;
    }

    void csh(){
        system("color 1B");
        srand(time(NULL));
        Slength=4;
        gotoxy(0,0);
        CONSOLE_CURSOR_INFO cursor_info={1,0};
        SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
        int x,y;
        Snake[0][0]=X/2;
        Snake[0][1]=Y/2;
        for(x=1;x<X-1;x++)
            for(y=1;y<Y-1;y++)
                map_0[x][y]=0;
        for(x=0;x<X;x++){
            map_0[x][0]=1;
            map_0[x][Y-1]=1;
        }
        for(y=0;y<Y-1;y++){
            map_0[0][y]=1;
            map_0[X-1][y]=1;
        }
        for(x=1; x<4; x++){
            Snake[x][0]=Snake[0][0]+x;
            Snake[x][1]=Snake[0][1];
        }
        direction=UP;
    }
    void huaMap(){
        int x,y;
        for(x=0; x<X; x++){
            for(y=0; y<Y; y++){
                if(map_0[x][y]==1)printf("#");
                if(map_0[x][y]==0)printf(" ");
            }
            printf("\n");
        }
    }
    void huaSnake(){
        int x;
        gotoxy(Snake[0][0],Snake[0][1]);
        printf("O");
        gotoxy(Snake[1][0],Snake[1][1]);
        printf("#");   
    }
    void gotoxy(int i,int j){
        COORD position={j,i};
        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),position);
    }
    void move(){
        int i;
        if(!gameover()){
            gotoxy(Snake[Slength-1][0],Snake[Slength-1][1]);
            printf(" ");
        }
        for(i=Slength-1;i>0;i--){
            Snake[i][0]=Snake[i-1][0];
            Snake[i][1]=Snake[i-1][1];
        }
        switch(direction){
            case UP:
                Snake[0][0]--;
                break;
            case DOWN:
                Snake[0][0]++;
                break;
            case LEFT:
                Snake[0][1]--;
                break;
            case RIGHT:
                Snake[0][1]++;
                break;
        }
        if(pdEatFood){
            Slength++;
            pdEatFood=false;
        }
        gotoxy(0,0);
        printf("#");
    }
    void intokey(){
        if(kbhit()!=0){
            char in;
            while(!kbhit()==0)
                in=getch();
            switch(in){
                case 'w':
                case 'W':
                    if(direction!=DOWN)
                        direction=UP;
                    break;
                case 's':
                case 'S':
                    if(direction!=UP)
                        direction=DOWN;
                    break;
                case 'a':
                case 'A':
                    if(direction!=RIGHT)
                        direction=LEFT;
                    break;
                case 'd':
                case 'D':
                    if(direction!=LEFT)
                        direction=RIGHT;
                    break;
                case 'p':
                case 'P':
                    in=getch();
                    break;
                case '+':case '=':if(WAIT_TIME>0)WAIT_TIME-=10;break;
                case '-':case '_':if(WAIT_TIME<1000)WAIT_TIME+=10;break;
            }
        }
    }
    bool check(int ii,int jj){
        int i;
        for(i=0;i<Slength;i++){
            if(ii==Snake[i][0]&&jj==Snake[i][1])
                return false;
        }
        return true;
    }
    void putfood(){
        int i,j;
        do{
            i=rand()%(X-2)+1;
            j=rand()%(Y-2)+1;
        }while(check(i,j)==false);
        map_0[i][j]=-1;
        gotoxy(i,j);
        printf("$");
        return;
    }
    bool gameover(){
        bool isgameover=false;
        int sX,sY;
        sX=Snake[0][0],sY=Snake[0][1];
        if(sX==0||sX==X-1||sY==0||sY==Y-1)
            isgameover=true;
        int i;
        for(i=1;i<Slength;i++){
            if(sX==Snake[i][0]&&sY==Snake[i][1])
                isgameover=true;
        }
        return isgameover;
    }
    void dy_fs(){
        gotoxy(X,0);
        printf("最终得分:%d     ",score);
        gotoxy(X+1,0);
        printf("速度:%d     ",1000-WAIT_TIME);
        return;
    }
    void Game(){
        csh();
        huaMap();
        putfood();
        MessageBox(NULL,"欢迎来到贪吃蛇游戏!","温馨提示",MB_OK);
        Sleep(1000);
        while(true){
            if(gameover()){
                system("cls");
                printf("Game Over!\n");
                system("pause");
                pdEatFood=false;
                WAIT_TIME=150;
                score=0;
                break;
            }
            huaSnake();
            Sleep(WAIT_TIME);
            intokey();
            if(gameover()){
                system("cls");
                printf("Game Over!\n");
                system("pause");
                pdEatFood=false;
                WAIT_TIME=150;
                score=0;
                break;
            }
            move();
            dy_fs();
            if(map_0[Snake[0][0]][Snake[0][1]]==-1){
                map_0[Snake[0][0]][Snake[0][1]]=0;
                pdEatFood=true;
                putfood();
                score+=1;
            }
        }
        return;
    }

  • 相关阅读:
    刷题学习记录
    使用大卫的k8s监控面板(k8s+prometheus+grafana)
    基于神经网络的车牌识别系统在matlab上如何实现
    软件工程毕业设计课题(51)微信小程序毕业设计JAVA教室图书馆座位预约小程序系统设计与实现
    Git合并固定分支的某一部分至当前分支
    zabbix模板监控和自定义监控
    配置VUE环境过程中 npm报错的处理方案以及VUE环境搭建过程
    【前端修炼场】 — 练习一(熟悉html常见标志语言)
    互联网加竞赛 车道线检测(自动驾驶 机器视觉)
    高效的开发流程搭建,kaggle提交流程示范
  • 原文地址:https://blog.csdn.net/qybcjmy/article/details/125497644