吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3811|回复: 40
收起左侧

[C&C++ 转载] 分享一个C++自己写的贪吃蛇

  [复制链接]
Bluezzz 发表于 2020-2-18 08:58
分享一个自己写的C++贪吃蛇
之前学C++时写的,希望大家喜欢!
部分核心代码:


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

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

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

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

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

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

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[0][i],snake[1][i],3);
    }
}


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

启动界面

启动界面
QQ截图20200202214338.png
QQ截图20200202214325.png

C 贪吃蛇.rar

12.13 KB, 下载次数: 61, 下载积分: 吾爱币 -1 CB

源代码自行下载

免费评分

参与人数 4吾爱币 +5 热心值 +4 收起 理由
xwl + 1 + 1 感谢您的宝贵建议,我们会努力争取做得更好!
samary1999 + 1 + 1 谢谢@Thanks!
JuncoJet + 1 只有我按S崩溃吗,楼下?
huzpsb + 3 + 1 tql%%%orz

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

JuncoJet 发表于 2020-2-18 09:42
Bluezzz 发表于 2020-2-18 09:35
感谢大佬的调试,但我在 Win7 电脑上跑的很好呀?

[C++] 纯文本查看 复制代码
void changeiniBoard(int x,int y,int changeFlag) {
        if(changeFlag == 1)
                Boardiniti[y][x] = '*';
        if(changeFlag == 2)
                Boardiniti[y][x] = ' ';
}


Seed数组初始变量-1,执行changeiniBoard不出错才怪。除非我用的和你用的不是同一个代码。
我是中文的 贪吃蛇.cpp 编译的
JuncoJet 发表于 2020-2-18 09:32
Bluezzz 发表于 2020-2-18 09:27
怎么会崩溃呢???

[C++] 纯文本查看 复制代码
void play() {
	score = 0;
	is_alive = 1;
	towards = 4;    //蛇的朝向    1:向上    2:向下    3:向左    4:向右
	snake[0][0] = 5;    //蛇的xy坐标
	snake[1][0] = 7;
	snakeEnd = 1;
	//changeiniBoard(Seed[0],Seed[1],2); //<==这行注释掉就不会崩溃,也能玩游戏。有这行就崩溃
	Seed[0] = -1;
	Seed[1] = -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的初学者,能力有限。。。很多语法还不知道,请谅解
圣皇 发表于 2020-2-18 09:10
感谢分享自己作品
yunxiaoyulin 发表于 2020-2-18 09:15
感谢分享,楼主辛苦了。让我想起了上学期间的作业。
 楼主| Bluezzz 发表于 2020-2-18 09:19
yunxiaoyulin 发表于 2020-2-18 09:15
感谢分享,楼主辛苦了。让我想起了上学期间的作业。

感谢支持!让我们共同学习
JuncoJet 发表于 2020-2-18 09:24
按了S就奔溃= =#
52Dave 发表于 2020-2-18 09:26
厉害好评
 楼主| Bluezzz 发表于 2020-2-18 09:27

怎么会崩溃呢???
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 07:29

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表