当贪吃蛇不再贪吃尾巴,它就智能(zhang)了!

不贪吃的蛇蛇不是好蛇蛇
当贪吃蛇不再贪吃尾巴,它就智能(zhang)了!_第1张图片
——蛇蛇明明这么可爱~~


话说,有认识的小盆友曾经通关过“贪吃蛇”这个小游戏吗?





当贪吃蛇不再贪吃尾巴,它就智能(zhang)了!_第2张图片





沮丧-ing


下面这个是我自己做的手控的贪吃蛇
当贪吃蛇不再贪吃尾巴,它就智能(zhang)了!_第3张图片
嗯…………差距好大

before i design the game,there is a problem urgent to work out!

怎样才能在这个黑白屏上,一边输入,蛇蛇一边走呢?

//然后我找到了这些↓

//即时输入(就是不用按回车的那种:
#include 
int c;
while (c = getch()){***}

//如果我们不删除原来的输出,每次输出都会出现在上上一次的末尾,所以需要清屏
//清空屏幕:
#include
system("cls");

然后,在黑白屏大致构造出边框之后。
不行啊,这个清屏一闪一闪的,要瞎!

于是又去找了找资料,发现一个控制屏幕执行频率的东东~

#include
const time = 200;
sleep(time);
//每200毫秒执行一次程序

嗯。准备工作都已经完成,开始着手程序的涉设计。

代码冗长,细节我就不放出来了呃。
先设计轮廓框架吧!

void Game_Start(){
    Welcome();//欢迎界面
    Create_Map();//初始化地图
    Create_Snake();//初始化小蛇
    Create_Food();//初始化食物
    Print();//打印输出
}
void Move_Snake(){
    //数组记录蛇身
    if 蛇吃到食物 then
        食物消失
        小蛇变长
        Create_Food();
    end if 
    if 蛇碰到墙/自己 then
        Game_Over();
    end if 
}
void Game_Play(){
    //这里用w,s,a,d控制移动方向
    while (c=getch()){
        Move_Snake();//移动小蛇
        system("cls");
        Print();//打印输出
    }
}
int main(){
    Game_Start();
    Game_Play();
    Game_Over();
    return 0;
}

完成核心部分之后就是,,,爽~~~

当然,之后还可以增加许多功能:
·不同的食物不同的分数
·暂停功能
·蛇越长跑得越快(别问我为什么是用跑的……
·双人操作??
……

但系!还是有缺陷,随着游戏的进行,屏幕闪现的频率越来越快,眼睛实在是受不了,而且一卡一卡的。

有没有什么办法不用直接清空屏幕呢?

于是我又发现了一些好东东~

//该功能是直接跳到屏幕(x,y)位置,然后你的输出就可以覆盖原来的位置!!
#include<windows.h>
void Goto_xy(int x,int y){ 
    HANDLE handle;
    COORD coord;
    coord.X=x;      
    coord.Y=y;
    handle=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleCursorPosition(handle,coord);
}

至此,我的手控贪吃蛇落下一段落了。惬意~


可,看到别人的蛇蛇都能自己动起来,自己的还要手控,emmmmm,累QAQ

于是又找了许多智能搜索的方法~

其中有元老级的A*算法~

然而我还没学会~

o(╥﹏╥)o

TAT

-_-

.

.

你可能感兴趣的:(教程)