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

📄 game.h

📁 一个简单的rpg游戏
💻 H
字号:
#ifndef GAME_H
#define GAME_H

/*
	GAME.H
	GAME.CPP
	GAME2.CPP
*/

#include <ddraw.h>
#include <dinput.h>

#pragma comment (lib,"dinput.lib")
#pragma comment (lib,"ddraw.lib")
#pragma comment (lib,"dxguid.lib")



#define KEYDOWN(name,key)	(name[key] & 0x80)
#define DINPUT_BUFFERSIZE       16



#ifdef __cplusplus
extern "C" {            /* Assume C declarations for C++ */
#endif	/* __cplusplus */

extern IDirectDrawSurface * DDGetSurface(IDirectDraw *pdd, int dx, int dy);
extern IDirectDrawPalette * DDLoadPalette(IDirectDraw *pdd, LPCSTR szBitmap);
extern IDirectDrawSurface * DDLoadBitmap(IDirectDraw *pdd, LPCSTR szBitmap, int dx, int dy);
extern HRESULT              DDReLoadBitmap(IDirectDrawSurface *pdds, LPCSTR szBitmap);
extern HRESULT              DDCopyBitmap(IDirectDrawSurface *pdds, HBITMAP hbm, int x, int y, int dx, int dy);
extern DWORD                DDColorMatch(IDirectDrawSurface *pdds, COLORREF rgb);
extern HRESULT              DDSetColorKey(IDirectDrawSurface *pdds, COLORREF rgb);

#ifdef __cplusplus
}
#endif	/* __cplusplus */



typedef struct _OBJECT_RES_ASCII
{
	char test[3];

	char number[10];

	char objname[10];
	char filename[10];

	char rright[10];
	char rbottom[10];

	char arright[10];
	char arbottom[10];

	char load[10];
	char colorkey[10];
	char r[10];
	char g[10];
	char b[10];

}OBJECT_RES_ASCII;



typedef struct _OBJECT_RES
{
	long 		number;

	char		objname[8];
	char		filename[8];

	RECT		rect;
	RECT		apprect;

	long		load;
	long		colorkey;
	COLORREF	rgb;

}OBJECT_RES;



typedef struct _OBJECT_RES2_ASCII
{
	char test[3];

	char number[10];

	char x[10];
	char y[10];

}OBJECT_RES2_ASCII;



typedef struct _OBJECT_RES2
{
	long number;

	long x,y;

	long dlgptr;

}OBJECT_RES2;



typedef struct _ACC_RES_ASCII
{
	char test[3];

	char fromnumber[10];
	char tonumber[10];

	char number[10];

	char objname[10];
	char filename[10];

	char x[10];
	char y[10];

}ACC_RES_ASCII;



typedef struct _DIALOG_RES_ASCII
{
	char test[3];

	char number[10];
	char speaker[10];

	char dlgnumber[10];
	char gotonumber[10];

	char stop[10];

	char fillprocess[10];

}DIALOG_RES_ASCII;



typedef struct _DIALOG
{
	long number;
	long speaker;

	long dlgnumber;
	long gotonumber;

	long stop;

	long fillprocess;

}DIALOG_RES;



class DKEY
{
public:
	LPDIRECTINPUT           g_pdi;
	LPDIRECTINPUTDEVICE     g_pKeyboard;
	char					keys[256];

public:
	DKEY();
	~DKEY();

	BOOL Create(HWND hwnd,HINSTANCE ins);
	void GetInput(void);
};



class GAME
{
public:
	char *aresmem;
	long areslength;

	char *ares2mem;
	long ares2length;

	char *accmem;
	long acclength;

	char *dlgmem;
	long dlglength;

	RECT	screen;
	int 	fade;
	int 	step;

	BYTE	process[255];

public:
	GAME();
	~GAME();

	void Init(LPSTR aresfile,LPSTR ares2file,
				LPSTR accfile,LPSTR dlgfile,
				int w,int h);

};



class OBJECT
{
public:
	OBJECT_RES			res;
	OBJECT_RES2			res2;

	DIALOG_RES			dlgres;

	LPDIRECTDRAW		lpdd;
	LPDIRECTDRAWSURFACE	back;
	LPDIRECTDRAWSURFACE	sfc;

	RECT		screen;
	RECT		from,to;
	int			running;
	int			direction;
	int			step;
	int			get;
	int			spot;

public:
	OBJECT();
	~OBJECT();

	void Init(LPDIRECTDRAW dd,LPDIRECTDRAWSURFACE bk,RECT sc,
					char *aresmem,long areslength,
					char *ares2mem,long ares2length,
					long number);
	void InitDlg(char *dlgmem,long length);
	void Get();
	void ReGet();
	void GetAppend(BYTE *hit,int hl,BYTE *acc,int al);
	bool Move(int direction,int step,LPRECT test);
	bool Put(bool tr=0,BYTE percent=0,USHORT colorkey=0);
	bool IsHit(BYTE *hit);
	bool IsHitObj(OBJECT *other);
	void SetSpot();
	int	GetDirection();
};



void AddString(char *to,char *from,char *first,char *last);
void ChangeRes(OBJECT_RES *res,OBJECT_RES_ASCII *ares);
void ChangeRes2(OBJECT_RES2 *res2,OBJECT_RES2_ASCII *ares2);
void ChangeAccRes(OBJECT *obj,long from,long to,
				  char *accmem,long acclength);
void ChangeDlgRes(DIALOG_RES *dlgres,DIALOG_RES_ASCII *adlgres);
void SearchDlgRes(char *dlgmem,long length,OBJECT *obj);
void WriteDlgAscii(char *dlgmem,long length,long objnumber,long gotonumber);

BOOL FillSurface( LPDIRECTDRAWSURFACE surf, DWORD clr, RECT* rect=0 );
bool CopySurface( LPDIRECTDRAWSURFACE to,RECT trect,RECT test,
				 LPDIRECTDRAWSURFACE from,RECT frect,int colorkey );
void CopySurfaceWithHdc(LPDIRECTDRAWSURFACE to,
						LPDIRECTDRAWSURFACE from,
						RECT rect);

void Tr(LPDIRECTDRAWSURFACE to,RECT trect,RECT ttest,
		LPDIRECTDRAWSURFACE from,RECT frect,RECT ftest,
		BYTE percent,USHORT colorkey,USHORT color);
USHORT TrApp(USHORT d,USHORT s,BYTE percent);

void FadeIn(LPDIRECTDRAWSURFACE to,
			LPDIRECTDRAWSURFACE from,
			LPRECT lprc,LPDIRECTDRAW lpdd);
void FadeOut(LPDIRECTDRAWSURFACE to,
			LPDIRECTDRAWSURFACE from,
			LPRECT lprc,LPDIRECTDRAW lpdd);

int Fps();



#endif

⌨️ 快捷键说明

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