| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1985 人关注过本帖, 1 人收藏
标题:[原创]用CV++开发的大型游戏!有原代码和程序下载![1]
只看楼主 加入收藏
zgl2006
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2005-3-12
收藏(1)
 问题点数:0 回复次数:3 
[原创]用CV++开发的大型游戏!有原代码和程序下载![1]

本文件无需安装,可直接使用。 但在编译这些代码之前,必须保证已经为编译器安装了DirectX9.0 SDK(DirectX9.0软件开发包) 或者为编译器加入DirectX9.0 SDK的精简版。不安装完整版而只安装精简版时, 所要做的工作就是为编译器添加一个“头文件包含”目录(Include)和一个“库文件包含”目录(Lib)。 对于Visual C++ 6.0的做法是这样的: 选择菜单中的Tools | Options…命令,打开Options对话框,选择Directories选项卡,在Show Directoris for项分别选择Include files和Library files,然后在目录框中分别加入精简版的头文件目录(Include)和库文件目录(lib)。 要特别注意的是,必须把新添加的目录置于“目录框”的最顶行,否则添加的目录将不起任何作用,因为默认的目录里有旧版本的SDK文件。 运行环境: ·Windows 98以及以上的操作系统 ·编译器最好是Visual C++ 6.0 ·Pentium 166以上处理器 ·光盘驱动器 ·640×480以上的分辨率 ·颜色深度在16位以上

DirectX 9的下载网址为:http://www.microsoft.com/windows/directx/default.aspx?url=/windows/directx/downloads/default.htm 可以下载压缩包!! 以下为“CApplication.cpp” /*------------------------------------------------------ | CApplication.cpp | CApplication类的成员的源代码 | 版权所有 mochsh, 2004 --------------------------------------------------------*/

#include "CApplication.h" #include <windows.h>

/************************************************************ * 函数名: CApplication(...) 属于CApplication类的成员 * 功能: 构造函数 * 参数说明: * bFullScr 是否全屏 * ScrW 客户区的宽度(全屏时就是屏幕的宽度) * ScrH 客户区的高度(全屏时就是屏幕的高度) * 版权所有 mochsh, 2004 *************************************************************/ CApplication::CApplication(int bFullScr, int ScrW, int ScrH) { m_bFullScreen = bFullScr;

//全屏模式 if( bFullScr ) { if( ScrW >= 1024 ) { ScreenW = 1024; ScreenH = 768; } else if( ScrW >= 800 ) { ScreenW = 800; ScreenH = 600; } else { ScreenW = 640; ScreenH = 480; } } //窗口模式 else { ScreenW = ScrW; ScreenH = ScrH; }

bActive = FALSE; hWnd = NULL; Show_Mouse_Cursor= TRUE; Change_Size_Able = FALSE; ClientBKColor = WHITE_BRUSH;

hIcon=LoadIcon(NULL,MAKEINTRESOURCE(IDI_APPLICATION)); hCursor=LoadCursor(NULL,MAKEINTRESOURCE(IDC_ARROW)); hMenu = NULL; }

/************************************************************ * 构造函数重载声明 *************************************************************/ CApplication::CApplication( void ) { m_bFullScreen = FALSE; ScreenW = 640; ScreenH = 480; bActive = FALSE; hWnd = NULL; Show_Mouse_Cursor= TRUE; Change_Size_Able = TRUE; ClientBKColor = WHITE_BRUSH;

hIcon=LoadIcon(NULL,MAKEINTRESOURCE(IDI_APPLICATION)); hCursor=LoadCursor( NULL, MAKEINTRESOURCE(IDC_ARROW)); hMenu = NULL; }

