#include "Game.h"
#include "stdio.h"
#include <fstream>
HBITMAP DrawDlgToBmp(HDC hDC,Sprite *pSprDlgBG,LPTSTR szName,LPTSTR szTalk)
{
RECT rTalk={20,30,590,120};
RECT rName={20,10,590,30};
HDC hMemDC=CreateCompatibleDC(hDC);
HBITMAP hbmTmp=CreateCompatibleBitmap(hDC,pSprDlgBG->GetWidth(),pSprDlgBG->GetHeight());
HBITMAP hbmOld=(HBITMAP)SelectObject(hMemDC,hbmTmp);
pSprDlgBG->Draw(hMemDC,0,0);
SetBkMode(hMemDC,TRANSPARENT);
SetTextColor(hMemDC,RGB(255,255,0));
DrawText(hMemDC,szTalk,-1,&rTalk,DT_LEFT);
DrawText(hMemDC,szName,-1,&rName,DT_LEFT);
SelectObject(hMemDC,hbmOld);
DeleteDC(hMemDC);
return hbmTmp;
}
HBITMAP DrawMoneyToBmp(HDC hDC,Sprite *pSprDlgBG,int money)
{
RECT rName={20,20,150,50};
char sz1Command[50];
sprintf(sz1Command,"$:%d",money);
if(GameView==7)
sprintf(sz1Command,"%d",money);
HDC hMemDC=CreateCompatibleDC(hDC);
HBITMAP hbmTmp=CreateCompatibleBitmap(hDC,pSprDlgBG->GetWidth(),pSprDlgBG->GetHeight());
HBITMAP hbmOld=(HBITMAP)SelectObject(hMemDC,hbmTmp);
pSprDlgBG->Draw(hMemDC,0,0);
SetBkMode(hMemDC,TRANSPARENT);
SetTextColor(hMemDC,RGB(0,0,0));
DrawText(hMemDC,sz1Command,-1,&rName,DT_LEFT);
SelectObject(hMemDC,hbmOld);
DeleteDC(hMemDC);
return hbmTmp;
}
HBITMAP DrawBattleToBmp(HDC hDC,Sprite *pSprDlgBG,int HP,int FB)
{
RECT rName={10,10,150,40};
char sz1Command[50];
sprintf(sz1Command,"HP:%d FB:%d",HP,FB);
HDC hMemDC=CreateCompatibleDC(hDC);
HBITMAP hbmTmp=CreateCompatibleBitmap(hDC,pSprDlgBG->GetWidth(),pSprDlgBG->GetHeight());
HBITMAP hbmOld=(HBITMAP)SelectObject(hMemDC,hbmTmp);
pSprDlgBG->Draw(hMemDC,0,0);
SetBkMode(hMemDC,TRANSPARENT);
SetTextColor(hMemDC,RGB(0,0,0));
DrawText(hMemDC,sz1Command,-1,&rName,DT_LEFT);
SelectObject(hMemDC,hbmOld);
DeleteDC(hMemDC);
return hbmTmp;
}
HBITMAP DrawRoleToBmp(HDC hDC,Sprite *pSprDlgBG)
{
HDC hMemDC=CreateCompatibleDC(hDC);
HBITMAP hbmTmp=CreateCompatibleBitmap(hDC,pSprDlgBG->GetWidth(),pSprDlgBG->GetHeight());
HBITMAP hbmOld=(HBITMAP)SelectObject(hMemDC,hbmTmp);
pSprDlgBG->Draw(hMemDC,0,0);
SetBkMode(hMemDC,TRANSPARENT);
SelectObject(hMemDC,hbmOld);
DeleteDC(hMemDC);
return hbmTmp;
}
BOOL GameInitialize(HINSTANCE hInstance)
{
g_pGE=new GameEngine(hInstance,TEXT("Game"),TEXT("Game"),IDI_ICON1,IDI_ICON2,FALSE,32,800,600);
if(g_pGE==NULL)
return false;
g_pGE->SetFrameDelay(15);
g_pGE->SetPause(false);
if(!g_pGE->CreateGameWindow())
{
MessageBox(NULL,"初始化失败,即将关闭游戏","初始化失败",MB_OK);
return FALSE;
}
return true;
}
void GameEnd()
{
Sprm.Release(TRUE);
GameSprm.Release(TRUE);
delete Game_Music;
delete Game_Voice;
delete g_pGE;
}
BOOL GameWindowClose(HWND hWnd)
{
if(MessageBox(g_pGE->GetWindow(),"你确定要退出游戏吗?","退出游戏",MB_YESNO)==IDYES)
return TRUE;
return FALSE;
}
void GameCloseAll(HWND hWnd)
{
char sz1Command[50];
sprintf(sz1Command,"resource\\Close%d.bmp",Game_Close_ID);
Game_Close->SetBitmap(sz1Command);
if(Game_Close->GetVisible())
Game_Close->SetDrawInfo(200,200,TRUE,RGB(255,255,255));
}
void GameChoice(HWND hWnd,int x,int y,BOOL bVisible)
{
char sz1Command[50];
sprintf(sz1Command,"resource\\GameBottom%d.bmp",GameChoice_ID);
GameBottom->SetBitmap(sz1Command);
if(bVisible)
{
GameBottom->SetVisible(TRUE);
GameBottom->SetDrawInfo(x,y,TRUE);
}
GamePoint=101;
}
void GamePause(HWND hWnd)
{
g_pGE->SetPause(TRUE);
g_pGE->SetKeytVisible(FALSE);
}
void KeyPause(HWND hWnd){
g_pGE->SetKeytVisible(TRUE);}
void GameActive(HWND hWnd)
{
long nTick=timeGetTime();
g_pGE->SetNextGameTick(nTick);
g_pGE->SetPause(FALSE);
g_pGE->SetKeytVisible(TRUE);
}
void GamePaint(HDC hDC)
{
if(!GameInitScene)
LoadScene->Draw(hDC,0,0);
else
{
Sprm.Draw(hDC);
GameSprm.Draw(hDC);
}
}
void GameStart(HWND hWnd)
{
long lCur=(long)LoadCursor(g_pGE->GetInstance(),MAKEINTRESOURCE(IDC_CURSOR1));
SetClassLong(hWnd,GCL_HCURSOR,lCur);
LoadScene=new Sprite();
Game_Close=new Sprite();
LoadScene->SetBitmap("resource\\loadground.bmp");
GameSprm.AddSprite(LoadScene,0);
GameSprm.AddSprite(Game_Close,100);
GamePoint=0;
GameView=0;
GameView_T=0;
GamePoint_T=0;
NumJ=0;
NumEvent=0;
Friend=0;
bGameChoice=FALSE;
Game_Close_ID=2;
GameChoice_ID=1;
GameTrigger=0;
Game_Close->SetVisible(FALSE);
GameInitScene=FALSE;
InitGame_Start(hWnd);
}
void GameAction(HWND hWnd)
{
if(GameInitScene)
{
GameCloseAll(hWnd);
switch(GameView)
{
case 0:
if(Game_Start(hWnd))
{
GameInitScene=FALSE;
if(GameView==1)
InitGame_Load(hWnd);
if(GameView==2)
InitGame_Begin(hWnd);
}
break;
case 1:
if(Game_Load(hWnd))
{
}
break;
case 2:
if(Game_Begin(hWnd))
{
GameInitScene=FALSE;
InitGame_Scene1Map(hWnd);
}
break;
case 3:
if(Game_Scene1Map(hWnd))
{
GameInitScene=FALSE;
if(GameView==4)
InitGame_Beer(hWnd);
if(GameView==5)
InitGame_WeaponShop(hWnd);
if(GameView==6)
InitGame_PassScene(hWnd);
}
break;
case 4:
if(Game_Beer(hWnd))
{
GameInitScene=FALSE;
InitGame_Scene1Map(hWnd);
}
break;
case 5:
if(Game_WeaponShop(hWnd))
{
GameInitScene=FALSE;
InitGame_Scene1Map(hWnd);
}
break;
case 6:
if(Game_PassScene(hWnd))
{
GameInitScene=FALSE;
InitGame_Battle(hWnd);
}
break;
case 7:
if(Game_Battle(hWnd))
{
GameInitScene=FALSE;
InitGame_Finally(hWnd);
}
break;
case 8:
if(Game_Finally(hWnd))
{
GameInitScene=FALSE;
NumJ=0;
GameView=0;
GameView_T=0;
InitGame_Start(hWnd);
}
break;
}
}
InvalidateRect(hWnd,NULL,FALSE);
UpdateWindow(hWnd);
}
void KeyEvent(HWND hWnd)
{
if(GamePoint==3)
{
if(Map[Role_X][Role_Y].z!=1)
{
if(GetAsyncKeyState('W')<0)
{
Role_Number=1;
Role_Y-=5;
}
if(GetAsyncKeyState('S')<0)
{
Role_Number=1;
Role_Y+=5;
}
if(GetAsyncKeyState('A')<0)
{
Role_Number=2;
Role_X-=5;
}
if(GetAsyncKeyState('D')<0)
{
Role_Number=3;
Role_X+=5;
}
}
if(Map[Role_X][Role_Y].z==1)
{
if(GetAsyncKeyState('W')<0)
{
Role_Y+=5;
}
if(GetAsyncKeyState('S')<0)
{
Role_Y-=5;
}
if(GetAsyncKeyState('A')<0)
{
Role_X+=5;
}
if(GetAsyncKeyState('D')<0)
{
Role_X-=5;
}
}
}
}
void DlgEvent(HWND hWnd)
{
if(GameView==3)
{
if(GetAsyncKeyState(VK_ESCAPE)<0)
{
NumJ++;
Game_Close->SetVisible(TRUE);
GamePoint_T=GamePoint;
GamePoint=100;
}
}
if(GamePoint==0)
{
if(GetAsyncKeyState('W')<0)
{
//Game_Voice->Play(1000,FALSE,TRUE);
Start_ID--;
if(Start_ID==0)
{
//Game_Voice->Stop();
Start_ID=1;
}
}
if(GetAsyncKeyState('S')<0)
{
//Game_Voice->Play(1000,FALSE,TRUE);
Start_ID++;
if(Start_ID==5)
{
//Game_Voice->Stop();
Start_ID=4;
}
}
if(GetAsyncKeyState('J')<0&&Start_ID==4)
{
//Game_Voice->Play(1000,FALSE,TRUE);
Game_Close->SetVisible(TRUE);
GamePoint_T=GamePoint;
GamePoint=100;
}
if(GetAsyncKeyState('J')<0&&Start_ID==3)
{
//Game_Voice->Play(1000,FALSE,TRUE);
Game_Bill->SetVisible(TRUE);
GamePoint_T=GamePoint;
GamePoint=99;
}
if(GetAsyncKeyState('J')<0&&Start_ID==2)
{
//Game_Voice->Play(1000,FALSE,TRUE);
Game_Information->SetVisible(TRUE);
GamePoint_T=GamePoint;
GamePoint=99;
}
if(GetAsyncKeyState('J')<0&&Start_ID==1)
{
//Game_Voice->Play(1000,FALSE,TRUE);
GamePoint_T=GamePoint;
GameView=GameView;
GamePoint_T=2;
GameView_T=2;
//Game_Music->Close();
}
}
if(GamePoint==2)
{
if(GetAsyncKeyState(VK_SPACE)<0)
{
DlgIndex++;
Sword_number++;
}
}
if(GamePoint==4)
{
if(GetAsyncKeyState(VK_SPACE
没有合适的资源?快使用搜索试试~ 我知道了~
C++制作的RPG游戏
共127个文件
bmp:57个
obj:11个
h:6个
5星 · 超过95%的资源 需积分: 33 196 下载量 186 浏览量
2011-06-16
21:39:45
上传
评论 7
收藏 12.15MB RAR 举报
温馨提示
2D回合制游戏,win32平台实现。拥有完整的游戏引擎,简易的游戏。通过学习本例程,可以独立开发一个回合制RPG游戏。例程中没有备注,需要自行研究。本例程适合初窥游戏开发的朋友进阶学习(初学者请搜索我另外一个资源)。
资源推荐
资源详情
资源评论
收起资源包目录
C++制作的RPG游戏 (127个子文件)
resource.aps 19KB
NPCAnima3.bmp 1.39MB
Start_Background.bmp 1.37MB
WeaponShop2.bmp 1.37MB
WeaponShop1.bmp 1.37MB
World_Map.bmp 1.37MB
Map_Bace.bmp 1.37MB
Scene1ground.bmp 1.37MB
PassScene.bmp 1.37MB
BeerBar.bmp 1.37MB
BattleGround.bmp 1.37MB
loadground.bmp 860KB
NPCAnima4.bmp 787KB
NPCAnima1.bmp 617KB
EvilAnima6.bmp 590KB
GameBill.bmp 586KB
information.bmp 586KB
EvilAnima2.bmp 583KB
EvilAnima3.bmp 583KB
EvilAnima4.bmp 583KB
EvilAnima5.bmp 583KB
EvilAnima1.bmp 583KB
NPCAnima2.bmp 583KB
Close2.bmp 293KB
Close1.bmp 293KB
BattleChoice2.bmp 264KB
BattleChoice1.bmp 264KB
dialog.bmp 264KB
BattleChoice3.bmp 264KB
BattleChoice5.bmp 264KB
BattleChoice4.bmp 264KB
Start_Choice3.bmp 169KB
Start_Choice2.bmp 169KB
Start_Choice1.bmp 169KB
Start_Choice4.bmp 169KB
Start_Bottom.bmp 117KB
Battle_Choice4.bmp 117KB
BattleDlgGround.bmp 117KB
NPC_Figure.bmp 90KB
beer2.bmp 88KB
beer1.bmp 88KB
weapon_Figure.bmp 88KB
Evil_Figure.bmp 88KB
moneyadd.bmp 73KB
sword2.bmp 73KB
sword1.bmp 73KB
BattleEvilRole2.bmp 64KB
BattleEvilRole.bmp 63KB
BattleNPCRole1.bmp 60KB
BattleNPCRole.bmp 60KB
BattleNPCRole2.bmp 58KB
money.bmp 31KB
hurt.bmp 15KB
GameBottom2.bmp 12KB
GameBottom1.bmp 12KB
Evil_Role3.bmp 8KB
Evil_Role2.bmp 7KB
Evil_Role1.bmp 7KB
Game.cpp 40KB
Sprite.cpp 12KB
GameEngine.cpp 5KB
GameMusic.cpp 3KB
SpriteManage.cpp 2KB
try.cpp 1020B
MOUSE.cur 326B
MOUSE.cur 326B
MOUSE1.cur 326B
MOUSE2.cur 326B
Thumbs.db 178KB
Game.dsp 5KB
try.dsp 4KB
GameEngine.dsp 4KB
GameEngine.dsw 545B
Game.dsw 533B
try.dsw 531B
Game.exe 252KB
try.exe 228KB
Game.h 4KB
Sprite.h 3KB
GameEngine.h 2KB
GameMusic.h 617B
SpriteManage.h 561B
resource.h 547B
SMALLICON.ICO 1KB
SMALLICON.ICO 1KB
BIGICON.ico 766B
BIGICON.ico 766B
vc60.idb 233KB
vc60.idb 209KB
vc60.idb 185KB
Game.ilk 1012KB
try.ilk 362KB
cherries.mp3 4.19MB
air.mp3 2.36MB
Game.ncb 129KB
GameEngine.ncb 121KB
try.ncb 33KB
Game.obj 145KB
SpriteManage.obj 50KB
SpriteManage.obj 50KB
共 127 条
- 1
- 2
evil0angel
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页