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

📄 app.cpp

📁 跨平台2D引擎
💻 CPP
字号:
//app.cpp

#include <instSprite.h>
#include <instSurfWithDDraw.h>

using namespace inst;

Int32 mousex;
Int32 mousey;

IDirectDraw7 *pddraw;
HWND g_hwnd;

CSurf *pfront;
CSurf *pback;

CLayerMgr *g_pLayerMgr;
CTiledLayer *g_pMap;
CSurf *g_pImage;
CSprite *g_psprA;
CSurf *g_pTiles;


Bool init()
{
	if(FAILED(DirectDrawCreateEx(NULL,(VOID**)&pddraw,IID_IDirectDraw7,NULL)))
	return FALSE;
	if(FAILED(pddraw->SetCooperativeLevel(NULL,DDSCL_NORMAL)))
	return FALSE;

	CSurf::SetDDraw(pddraw);

	IDirectDrawSurface7 *pddsfront;
	DDSURFACEDESC2 front_d;
	ZeroMemory(&front_d,sizeof(front_d));
	front_d.dwSize=sizeof(front_d);
	front_d.dwFlags=DDSD_CAPS;
	front_d.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;
	pddraw->CreateSurface(&front_d,&pddsfront,null);
	pfront=new CSurf(pddsfront);
	pddsfront->Release();

	pback=new CSurf(640,480); //0-639,0-479

	g_pLayerMgr=new CLayerMgr();
	g_pLayerMgr->SetViewPort(0,0,640,480);

	g_pImage=new CSurf(L"sprA.bmp",0,0);
	g_psprA=new CSprite(g_pImage,30,70);
	g_psprA->SetFrame(4);
	g_pLayerMgr->AddLayer(g_psprA);
	g_pImage->SetColorKey(Rgb(0,255,0));

	g_pTiles=new CSurf(L"Tiles.bmp",0,0);
	g_pMap=new CTiledLayer(10,8,g_pTiles,30,20);
	g_pMap->SetCell(0,1,1);
	g_pMap->SetCell(0,2,2);
	g_pMap->SetX(0);
	g_pMap->SetY(0);
	g_pLayerMgr->AddLayer(g_pMap);
	g_pLayerMgr->PutLayerTop(g_psprA);

	return True;
}

void destroy()
{
	SafeDel(g_pTiles);
	SafeDel(g_pMap);

	SafeDel(g_pImage);
	SafeDel(g_psprA);

	SafeDel(pback);
	SafeDel(pfront);
	SafeRelease(pddraw);
}

void Render()
{
	pback->FillRect(0,0,pback->GetW(),pback->GetH(),Rgb(0,0,0));

	g_pLayerMgr->Render(pback,0,0);

	POINT pt;
	pt.x=pt.y=0;
	::ClientToScreen(g_hwnd,&pt);
	pfront->Blt( pt.x , pt.y ,pback,0,0,pback->GetW(),pback->GetW(),255,False);

}

Bool MsgLoop()
{
	::MSG msg;
	ZeroMemory(&msg,sizeof(msg));
	if(::PeekMessage(&msg,0,0U,0U,PM_REMOVE))
	{
		if(msg.message==WM_QUIT)return True;
		mousex=msg.pt.x;
		mousey=msg.pt.y;
		::TranslateMessage(&msg);
		::DispatchMessage(&msg);
	}else
	{
		Render();
	};
	return False;
}

LRESULT WINAPI WinProc(HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam)
{
	switch(msg)
	{
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd,msg,wparam,lparam);
}

int WINAPI WinMain(HINSTANCE hInst,HINSTANCE hPrevInst,LPSTR CmdLine,int nShowCmd)
{
	WNDCLASSEX wc={sizeof(WNDCLASSEX),CS_CLASSDC,WinProc,0L,0L,
		GetModuleHandle(0),0,0,0,0,"instemast",0};
	RegisterClassEx(&wc);
	g_hwnd=CreateWindow("instemast","abc",WS_OVERLAPPEDWINDOW,100,100,800,600,0,0,wc.hInstance,0);
	ShowWindow(g_hwnd,SW_SHOWDEFAULT);
	UpdateWindow(g_hwnd);

	init();
	while(True)
	{
		if(MsgLoop())break;
	}
	destroy();

	UnregisterClass("instemast",wc.hInstance);
	return 0;
}

⌨️ 快捷键说明

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