Bluezzz 发表于 2020-2-18 08:58

分享一个C++自己写的贪吃蛇

分享一个自己写的C++贪吃蛇
之前学C++时写的,希望大家喜欢!
部分核心代码:


```
void initiBoard() {
        for(int i = 1; i<=15; i++) {
                strcpy(Board,Boardiniti);    //把Boardiniti复制到Board中
        }
}

void printBoard() {
        system("cls");//清屏
        for(int i = 1; i <= 15; i++) {
                cout<<Board;
        }
}

void changeBoard(int x,int y,int changeFlag) {
        if(changeFlag==1) {
                Board = ' ';
        } else if(changeFlag==3) {
                Board = 'X'; //■█□嘿嘿嘿
        } else if(changeFlag==4) {
                Board = '*';
        }
}

void changeiniBoard(int x,int y,int changeFlag) {
        if(changeFlag == 1)
                Boardiniti = '*';
        if(changeFlag == 2)
                Boardiniti = ' ';
}

void changeSnakeBody() {
        for(int i = 0; i <=1; i++) {
                for(int j = snakeEnd; j >=1; j--) {
                        snake = snake;
                }
        }
}

void move() {
        if(towards == 2) { //上
                changeSnakeBody();
                snake++;
        } else if(towards == 1) { //下
                changeSnakeBody();
                snake--;
        } else if(towards == 3) { //左
                changeSnakeBody();
                snake--;
        } else if(towards == 4) { //右
                changeSnakeBody();
                snake++;
        }
}

void getTowards() {
        int twds=towards;
        timeNow = GetTickCount();
        while(GetTickCount()<timeNow+hard) {
                if(kbhit()) {
                        char tows = getch();
                        if((tows == 'w'||tows == 'W')&&twds!=2) towards = 1;
                        else if((tows == 's'||tows == 'S')&&twds!=1) towards = 2;
                        else if((tows == 'a'||tows == 'A')&&twds!=4) towards = 3;
                        else if((tows == 'd'||tows == 'D')&&twds!=3) towards = 4;
                }
        }
}

void updataBoard() {
        initiBoard();
        for(int i = snakeEnd; i >=0; i--) {
                changeBoard(snake,snake,3);
        }
}
```

另外,此软件由 Dev-C++ 编写,源代码在压缩文件中的新建文件夹 project1.dev 文件中打开,没有Dev的同学也可使用压缩文件中的 贪吃蛇.cpp 文件编译(只是没有图标),感谢大家的支持!

JuncoJet 发表于 2020-2-18 09:42

Bluezzz 发表于 2020-2-18 09:35
感谢大佬的调试,但我在 Win7 电脑上跑的很好呀?
void changeiniBoard(int x,int y,int changeFlag) {
      if(changeFlag == 1)
                Boardiniti = '*';
      if(changeFlag == 2)
                Boardiniti = ' ';
}


Seed数组初始变量-1,执行changeiniBoard不出错才怪。除非我用的和你用的不是同一个代码。
我是中文的 贪吃蛇.cpp 编译的

JuncoJet 发表于 2020-2-18 09:32

Bluezzz 发表于 2020-2-18 09:27
怎么会崩溃呢???

void play() {
        score = 0;
        is_alive = 1;
        towards = 4;    //蛇的朝向    1:向上    2:向下    3:向左    4:向右
        snake = 5;    //蛇的xy坐标
        snake = 7;
        snakeEnd = 1;
        //changeiniBoard(Seed,Seed,2); //<==这行注释掉就不会崩溃,也能玩游戏。有这行就崩溃
        Seed = -1;
        Seed = -1;
        while(is_alive) {
                getTowards();            //获取朝向
                move();                  //让大蛇飞
                updataBoard();
                printBoard();            //画 板 子
                genSeed();                //生成种子
                Judge();                //判断是否吃豆
        }
        End();
}

sp21000 发表于 2020-2-18 09:02

前排支持

phpbird 发表于 2020-2-18 09:04

没有环境,无法编译,代码和界面很赞,能改成个python的么?

Bluezzz 发表于 2020-2-18 09:07

phpbird 发表于 2020-2-18 09:04
没有环境,无法编译,代码和界面很赞,能改成个python的么?

额。。。我是Python的初学者,能力有限。。。很多语法还不知道,请谅解{:1_923:}

圣皇 发表于 2020-2-18 09:10

感谢分享自己作品

yunxiaoyulin 发表于 2020-2-18 09:15

感谢分享,楼主辛苦了。让我想起了上学期间的作业。

Bluezzz 发表于 2020-2-18 09:19

yunxiaoyulin 发表于 2020-2-18 09:15
感谢分享,楼主辛苦了。让我想起了上学期间的作业。

感谢支持!让我们共同学习{:1_919:}

JuncoJet 发表于 2020-2-18 09:24

按了S就奔溃= =#

52Dave 发表于 2020-2-18 09:26

厉害好评

Bluezzz 发表于 2020-2-18 09:27

JuncoJet 发表于 2020-2-18 09:24
按了S就奔溃= =#

怎么会崩溃呢???{:1_936:}
页: [1] 2 3 4 5
查看完整版本: 分享一个C++自己写的贪吃蛇