www.pudn.com > migongchengxu.rar > Main.cpp


#include "OpenGLCom.h"
#include 
#include "resource.h"
#include "Maze.h"

char mazemap []     ="MazeMap.txt";
char szClassName[]= "MazeWalkerClass";
char szAppTitle[] = "Maze Walker --Demo HeartBlue 2002-5-18";
char szHelpA[]=":Start | :Pause | :Resume | :Exit";
char szHelpB[]=":Speed Up | :Speed down | : Full speed";
RunApp(LPSTR ,int);
int        g_cur_speed=100;
LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);
int Action(LONG fps);
GLubyte* dib_data;
BITMAPINFOHEADER dib_info;
void UseTex();
void  Resize();
CMaze maze;
RunApp(LPSTR CmdLine ,int sw_mode)
{
	maze.LoadMaze(mazemap);
	if(MessageBox(NULL,"是否要工作在全屏模式?","迷宫DEMO",MB_OKCANCEL)==IDCANCEL)
      	CreateNormalApp(sw_mode,0,0,420,420);
	else
		CreateExcApp(sw_mode);
//	CreateExcApp(sw_mode); 
	InitOpenGL();
	glEnable(GL_CULL_FACE);
	UseTex();
//	SetForceFps(g_cur_speed);
	g_AppData.bIsActive=1;
	Resize();
	MainLoop(Action);
	//Release Texture
	delete []dib_data;
	ReleaseGL();
	return 1;
}

void UseTex()
{
	//	glEnable(GL_TEXTURE_2D);
    LoadBmpFromeFile("Stone.BMP",dib_data,dib_info); 
    glTexImage2D(GL_TEXTURE_2D,0,3,
		dib_info.biWidth,
		dib_info.biHeight,0,
		GL_BGR_EXT,GL_UNSIGNED_BYTE,dib_data);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT);
//	glEnable(GL_TEXTURE_2D);
}
void  Resize()
{
    RECT rct;
	GetClientRect(g_AppData.hWnd,&rct);
	int w = rct.right  - rct.left;
	int h = rct.bottom - rct.top ;
	if(w=20)
			      g_cur_speed-=5;
			SetForceFps(g_cur_speed);
			break;
	    case ID_FULL:
 			g_cur_speed=100;
			SetForceFps(0);
			break;
		case ID_ABOUT:
			MessageBox(hWnd,"迷宫搜索Demo\n 用OpenGL加速\n\n   潘李亮 2002-5-18","迷宫搜索Demo",MB_OK);
			break;
		}
		break;
	case WM_KEYDOWN:
		switch(wParam)
		{
		case VK_RETURN:
            maze.LoadMaze(mazemap); 
			maze.SetPause(false); 
			break;
		case VK_ESCAPE:
			DestroyWindow(hWnd); 
			break;
		case VK_F1:
			MessageBox(hWnd,"迷宫搜索Demo\n 用OpenGL加速\n\n   潘李亮 2002-5-18","迷宫搜索Demo",MB_OK);
			break;
		case VK_SHIFT:
            maze.SetPause(true);
			break;
		case VK_CONTROL:
			maze.SetPause(false);
			break;
        case VK_UP:
			if(g_cur_speed<=100)
			      g_cur_speed+=5;
			SetForceFps(g_cur_speed);
			break;
		case VK_DOWN:
           if(g_cur_speed>=20)
			      g_cur_speed-=5;
			SetForceFps(g_cur_speed);
			break;
		case VK_END:
			g_cur_speed=100;
			SetForceFps(0);
			break;
		}
		break;
	case WM_CLOSE:
		DestroyWindow(hWnd);
		break;
	case WM_DESTROY:
        PostQuitMessage(0);
		break;
	default:
		return ::DefWindowProc(hWnd,msg,wParam,lParam); 
	}
	return 1;
	
}