C++ vector容器 贪吃蛇小游戏

本文介绍了如何使用C++的vector容器来实现贪吃蛇小游戏。在Windows环境下使用VS2019进行编译,游戏规则是控制蛇吃食物,得分并增长,撞墙或自身则游戏结束。通过vector的添加和删除操作处理蛇的移动和增长。程序中可能因_kbhit()和_getch()函数在其他编译器上产生问题,解决方案是去掉前导下划线。作者欢迎对程序的改进意见。
摘要由CSDN通过智能技术生成
C++ vector容器 实现贪吃蛇

使用vector容器实现贪吃蛇简化了很多繁琐操作,且相比之前我的代码已经做到了尽量的简洁

技术环节:
编译环境:windows VS2019

需求:
控制贪吃蛇吃食物,吃到一个食物蛇身变长一节,得分增加,撞墙或撞自己则游戏结束。

思路:
创建一个vector容器,容器内存储蛇的每节身体的结构变量,结构变量中保存蛇身体的xy坐标,通过使用vector成员方法不断添加和删除容器中的数据,实现蛇坐标的规律移动,吃到食物等时执行对应操作。

在代码注释中标注了每一步是怎么实现的。

注意:
由于编译器原因程序中_kbhit()和_getch()函数可能在其他编译器上编译会出现错误,解决办法是去掉函数前面的“_”。

运行效果:
运行效果

#include <iostream>
#include <vector>
#include <windows.h>
#include <conio.h>
#include <ctime>

using namespace std;



void gotoxy(int x, int y);	//光标定位

//食物类
class Food
{
   
private:
	int m_x;
	int m_y;
public:
	void randfood()			//随机产生一个食物
	{
   
		srand((int)time(NULL));
	L1:
		m_x = rand() % (85) + 2;
		m_y = rand() % (25) + 2;

		if (m_x % 2)		//如果食物的x坐标不是偶数则重新确定食物的坐标
			goto L1;

		gotoxy(m_x, m_y);	//在确认好的位置输出食物
		cout << "★";
	}
	int getFoodm_x()		//返回食物的x坐标
	{
   
		return m_x;
	}
	int getFoodm_y()		//返回食物的y坐标
	{
   
		return m_y;
	}
};

//蛇类
class Snake
{
   
private:
	//蛇坐标结构
	struct  Snakecoor
	{
   
		int x;
		int y;
	};
	//蛇容器
	vector<Snakecoor> snakecoor;


	//判断和改变方向函数
	void degdir(Snakecoor& nexthead)	//参数:新蛇头结构变量、蛇坐标容器
	{
   
		static char key = 'd'
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值