近期看完C++Primer,决定小试身手,碰巧看到某博主用C++实现了贪吃蛇,所以我也决定试一试。
C++编程的核心思想之一就是OO思维(面向对象思维),需要一定的抽象能力,同样还需要更好的封装。
大概简述一下我的C++贪吃蛇编程思想:
对象有:
(a) 游戏框架:实现游戏空间,包括外围墙、贪吃蛇和食物的显示;
由于游戏框架只有一个,所以直接设了全局变量frame,减少调用时的传参。
为Frame设置了友元类snakeNode和movement,能够直接使用私有成员window(修改游戏界面中蛇和食物的位置);
<span style="font-size:14px;">//Frame of the game
class Frame {
public:
friend class snakeNode;
friend class movement;
unsigned width, height;
Frame(): width(30), height(30) {}
void setHeight(unsigned hgt) {
height = hgt;
}
void setWidth(unsigned wid) {
width = wid;
}
void initializeFrame();
void displayFrame();
private:
vector< vector<char> > window;
}frame;</span>
(b) 贪吃蛇节点:采用链表存储贪吃蛇各节点坐标,实际上是一个FIFO结构;
由于游戏中贪吃蛇只有一只,所以直接设了全局变量head和tail,减少调用时的传参。
<span style="font-size:14px;">class snakeNode {
public:
friend class movement;
snakeNode(int ix, int iy): x(ix), y(iy), next(nullptr), prior(nullptr) {}
void addHead(int, int);
void delTail();
private:
int x,

本文介绍了作者使用C++实现贪吃蛇游戏的过程,核心思想是面向对象编程,包括游戏框架、蛇节点和运动三个主要对象。通过全局变量减少参数传递,并利用kbhit()、system("cls")等函数实现游戏交互。文中提到了两个关键改进:避免食物生成在蛇身上,以及检测蛇头与蛇身的碰撞。
最低0.47元/天 解锁文章
2204

被折叠的 条评论
为什么被折叠?



