⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rpgmain.cpp

📁 一个平面RPG的游戏demo,使用directx
💻 CPP
字号:
#include "RpgMain.h"

char *menu[6]={"状 态","物 品","动 作","读 盘","存 盘","退 出"};

int SysStatus=Normal;
int CurrentItem=1;

int LastBullet=0;

HUMAN *Human[MaxHuman];
MAP *Map[MaxMap];
BULLET *Bullet[MaxBullet];

RECT r;

HWND hwnd;
bool bActive;

int GameOver=0;
int temp=0;
int count=0;

LPDIRECTDRAW lpDD;
LPDIRECTDRAWSURFACE lpDDSPrimary; 
LPDIRECTDRAWSURFACE lpDDSMap;
LPDIRECTDRAWSURFACE lpDDSBuffer;
LPDIRECTDRAWSURFACE lpDDSHuman;
LPDIRECTDRAWSURFACE lpDDSSprite;
LPDIRECTDRAWSURFACE lpDDSOver;
LPDIRECTDRAWSURFACE lpDDSBox;
LPDIRECTDRAWSURFACE lpDDSBar;
LPDIRECTDRAWSURFACE lpDDSThing;
LPDIRECTDRAWSURFACE lpDDSPanel;
LPDIRECTDRAWSURFACE lpDDSMouse;

int PASCAL WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
	MSG msg;
	if ( !InitWindow( hInstance, nCmdShow ) )
	return FALSE;

	InitGame();
	if (!InitDDraw())
		Quit();
	InitDDS();
	StartGame();
	while(1)
		{
			if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
			{
				TranslateMessage(&msg); 
				DispatchMessage(&msg);
			}
			else if(bActive)
			{
				ShowTi();
				ShowNei();
				ShowHealth();
				RefreshAll();
			}
		}
	return msg.wParam;
}

static BOOL InitWindow( HINSTANCE hInstance, int nCmdShow )
{
	WNDCLASS wc; 
	wc.style = NULL;
	wc.lpfnWndProc = (WNDPROC)WinProc;
	wc.cbClsExtra = 0;
	wc.cbWndExtra = 0;
	wc.hInstance = hInstance;
	wc.hIcon = NULL;
	wc.hCursor = NULL;
	wc.hbrBackground = NULL;
	wc.lpszMenuName = NULL;
	wc.lpszClassName = "RpgDemo";
	RegisterClass(&wc);
	hwnd = CreateWindow("RpgDemo","Rpg Demo 0.090",WS_POPUP|WS_MAXIMIZE,0,0,GetSystemMetrics( SM_CXSCREEN ),GetSystemMetrics( SM_CYSCREEN ),NULL,NULL,hInstance,NULL);
	if( !hwnd ) return FALSE;
	ShowWindow(hwnd,nCmdShow);
	UpdateWindow(hwnd);
	return TRUE;
}

LRESULT CALLBACK WinProc( HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam )
{
	switch(message)
	{
	    case WM_ACTIVATEAPP:
		    bActive = wParam;
			break;
		case WM_SETCURSOR:
			SetCursor(NULL);
			return TRUE;
		case WM_KEYDOWN:
			switch(wParam)
			{
			case VK_ESCAPE:
				if (GameOver==1)
				{
					Quit();
				}
				if (SysStatus==Menu)
				{
					MakeRect(284,164,356,316);
					CleanRect(lpDDSOver);
					CurrentItem=1;
					SysStatus=Normal;
				}
				else
					if ((SysStatus==Normal)&&(Human[Boy]->status==Free))
					{
						SysStatus=Menu;
						ShowMenu();
					}
				break;
			case VK_UP:
				if (SysStatus==Menu)
					MenuChoice(up);
				if (SysStatus==Normal)
				{
					Human[Boy]->Move(up);
				}
				break;
			case VK_DOWN:
				if (SysStatus==Menu)
					MenuChoice(down);
				if (SysStatus==Normal)
				{
					Human[Boy]->Move(down);
				}
				break;
			case VK_LEFT:
				if (SysStatus==Menu)
					MenuChoice(left);
				if (SysStatus==Normal)
				{
					Human[Boy]->Move(left);
				}
				break;
			case VK_RIGHT:
				if (SysStatus==Menu)
					MenuChoice(right);
				if (SysStatus==Normal)
				{
					Human[Boy]->Move(right);
				}
				break;
			case VK_SPACE:
				if (SysStatus==Menu)
					MenuSelect();
				if (SysStatus==Normal)
				{
					Human[Boy]->Speak();
				}
				break;
			case VK_CONTROL:
				Human[Boy]->Fight();
				break;
			case VK_TAB:
				if (Human[Boy]->weapon==Missile)
				{
					Human[Boy]->weapon=Hand;
					DrawRGBBox(491,437,36,36,1,1);
					DrawRGBBox(529,437,36,36,1,0);
				}
				else 
					if (Human[Boy]->weapon==Hand)
					{
						Human[Boy]->weapon=Missile;
						DrawRGBBox(529,437,36,36,1,1);
						DrawRGBBox(491,437,36,36,1,0);
					}
				break;
			case 0x31:
				Human[Boy]->UseThing(0);
				break;
			case 0x32:
				Human[Boy]->UseThing(1);
				break;
			case 0x33:
				Human[Boy]->UseThing(2);
				break;
			case 0x34:
				Human[Boy]->UseThing(3);
				break;
			case 0x35:
				Human[Boy]->UseThing(4);
				break;
			case 0x36:
				Human[Boy]->UseThing(5);
				break;
			case 0x37:
				Human[Boy]->UseThing(6);
				break;
			case 0x38:
				Human[Boy]->UseThing(7);
				break;
			}
			break;
	}
return DefWindowProc(hWnd, message, wParam, lParam);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -