C++贪吃蛇的简单实现版

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

近期看完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:
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值