资源简介

设计一个OpenGL 程序,创建一个三维迷宫,支持替身通过一定交互手段在迷宫中漫游。 基本功能包括: 1、迷宫应当至少包含 10 * 10 个Cell,不能过于简单,下图给出一种示例。 2、读取给定的替身模型,加载到场景中。 3、键盘方向键控制替身转向与漫游。 4、有碰撞检测,替身不应当穿墙。 5、支持切换第一视角和第三视角进行观察。 6、迷宫场景中的墙、地面等应贴上纹理。 扩展功能包括(至少选择一个): 1. 同时加入二维辅助地图,替身在三维迷宫探索的同时,在小地图中显示已经探索的区域; 2. 在俯视状态下,可以通过鼠标点选替身需要到达的目的地,通过寻径算法,控制替身自 动到达目的地; 3. 迷宫地图交互编辑功能,例如,可以设计一个二维地图编辑器,根据用户的绘制,拉伸 得到三维迷宫场景; 4. 其他相当难度,可以增加迷宫游戏趣味性的功能(需要通过指导老师认可) 完成一份实验报告,说明你所实现的一个扩展功能。

资源截图

代码片段和文件信息

#include “maze.h“
#define M_PI 3.14159
extern float des1des2;
GLuint Decal_Texture5Decal_Texture4Decal_Texture3Decal_Texture2Decal_Texture1;

int map[12][12] ={
{111111111111}
{101000000011}
{101011110011}
{101000001011}
{100111101011} 
{101000101011}
{101010101011}
{100010101001}
{111100100101}
{100001100101}
{100000000101}
{111111111111}
};

void drawMaze(int model)
{
//绘制地面
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D Decal_Texture1);
glBegin(GL_QUADS);

glTexCoord2i(01);glVertex3f(-100.0f 0 100.0f);
glTexCoord2i(11);glVertex3f(-100.0f 0 -100.0f);
glTexCoord2i(10);glVertex3f(100.0f 0 -100.0f);
glTexCoord2i(00);glVertex3f(100.0f 0 100.0f);


glEnd();
glDisable(GL_TEXTURE_2D);

if(model==2)
{float xz;
//绘制网格
glColor3d(100);
glBegin(GL_LINES);

for(x=-100;x<=100;x+=20){

glVertex3f(x 1 -100);
glVertex3f(x 1 100);
}
for(z=-100;z<=100;z+=20){

glVertex3f(-100 1 z);
glVertex3f(100 1 z);
}
glEnd();
}

//绘制障碍物
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D Decal_Texture2);
glColor3d(111);
int xz;
for(x=1;x<11;x++)
{
for(z=1;z<11;z++)
{
if(map[x][z]==1)
{
glPushMatrix();
glTranslatef(20.0*x-110.010.0f110.0-20.0*z);
//glutSolidCube(20.0);
glBegin(GL_QUADS);
//面一
glTexCoord2i(00);glVertex3f(-10-1010);
glTexCoord2i(01);glVertex3f(-101010);
glTexCoord2i(11);glVertex3f(101010);
glTexCoord2i(10);glVertex3f(10-1010);
//面二
glTexCoord2i(01);glVertex3f(10-1010);
glTexCoord2i(11);glVertex3f(101010);
glTexCoord2i(10);glVertex3f(1010-10);
glTexCoord2i(00);glVertex3f(10-10-10);
//面三
glTexCoord2i(00);glVertex3f(10-10-10);
glTexCoord2i(01);glVertex3f(1010-10);
glTexCoord2i(11);glVertex3f(-1010-10);
glTexCoord2i(10);glVertex3f(-10-10-10);
//面四
glTexCoord2i(00);glVertex3f(-10-10-10);
glTexCoord2i(01);glVertex3f(-1010-10);
glTexCoord2i(11);glVertex3f(-101010);
glTexCoord2i(10);glVertex3f(-10-1010);
//面五
glTexCoord2i(00);glVertex3f(-101010);
glTexCoord2i(01);glVertex3f(-1010-10);
glTexCoord2i(11);glVertex3f(1010-10);
glTexCoord2i(10);glVertex3f(101010);
//面六
glTexCoord2i(00);glVertex3f(-10-1010);
glTexCoord2i(01);glVertex3f(10-1010);
glTexCoord2i(11);glVertex3f(10-10-10);
glTexCoord2i(10);glVertex3f(-10-10-10);
glEnd();
glPopMatrix();
}
}
}

//绘制终点
glColor3d(111);
glPushMatrix();
glTranslatef(9010-90);
glBindTexture(GL_TEXTURE_2D Decal_Texture4);
//glutSolidCube(20.0);
glBegin(GL_QUADS);
//面一
glTexCoord2i(11);glVertex3f(-10-1010);
glTexCoord2i(10);glVer

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2544  2011-05-11 02:47  lab\data\001.tga

     文件    1000044  2011-05-11 02:21  lab\data\01.tga

     文件    1440044  2011-05-11 01:23  lab\data\brick.tga

     文件     196652  2005-10-22 23:34  lab\data\GenericMech.tga

     文件     320236  2005-09-23 12:14  lab\data\knight.md2

     文件       3644  2011-05-11 02:05  lab\data\littlebrick.tga

     文件     261308  1998-07-02 17:54  lab\data\tris.md2

     文件     247740  2005-10-21 10:58  lab\data\WalkMech.md2

     文件     262188  2011-05-11 02:03  lab\data\war3mapmap.tga

     文件       2832  2011-11-14 12:53  lab\ReadMe.txt

     文件       6051  1999-02-23 18:46  lab\test\anorms.h

     文件      19896  2011-05-14 17:06  lab\test\Debug\maze.obj

     文件      40391  2011-05-10 21:44  lab\test\Debug\Md2.obj

     文件     622635  2011-05-15 22:39  lab\test\Debug\test.exe

     文件     889992  2011-05-15 22:39  lab\test\Debug\test.ilk

     文件    2271988  2011-05-15 15:09  lab\test\Debug\test.pch

     文件    1418240  2011-05-15 15:11  lab\test\Debug\test.pdb

     文件      54728  2011-05-15 22:39  lab\test\Debug\TestMd2.obj

     文件     194722  2011-05-08 14:58  lab\test\Debug\tga.obj

     文件      14809  2011-05-14 01:06  lab\test\Debug\to.obj

     文件     263168  2011-05-15 23:59  lab\test\Debug\vc60.idb

     文件     143360  2011-05-15 15:11  lab\test\Debug\vc60.pdb

     文件       8107  2011-05-14 17:06  lab\test\maze.cpp

     文件        203  2011-05-13 18:55  lab\test\maze.h

     文件      24870  2011-05-10 21:44  lab\test\Md2.cpp

     文件       3083  2006-06-19 14:59  lab\test\Md2.h

     文件       4736  2011-05-14 01:20  lab\test\test.dsp

     文件        514  2011-05-08 17:07  lab\test\test.dsw

     文件     107520  2011-05-15 23:59  lab\test\test.ncb

     文件      55808  2011-05-15 23:59  lab\test\test.opt

............此处省略24个文件信息

评论

共有 条评论