不贪吃的蛇蛇不是好蛇蛇
——蛇蛇明明这么可爱~~
话说,有认识的小盆友曾经通关过“贪吃蛇”这个小游戏吗?
↓
↓
↓
↓
↓
↑
↑
↑
↑
↑
沮丧-ing
下面这个是我自己做的手控的贪吃蛇
嗯…………差距好大
before i design the game,there is a problem urgent to work out!
怎样才能在这个黑白屏上,一边输入,蛇蛇一边走呢?
//然后我找到了这些↓
//即时输入(就是不用按回车的那种:
#include <conio.h>
int c;
while (c = getch()){***}
//如果我们不删除原来的输出,每次输出都会出现在上上一次的末尾,所以需要清屏
//清空屏幕:
#include<windows.h>
system("cls");
然后,在黑白屏大致构造出边框之后。
不行啊,这个清屏一闪一闪的,要瞎!
于是又去找了找资料,发现一个控制屏幕执行频率的东东~
#include<time.h>
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
-_-
.
.