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

📄 dxtools.h

📁 坦克大战小游戏 控制说明: 玩家1相关控制: A/W/S/D:控制方向 F:开火 1 :玩家1复活 玩家2相关控制: UP/LEFT/RIGHT/DOWN:控制方
💻 H
字号:
//----------------------------------------------------------------------------
// 文件名: DXTools.h
//
// 描述:DX工具库头文件
//
// 作者:朱波		创建日期:2007-03-21
//----------------------------------------------------------------------------

#ifndef DXTOOLS
#define DXTOOLS

// TYPES //////////////////////////////////////////////////////

// default screen size
#define SCREEN_WIDTH    640  // size of screen
#define SCREEN_HEIGHT   480
#define SCREEN_BPP      32    // bits per pixel

#define BITMAP_ID            0x4D42 // universal id for a bitmap
#define MAX_COLORS_PALETTE   256

#define MAX_SOUNDS     256 // max number of sounds in system at once 

// digital sound object state defines
#define SOUND_NULL     0 // " "
#define SOUND_LOADED   1
#define SOUND_PLAYING  2
#define SOUND_STOPPED  3

// basic unsigned types
typedef unsigned short USHORT;
typedef unsigned short WORD;
typedef unsigned char  UCHAR;
typedef unsigned char  BYTE;

// this holds a single sound
typedef struct pcm_sound_typ
{
	LPDIRECTSOUNDBUFFER dsbuffer;   // the ds buffer containing the sound
	int state;                      // state of the sound
	int rate;                       // playback rate
	int size;                       // size of sound
	int id;                         // id number of the sound
} pcm_sound, *pcm_sound_ptr;

// container structure for bitmaps .BMP file
typedef struct BITMAP_FILE_TAG
{
        BITMAPFILEHEADER bitmapfileheader;  // this contains the bitmapfile header
        BITMAPINFOHEADER bitmapinfoheader;  // this is all the info including the palette
        PALETTEENTRY     palette[256];      // we will store the palette here
        UCHAR            *buffer;           // this is a pointer to the data

} BITMAP_FILE, *BITMAP_FILE_PTR;

// MACROS /////////////////////////////////////////////////

#define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
#define KEYUP(vk_code)   ((GetAsyncKeyState(vk_code) & 0x8000) ? 0 : 1)

// this builds a 16 bit color value in 5.5.5 format (1-bit alpha mode)
#define _RGB16BIT555(r,g,b) ((b & 31) + ((g & 31) << 5) + ((r & 31) << 10))

// this builds a 16 bit color value in 5.6.5 format (green dominate mode)
#define _RGB16BIT565(r,g,b) ((b & 31) + ((g & 63) << 5) + ((r & 31) << 11))

// initializes a direct draw struct
#define DDRAW_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); }

// GLOBALS ////////////////////////////////////////////////
extern HWND      main_window_handle; // globally track main window
extern HINSTANCE hinstance_app; // globally track hinstance

// directdraw stuff

extern LPDIRECTDRAW7         lpdd;   // dd object
extern LPDIRECTDRAWSURFACE7  lpddsprimary;   // dd primary surface
extern LPDIRECTDRAWSURFACE7  lpddsback;   // dd back surface
extern LPDIRECTDRAWPALETTE   lpddpal;   // a pointer to the created dd palette
extern LPDIRECTDRAWCLIPPER   lpddclipper;   // dd clipper
extern PALETTEENTRY          palette[256];          // color palette
extern PALETTEENTRY          save_palette[256];     // used to save palettes
extern DDSURFACEDESC2        ddsd;                  // a direct draw surface description struct
extern DDBLTFX               ddbltfx;               // used to fill
extern DDSCAPS2              ddscaps;               // a direct draw surface capabilities struct
extern HRESULT               ddrval;                // result back from dd calls
extern DWORD                 start_clock_count; // used for timing

extern BITMAP_FILE           bitmap_temp;                // holds the bitmap

extern LPDIRECTSOUND		lpds;           // directsound interface pointer
extern DSBUFFERDESC		dsbd;           // directsound description
extern DSCAPS				dscaps;         // directsound caps
extern HRESULT				dsresult;       // general directsound result
extern DSBCAPS             dsbcaps;        // directsound buffer caps

extern LPDIRECTSOUNDBUFFER	lpdsbprimary,    // you won't need this normally
                    lpdsbsecondary;  // the sound buffers

extern WAVEFORMATEX        pcmwf;          // generic waveformat structure

extern pcm_sound			sound_fx[MAX_SOUNDS];    // the array of secondary sound buffers


extern HWND                freq_hwnd,      // window handles for controls
                   	   volume_hwnd,
                    	   pan_hwnd;


// PROTOTYPES  //////////////////////////////////////////////

int Flip_Bitmap(UCHAR *image, int bytes_per_line, int height);

int Load_Bitmap_File(BITMAP_FILE_PTR bitmap, char *filename);

int Unload_Bitmap_File(BITMAP_FILE_PTR bitmap);

int DSound_Load_WAV(char *filename, int control_flags = 0);

LPDIRECTDRAWSURFACE7 DDraw_Create_Surface(int width, int height, int mem_flags, int ckey);

int DDraw_Draw_Surface(LPDIRECTDRAWSURFACE7 source, int x, int y, int width, int height, LPDIRECTDRAWSURFACE7 dest, int transparent);

int DDraw_Draw_Rect(int sx, int sy, int dx, int dy, LPDIRECTDRAWSURFACE7 lpdds, int pitch, DWORD color);

int Scan_Bitmap24_Surface(LPDIRECTDRAWSURFACE7 lpdds, BITMAP_FILE bitmap, int startx, int starty, int offx, int offy, int width, int height, int spitch, int bpitch, DWORD ckey);

int DrawGDIText(int x, int y,char *buffer, int clr_front, int clr_back);

// initializes a direct draw struct
#define DDRAW_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); }

// this builds a 16 bit color value in 5.5.5 format (1-bit alpha mode)
#define _RGB16BIT555(r,g,b) ((b & 31) + ((g & 31) << 5) + ((r & 31) << 10))

// this builds a 16 bit color value in 5.6.5 format (green dominate mode)
#define _RGB16BIT565(r,g,b) ((b & 31) + ((g & 63) << 5) + ((r & 31) << 11))

// this builds a 32 bit color value in A.8.8.8 format (8-bit alpha mode)
#define _RGB32BIT(a,r,g,b) ((b) + ((g) << 8) + ((r) << 16) + ((a) << 24))

#endif

⌨️ 快捷键说明

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