/************************************************************ * 函数名: CreateWin(...) 属于CApplication类的成员 * 功能: 定义并且创建应用程序窗口,显示窗口 * 参数说明: * WinProc 窗口的消息处理函数名 * hInstance 窗口实例句柄 * WindowName 窗口的名字和注册名字 * winStyle 窗口的类型 * 版权所有 mochsh, 2004 *************************************************************/ HWND CApplication::CreateWin( WNDPROC WinProc, HINSTANCE hInstance, TCHAR* WindowName, DWORD winStyle) { WNDCLASS wc; wc.hInstance = hInstance; wc.lpszClassName = WindowName; wc.lpfnWndProc = WinProc; wc.style = CS_HREDRAW | CS_VREDRAW; wc.hIcon = hIcon; wc.hCursor = hCursor; wc.lpszMenuName = NULL; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hbrBackground = ( HBRUSH )GetStockObject( ClientBKColor );

if( !RegisterClass( &wc ) ) { MessageBox( NULL, "注册窗口类出错!","Error!", MB_OK) ; return FALSE; }

//全屏模式 if( m_bFullScreen == TRUE ) { hWnd = CreateWindow( WindowName, WindowName, WS_POPUP, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), NULL, hMenu, hInstance, NULL ); if( !hWnd ) { MessageBox( NULL, "创建窗口出错!","Error!", MB_OK) ; return FALSE; } } else{//窗口模式 hWnd = CreateWindowEx( 0, WindowName, WindowName, winStyle, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, hMenu, hInstance, NULL ); if( !hWnd ) { MessageBox( NULL, "创建窗口出错!","Error!", MB_OK) ; return FALSE; }

//获取系统屏幕大小 int Win_W=GetSystemMetrics(SM_CXSCREEN); int Win_H=GetSystemMetrics(SM_CYSCREEN); //求出窗口居于屏幕中央时的左上角位置 int x1=(Win_W-ScreenW)/2; int y1=(Win_H-ScreenH)/2; //根据上面的值,调整窗口的位置 SetWindowPos( hWnd, HWND_NOTOPMOST, x1, y1, ScreenW, ScreenH, SWP_HIDEWINDOW ); //获取客户区的相对于屏幕左上角的位置 GetClientRect( hWnd, &rectWin ); ClientToScreen( hWnd, (LPPOINT)&rectWin ); ClientToScreen( hWnd, (LPPOINT)&rectWin + 1 ); }

ShowWindow( hWnd, SW_NORMAL ); UpdateWindow( hWnd );

return hWnd; }

