📄 rpgmain.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 + -