PAOGD个人作业4-利用OpenGL设计贪吃蛇游戏

本文档介绍了使用OpenGL、GLFW和GLAD开发3D贪吃蛇游戏的过程。主要内容包括游戏框架搭建,3D精灵加载和渲染,以及蛇的控制。玩家通过WASD键控制蛇移动,游戏规则是避免碰到自身或障碍物,吃到食物会增长。实验中遇到了模型加载和库冲突的问题,以及蛇身体变形和环境限制的挑战。
摘要由CSDN通过智能技术生成

任务介绍

  • 贪吃蛇游戏:玩家控制贪吃蛇在游戏区域里驰骋,避免碰到自己或障碍物,尽可能地吃更多的食物以生长!

游戏玩法:

  • WASD控制蛇的移动
  • 游戏开始,每隔一定时间会在地图空闲位置刷新一个食物,蛇触碰到食物后食物消失,蛇会增加一个单位的长度
  • 当蛇触碰到自己或者障碍物,则游戏失败
  • 当蛇接触到地图边界,蛇会在地图另一端重新进入地图

开发环境

  • OpenGL3
  • GLFW
  • GLAD

Tips 一个简单的贪吃蛇游戏demo需要包括(代码以教程breakout为例)

  1. 主程序:程序窗口管理、按键响应、游戏对象管理、状态传递(维护程序状态)
    在这里插入图片描述
  2. 精灵类:维护精灵状态,提供渲染接口
    在这里插入图片描述
  3. 工具类:管理着色器、纹理的加载(也有人习惯把这部分代码耦合到精灵类中!)
    在这里插入图片描述
  4. 游戏类:维护游戏状态,提供更新状态的接口供主程序调用,进行碰撞检测等
    在这里插入图片描述

虽然一个完整游戏包含的内容远不止上面提到的四点,实现了这些内容,游戏的主体部分就大致完成了

要求

  1. 完成贪吃蛇游戏的框架搭建(60%)
  2. 完成蛇以及食物的 3D 精灵加载和渲染,其中模型可以用简单的纯色几何模型实现如立方体、球体;或者网上下载合适的3D模型如Apple-PolySnake-Poly(20%)
  3. 实现蛇的控制(20%)
参考资料
  1. OpenGL游戏-框架设计
  2. OpenGL游戏-精灵渲染
  3. OpenGL游戏-碰撞检测
  4. OpenGL模型创建
  5. Google Poly-3D模型库

实现内容

1. 完成贪吃蛇游戏的框架搭建

程序窗口管理、按键响应、游戏对象管理、状态传递

void resize(int w, int h) {
    
	if (h == 0)
		h = 1;
	float ratio = w * 1.0f / h;
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glViewport(0, 0, w, h);
	gluPerspective(50, ratio, 1, 200);
	glMatrixMode(GL_MODELVIEW);
}

void SpecialKeyEvents(int key, int x, int y) {
   
	switch (key) {
   
	case GLUT_KEY_LEFT:
		snake->move(D_LEFT);
		break;
	case GLUT_KEY_RIGHT:
		snake->move(D_RIGHT);
		break;
	case GLUT_KEY_UP:
		snake->move(D_UP);
		break;
	case GLUT_KEY_DOWN:
		snake->move(D_DOWN);
		break;
	}
}

void KeyEvents(unsigned char key, int x, int y) {
   
	switch (key) {
   
	case 27:
		exit(0);
		break;
	case 'w':
		camY *= 1.2;
		break;
	case 's':
		camY *= 0.8;
		break;
	case 'a':
		camX *= 1.2;
		break;
	case 'd':
		camX *= 0.8;
		break;
	case 'q':
		camZ *= 1.2;
		break;
	case 'e':
		camZ *= 0.8;
		break;
	}
	if (key <= '9')
		cam[key-'0'] += 10;
}

void initGL(void) {
   
	glShadeModel(GL_SMOOTH);
	glEnable(GL_DEPTH_TEST);
	glLightfv(GL_LIGHT1, GL_AMBIENT, lightAmbient);
	glLightfv(GL_LIGHT1, GL_DIFFUSE, lightDiffuse);
	glLightfv(GL_LIGHT1, G
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值