/************************************************************ * 函数名: MsgProc(...) 属于CApplication类的成员 * 功能: 处理主窗口消息 * 参数说明: * hWnd 表示对应窗口的句柄。 * uMsg 传送给消息处理函数的消息。 * wParam和lParam 的值与对应的消息有关。 * 版权所有 mochsh, 2004 *************************************************************/ LRESULT CApplication::MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam ) { switch( uMsg ) { //窗口激活状态消息的处理 case WM_ACTIVATEAPP: bActive = (BOOL)wParam; break; //鼠标指针移动消息的处理 case WM_SETCURSOR: if( !Show_Mouse_Cursor ){ SetCursor(NULL); return true; } break; //窗口大小改变消息的处理 case WM_SIZE: if( Change_Size_Able ){ if( m_bFullScreen==0 ){ //获取窗口客户区的屏幕坐标系位置 GetClientRect( hWnd, &rectWin ); ClientToScreen( hWnd, (LPPOINT)&rectWin ); ClientToScreen( hWnd, (LPPOINT)&rectWin + 1 ); } } break; //窗口位置改变消息的处理 case WM_MOVE: if( m_bFullScreen==0 ){ //获取窗口客户区的屏幕坐标系位置 GetClientRect( hWnd, &rectWin ); ClientToScreen( hWnd, (LPPOINT)&rectWin ); ClientToScreen( hWnd, (LPPOINT)&rectWin + 1 ); } break; //窗口最大尺寸和最小尺寸消息的处理 case WM_GETMINMAXINF //不可以改变窗口的大小 if( !Change_Size_Able ) { PMINMAXINFO pMM = ( PMINMAXINFO ) lParam;

//获取横向、纵向边框的宽度和标题栏的高度 int FrameW = GetSystemMetrics( SM_CXSIZEFRAME ); int FrameH = GetSystemMetrics( SM_CYSIZEFRAME ); int CapH = GetSystemMetrics( SM_CYCAPTION );

//把窗口能被改变到的最小尺寸改为以前的值 pMM->ptMinTrackSize.x = ScreenW + FrameW*2; pMM->ptMinTrackSize.y = ScreenH + FrameH*2 + CapH; //将窗口能被改变到的最大尺寸设为与最小尺寸相同的值 pMM->ptMaxTrackSize.x = pMM->ptMinTrackSize.x; pMM->ptMaxTrackSize.y = pMM->ptMinTrackSize.y; } else { PMINMAXINFO pMM = ( PMINMAXINFO ) lParam;

//限制窗口能被改变到的最小尺寸 pMM->ptMinTrackSize.x = 100; pMM->ptMinTrackSize.y = 150; } break; //关闭窗口消息的处理 case WM_CLOSE: DestroyWindow( hWnd ); break; //销毁窗口消息的处理 case WM_DESTROY: PostQuitMessage( 0 ); break; }

//调用缺省消息处理过程 return DefWindowProc(hWnd, uMsg, wParam, lParam); }

/********************************************************* * 函数名: RunDefault(...) 属于CApplication类的成员 * 功能: 主窗口消息循环 * 版权所有 mochsh, 2004 **********************************************************/ int CApplication::RunDefault( void ) { MSG msg; msg.message = WM_NULL;

while(msg.message != WM_QUIT) { if( GetMessage(&msg,NULL,0,0) ) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int)msg.wParam; } ---------------------------------------------------------- 以下为“CApplication.h” ---------------------------------------------------------- /*-------------------------------------------------------- | Application.h | Application类的相关处理功能的声明 | (c) mochsh ----------------------------------------------------------*/

#include <windows.h>

class CApplication { protected: //是否是全屏模式 int m_bFullScreen; //窗口客户区宽度 int ScreenW; //窗口客户区高度 int ScreenH; //窗口背景画刷 int ClientBKColor; //是否可以改变窗口大小的属性变量 int Change_Size_Able; //是否使用鼠标指针 int Show_Mouse_Cursor; //窗口的激活状态 BOOL bActive; //窗口客户区的相对于屏幕左上角的位置 RECT rectWin;

//窗口图标 HICON hIcon; //窗口光标 HICON hCursor; //窗口菜单 HMENU hMenu; //窗口句柄 HWND hWnd;

public: //构造函数 CApplication( void ); CApplication( int bFullScr, int ScrW, int ScrH );

//设置窗口的属性函数 void isFullScreen( BOOL bFScr ){m_bFullScreen = bFScr;} void SetScreenW( int ScrW ) {ScreenW = ScrW;} void SetScreenH( int ScrH ) {ScreenH = ScrH;} void ChangeSizeAble(int ChAble){Change_Size_Able = ChAble;} void ShowMouseCursor(int M) {Show_Mouse_Cursor = M;} void SetClientBKColor(int C) {ClientBKColor = C;} //设置应用程序的图标 void Set_hIcon( HINSTANCE hInstance, WORD Icon ) { hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(Icon)); } //设置应用程序的光标 void Set_hCursor( HINSTANCE hInstance, WORD Cursor ) { hCursor=LoadCursor(hInstance,MAKEINTRESOURCE(Cursor)); } //设置应用程序的菜单 void Set_hMenu( HINSTANCE hInstance, WORD Menu ) { hMenu = LoadMenu(hInstance,MAKEINTRESOURCE(Menu)); }

//创建窗口 HWND CreateWin( WNDPROC WinProc, HINSTANCE hInstance, TCHAR* WindowName, DWORD winStyle);

//处理主窗口消息 LRESULT MsgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );

//默认消息循环机制 int RunDefault(void);

// 外部调用成员变量 int Get_m_bFullScreen(void) {return m_bFullScreen;} int Get_ScreenW(void) {return ScreenW;} int Get_ScreenH(void) {return ScreenH;} int Get_ClientBKColor(void) {return ClientBKColor;} int Get_Change_Size_Able(void) {return Change_Size_Able;} int Get_Show_Mouse_Cursor(void){return Show_Mouse_Cursor;} BOOL Get_bActive(void) {return bActive;} RECT Get_rectWin(void) {return rectWin;} HICON Get_hIcon(void) {return hIcon;} HICON Get_hCursor(void) {return hCursor;} HMENU Get_hMenu(void) {return hMenu;} HWND Get_hWnd(void) {return hWnd;} };

KyjHS5e5.rar (3.56 KB) [原创]用CV++开发的大型游戏!有原代码和程序下载![1]

搜索更多相关主题的帖子: 游戏 SDK 代码 
2005-03-18 20:06
mochsh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-4-8
收藏
得分:0 
呵呵,楼主,我的代码怎么会出现在这......

个人主页:http://mochsh.185.cc
2005-04-08 22:02
mochsh
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-4-8
收藏
得分:0 
建议大家买书吧,全部代码以及详细的说明都在《Windows游戏编程》里,清华大学出版社

个人主页:http://mochsh.185.cc
2005-04-08 22:04
zhou
Rank: 1
等 级:禁止发言
帖 子:429
专家分:0
注 册:2006-6-16
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-03-30 17:44
快速回复:[原创]用CV++开发的大型游戏!有原代码和程序下载![1]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.035559 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved