利用OpenGL/c++编写简单的贪吃蛇游戏(3D)

@TOC

OpenGL贪吃蛇游戏简介

OpenGL初学,在VS利用贪吃蛇做一个小练习。贪吃蛇利用wasd输入控制方向,吃食物进行增长,撞上自己或者边界会GAMEOVER,输入1会重新开始(有上传工程https://download.csdn.net/download/weixin_44562141/12261576)。

说明

  1. wasd控制蛇的移动
  2. 吃掉一个食物会增加一单位长度
  3. 当蛇触碰到自己或者边界,则游戏失败,可选择重新开始(输入1)或者退出程序(其他)
  4. 画的是简易的三维,但没有调用glRotatef和 gluLookAt,可加上

关键代码

//食物类
class Food
{
public:
	int x;
	int y;
	bool Iseat;//食物状态
};斜体样式
//贪吃蛇类,以snake[0].alive记录蛇是否触碰到自己或者边界
class Snake
{
public:
	int n;
	int x;
	int y;
	char ch;
	bool gamestate;
	bool alive;
};
//初始化坐标,节数3,状态,最初运动方向
void initList() 
{
	snake[0].x = 0;
	snake[0].y = 0;
	snake[1].x = 1;
	snake[1].y = 0;
	snake[2].x = 2;
	snake[2].y = 0;
	snake[0].n = 3;
	food->Iseat = false;
	snake[0].alive = true;
	snake[0].ch = 'w';
}


//移动部分主要代码,贪吃蛇运动规律是后一节会移动到前一节的位置
	switch (snake[0].ch)
		{
		case 'w':
			snake[0].y = snake[0].y + 1;
			break;
		case 's':
			snake[0].y = snake[0].y - 1;
			break;
		case 'a':
			snake[0].x = snake[0].x - 1;
			break;
		case 'd':
			snake[0].x = snake[0].x + 1;
			break;
		}
//主程序
int main(int argc, char *argv[])
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
	glutInitWindowPosition(50, 50);
	glutInitWindowSize(800, 800);
	glutCreateWindow("贪吃蛇");
	initList();
	glutDisplayFunc(&RenderScene);
	glutTimerFunc(800, TimeFunc, 0);
	glutMainLoop();
	return 0;
}

流程图

Created with Raphaël 2.2.0 开始 初始化 数据绘制 定时器 蛇移动 是否有键盘输入? 改变方向 Isalive()? 是否重来? 结束 yes no yes no yes no
  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值