C++开发Windows平台的游戏,系统自带的宏都是什么鬼啊!!
善用F1(系统说明文档)
大概都在注释里了&
#include<windows.h>
#include<mmsystem.h> //MCI-Media Control Interface媒体控制接口
#include <ctime>
#include <forward_list>
#pragma comment(lib,"Msimg32.lib")
#pragma comment(lib,"winmm.lib") //MCI函数库
#define WINDOW_TITLE L"飞机大战"
#define WINDOW_WIDTH 480
#define WINDOW_HEIGHT 650
enum GameStatus
{
GS_Menu,
GS_Playing,
GS_Result
};
LRESULT CALLBACK WndProc(HWND hwmd, UINT message, WPARAM wparam, LPARAM lparam);
void GameStart(HWND hwnd);
void GameUpdate(HWND hwnd);
void GameEnd(HWND hwnd);
void ChangeToStatus(GameStatus gs, HWND hwnd);
GameStatus gameStatus;
HDC g_hdc;
HDC g_mdc;
HDC g_bufdc;
int iScore;
struct Bullet
{
int x;
int y;
bool isExist = false;
};
struct Enemy
{
int x;
int y;
bool isExist;
bool isDead;
int iDeadAnimationIndex = 0;
int iDeadAnimationTimer = 0;
};
struct GameMenu
{
HBITMAP hBackground;
HBITMAP hTitle;
HBITMAP hLoading;
void Init(HWND hwnd)
{
hBackground = (HBITMAP)LoadImage(NULL, L"image/background.bmp", IMAGE_BITMAP, 480, 852, LR_LOADFROMFILE);
hTitle = (HBITMAP)LoadImage(NULL, L"image/title.bmp", IMAGE_BITMAP, 429, 84, LR_LOADFROMFILE);
hLoading = (HBITMAP)LoadImage(NULL, L"image/game_loading.bmp", IMAGE_BITMAP, 176, 36, LR_LOADFROMFILE);
}
void Start(HWND hwnd)
{
//加载背景
SelectObject(g_bufdc,hBackground);
BitBlt(g_mdc, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, g_bufdc, 0, 0, SRCCOPY);
//加载标题
SelectObject(g_bufdc, hTitle);
TransparentBlt(g_mdc, 20, 50, 429, 84, g_bufdc, 0, 0, 429, 84, RGB(0, 0, 0));
//加载图片
SelectObject(g_bufdc, hLoading);
TransparentBlt(g_mdc, 150, 550, 176, 36, g_bufdc, 0, 0, 176, 36, RGB(255, 255, 255));
BitBlt(g_hdc, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT, g_mdc, 0, 0, SRCCOPY);
}
void Update(HWND hwnd)
{
}
void OnWindowMessage(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
switch (message)
{
case WM_KEYDOWN:
case WM_LBUTTONUP:
case WM_LBUTTONDOWN:
ChangeToStatus(GS_Playing, hwnd);
break;
}
}
void Destroy(HWND hwnd)
{
}
};
struct GamePlaying
{
HBITMAP hPlayers[2];
HBITMAP hBackground;
HBITMAP hBullet;
int iBgOffset = 0; //背景图片的滚动(?)速度
int iPlayerIndex = 0; //主角动画的索引
int iPlayerTimer = 0; //主角动画的计时器
int iPlayerX = 230; //主角的坐标
int iPlayerY = 500;
Bullet bulletArray[10];
int bulletTimer = 0;
bool iMouseBown = false;
POINT pPrePointPos;
POINT pNowPointPos;
HBITMAP hEnemy[5];
Enemy enemyArray[10