资源简介
设计一个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个文件信息
评论
共有 条评论