横版闯关类型游戏VC


第五个作品 这次使用类把角色封装起来,便于实行多个敌人的产生,原本主角也应该那样做的,只是刚开始的时候没有想好,没做成,所以代码有点繁琐,在内存处理上也没有做得很好,因为没有学到优化的方式,所以载入时间有点长,稍等十几秒应该就载入成功了,敌人AI也是自己构思出来的,所以可能比较简单,希望能对大家有帮助。 by巅锋
资源截图
代码片段和文件信息
/*************************************
游戏引擎源文件 GameEngine.cpp
*************************************/



#include “GameEngine.h“

/* 导入游戏引擎中需要用到的头文件和相关库文件 */
#include “winuser.h“
#include “mmsystem.h“
#include “wingdi.h“

#pragma   comment(lib“user32.lib“)
#pragma   comment(lib“winmm.lib“)
#pragma   comment(lib“gdi32.lib“)




/* 初始化游戏引擎静态指针 */
GameEngine * GameEngine::m_pGameEngine=NULL;

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/* 游戏引擎构造函数 */
GameEngine::GameEngine(HINSTANCE hInstanceLPTSTR szWindowClassLPTSTR sztitleWORD wIconWORD wSmallIconBOOL bFullScreenint nColorbitint nWidthint nHeight)
{
m_pGameEngine=this; //将当前实例赋给静态指针m_pGameEngine
m_hInstance=hInstance; //设置引擎实例为当前程序实例句柄

lstrcpy(m_szWindowClassszWindowClass); //将窗口类注册名称赋给_szWindowClass
lstrcpy(m_sztitlesztitle); //将标题赋给m_sztitle

/* 设置屏幕模式和大小 */
m_bFullScreen=bFullScreen;
m_nColorbit=nColorbit;
m_nWidth=nWidth;
m_nHeight=nHeight;

/*设置图标和光标*/
m_wIcon=wIcon;
m_wSmallIcon=wSmallIcon;

/* 记录游戏开始时间和下次循环时间 */
m_lStartTime=timeGetTime();
m_lNextGameTick=m_lStartTime;
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/* 游戏引擎析构函数 */
GameEngine::~GameEngine() {   }

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

/* 创建游戏窗口 */
BOOL GameEngine::CreateGameWindow()
{
WNDCLASSEX wcApp; //声明窗口类
HWND hWnd=NULL; //声明程序主窗口句柄

int nPosXnPosYnWndWidthnWndHeight; //声明窗口位置和大小变量
DWORD dwWinstyle; //声明窗口风格变量
wcApp.cbSize=sizeof(wcApp);

//给窗口属性赋值
wcApp.lpszClassName=m_szWindowClass; //设置窗口类名
wcApp.style=CS_HREDRAW; //定义窗口风格
wcApp.lpfnWndProc=WndProc; //指定消息处理函数
wcApp.hInstance=m_hInstance; //指定义窗口应用程序的句柄
wcApp.cbWndExtra=0;
wcApp.cbClsExtra=0;
//加载程序图标(大)
wcApp.hIconSm=LoadIcon(m_hInstance MAKEINTRESOURCE(m_wIcon));
//加载程序图标(小)
wcApp.hIcon=LoadIcon(m_hInstance MAKEINTRESOURCE(m_wSmallIcon));
wcApp.hCursor=LoadCursor(NULLIDC_ARROW); //加载鼠标样式
wcApp.hbrBackground=(HBRUSH)(COLOR_WINDOW); //设置窗口背景色
wcApp.lpszMenuName=NULL; //设置窗口没有菜单

RegisterClassEx(&wcApp); //注册窗口类

/*使用DEVMODE结构设置屏幕显示模式*/
DEVMODE DevMode;
ZeroMemory(&DevMode sizeof(DevMode)); //将结构DevMode的内存清零
DevMode.dmSize=sizeof(DevMode); //设置DevMode存储空间以存储屏幕属性数据

//用当前屏幕显示模式设置填充DevMode
EnumDisplaySettings(NULLENUM_CURRENT_SETTINGS&DevMode);

BOOL bDisplayChange=FALSE; //标识屏幕显示模式是否改变

//如果屏幕显示模式位数与游戏不同
if( DevMode.dmBitsPerPel!=(unsigned long)m_nColorbit)
{
DevMode.dmBitsPerPel=m_nColorbit; //设置显示模式位数
bDisplayChange=TRUE;
}

//如果全屏状态下的屏幕尺寸与窗口不同;或屏幕尺寸小于窗口都需要重设显示模式
if((m_bFullScreen && m_nWidth!=GetSystemMetrics(SM_CXSCREEN))
|| m_nWidth>GetSystemMetrics(SM_CXSCREEN))  
{
DevMode.dmPelsWidth=m_n

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-03-30 14:48  5GoFight
     文件        2238  2001-04-17 18:13  5GoFightArrow.cur
     目录           0  2013-03-23 13:18  5GoFightDebug
     文件       27302  2013-03-23 13:18  5GoFightDebugGameEngine.obj
     文件           0  2013-03-23 13:18  5GoFightDebugGameEngine.sbr
     文件       21876  2013-03-23 13:18  5GoFightDebugGameMusic.obj
     文件           0  2013-03-23 13:18  5GoFightDebugGameMusic.sbr
     文件       37786  2013-03-23 13:18  5GoFightDebugGamePhysics.obj
     文件           0  2013-03-23 13:18  5GoFightDebugGamePhysics.sbr
     文件        1301  2013-03-18 21:02  5GoFightDebugGlobal.obj
     文件           0  2013-03-18 21:02  5GoFightDebugGlobal.sbr
     文件     2139136  2013-03-23 13:18  5GoFightDebugGoFight.bsc
     文件      307263  2013-03-23 13:18  5GoFightDebugGoFight.exe
     文件      363020  2013-03-23 13:18  5GoFightDebugGoFight.ilk
     文件     5732524  2013-03-23 13:18  5GoFightDebugGoFight.pch
     文件      574464  2013-03-23 13:18  5GoFightDebugGoFight.pdb
     文件        6684  2013-03-23 13:18  5GoFightDebug
esource.res
     文件       67936  2013-03-23 13:18  5GoFightDebugRobotAI.obj
     文件           0  2013-03-23 13:18  5GoFightDebugRobotAI.sbr
     文件       44661  2013-03-23 13:18  5GoFightDebugSprite.obj
     文件           0  2013-03-23 13:18  5GoFightDebugSprite.sbr
     文件       51658  2013-03-23 13:18  5GoFightDebugSpriteManage.obj
     文件           0  2013-03-23 13:18  5GoFightDebugSpriteManage.sbr
     文件      197632  2013-03-23 13:18  5GoFightDebugvc60.idb
     文件      118784  2013-03-23 13:18  5GoFightDebugvc60.pdb
     文件       98775  2013-03-23 13:18  5GoFightDebugWinapp.obj
     文件           0  2013-03-23 13:18  5GoFightDebugWinapp.sbr
     文件        9498  2013-03-09 21:34  5GoFightGameEngine.cpp
     文件        4217  2013-03-08 16:12  5GoFightGameEngine.h
     文件        4970  2008-09-28 10:44  5GoFightGameMusic.cpp
     文件        1091  2008-09-28 10:33  5GoFightGameMusic.h
............此处省略62个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)