Windows游戏开发(C++)

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值