字符游戏之正常贪吃蛇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_39820793/article/details/78920962

游戏策划

一、游戏名称:贪吃蛇
二、游戏玩法:相信大家小时候都有玩过,本人就不详细的介绍了。
三、游戏所需:一只字符蛇(以H为头,以X作为身子),食物($).

设计思路

一、首先,要设计一个地图,如图,一个11*11的地图。
这里写图片描述

二、接下来我们要我们的蛇。
这里写图片描述

三、接下来,我们要让蛇在用户输入了之后可以动。
这里写图片描述

四、然后只是会动还不行,还要有食物,并且吃了食物之后能够长大。
这里写图片描述

这里写图片描述

伪代码

/read Press/
if Press == ‘w’
  then snake goes up
if Press ==’a’
  then snake moves to left
if Press ==’s’
  then snake goes dowm
if Press ==’d’
  then snake moves to right
end if
if snake eat food
  then snakeLength add one
end if
if snake eat itself or hit the wall
  then print gameover!
end if
if snake exist lastly
  then print you are win!
end if

代码实现

都说写伪代码容易,写真正的代码难(是真的!!!)
好,现在我们开始写我们的代码了!
这里写图片描述
 首先吧,调用几个库,设定几个函数与变量,基本上都很好懂,但是我的第十一行设定的函数可能让你费解,没事,我解释给你听,但是不要学我用这个方法(说多了都是泪┭┮﹏┭┮)
 为什么要设置插入到数组左边呢?(哦,原谅我,现在才发现我左右不分)
因为我一开始就设置了数组的最右边就是蛇头了,吃了食物蛇身子要变长,怎么办呢?就是增加一个坐标,因为头的坐标在最右边,所以要写个函数把其插到最左边,(蛇的坐标之所以一开始搞成这样。。。也是看了老师的开头代码有关。。。在做这些的时候无比想念python的方便/(ㄒoㄒ)/~ ~)
 当然啦,一开始只是在做让蛇走动的时候自然是无所谓的,但是一旦要变长的时候这个麻烦才凸显出来,所以最好是一开始就把蛇头放在最左边,那样子就不需要,写一个比较麻烦的插到左边的函数了,虽然在C语言里面插到右边一样麻烦~~
这里写图片描述
 上面第一行代码呢,是进行清屏的代码,用一个for循环输出map,再在下面设置一个printf函数输出蛇的长度,最后一个代码呢,是读取你输入的键。
这里写图片描述
当输入的键为w时向上运动并改变direction,再加个判断死亡的条件之一,撞到自己。
这里写图片描述
上面就是snakeMove函数,在我的这个游戏之中,direction有四个值:1、2、3、4,分别代表着上、右、下、左,这样就可以确定蛇头的方向了,在这个函数之中只有蛇头的坐标是新算的,其他的都是由上一个点的坐标传承过来的。
这里写图片描述
上面即为判断蛇是否撞墙。

总结

最后,上面的代码还不是非常的完整。
在此讲一下思路,就不贴出代码了。
①蛇的自动前进,可以用kbhit()函数判断是否有按键按下,只要设置当没有按键按下的时候蛇沿着所在的方向自动前进就是了,至于频率自己调控就好了。
②胜利判断,好吧,一开始没有设置,是因为我没有考虑有人可以玩到最后,包括我自己也玩不到(虽然我知道怎么必胜,但是原谅我比较菜),胜利是只要判断map里面还有没有空格即可。
③食物生成,好吧,其实我在上面忘了写了,现在简单说一下,只要用随机数生出食物的坐标,再将map那个坐标换成食物就好了。

猜你喜欢

转载自blog.csdn.net/weixin_39820793/article/details/78920962