小游戏之贪吃蛇

Github_project

Posted by 谢玄xx on April 8, 2022

首先感谢作者silence1772c++经典项目之贪吃蛇

这里是作者的Github主页。路过的各位喜欢的话支持一下造轮子的人吧: Github传送门

接下来我们来解剖这个项目。

本文将讲解如何使用c++面向对象方法编写控制台版贪吃蛇小游戏.

开始动画部分

我们的开始动画是由一条蛇和一行文字从左到右移动而成,这里我们先单独讨论一下蛇,要达到移动的效果,我采取的策略是将整个过程分为三部分: 第一部分为蛇从左边开始出现到整个身体完全出现; 第二部分为蛇身整体从左移动到接触右边界的过程; 第三部分为蛇从接触右边界到完全消失的过程;

第一部分

这一部分的实现首先是建立一个deque双端队列,用于存储点的对象,这些点就是组成蛇身的元素,然后再用一个for循环将容器中的点依次打印出来,每打印一个点停顿一会,这样就达到了移动的效果。全部打印完后就到了第二部分,

具体请参考startinterface.h以及startinterface.cpp

第二部分

这部分蛇的每次前进都是通过计算将要移动到的下一个点的坐标,然后将这个点打印出来,与此同时将蛇尾,亦即queue中的首端点去掉,并擦除屏幕上该点颜色。

第三部分

第三部分就直接依次从蛇尾擦除即可。 同理,文字snake的移动也基本类似,稍微改动即可,因为无需对首尾进行操作,而是要对所以点进行移动,因此容器选用vector。

选择难度部分

游戏部分