亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sdx3.cpp

?? vc編寫的鍵盤控制動畫小程序
?? CPP
字號:
//-----------------------------------------------------------------------------
//鍵盤控制人物動畫
//
//
//									制作:耗子
//									email:	chain@km169.net
//									主頁:http://clicknow.yeah.net
//-----------------------------------------------------------------------------

#ifndef WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN
#endif
//-----------------------------------------------------------------------------
// 所要包涵的文件
//-----------------------------------------------------------------------------
#include <windows.h>
#include <ddraw.h>
#include <stdio.h>
#include <stdarg.h>
#include "ddutil.h"

//-----------------------------------------------------------------------------
// 定義程序類名稱與程序標題
//-----------------------------------------------------------------------------
#define NAME                "keymove"
#define TITLE               "鍵盤控制人物動畫"

//-----------------------------------------------------------------------------
// Default settings
//-----------------------------------------------------------------------------
#define TIMER_ID            1
#define TIMER_RATE          100

//-----------------------------------------------------------------------------
// 全局數(shù)據(jù)區(qū),包括DirectDraw對象,DirectDraw表面,DirectDraw調(diào)色板等
//-----------------------------------------------------------------------------
LPDIRECTDRAW               g_pDD = NULL;        // DirectDraw object
LPDIRECTDRAWSURFACE        g_pDDSPrimary = NULL;// DirectDraw primary surface
LPDIRECTDRAWSURFACE        g_pDDSBack = NULL;   // DirectDraw back surface
LPDIRECTDRAWSURFACE        g_pDDSOne = NULL;    // Offscreen surface 1
LPDIRECTDRAWSURFACE        g_pDDSTwo = NULL;    // Offscreen surface 2
LPDIRECTDRAWPALETTE         g_pDDPal = NULL;     // The primary surface palette
BOOL                        g_bActive = FALSE;   // Is application active?

//-----------------------------------------------------------------------------
// Local data
//-----------------------------------------------------------------------------
// 圖象文件名
static char                 szBitmap1[] = "MAP1.bmp";
static char                 szBitmap2[] = "player.bmp";

//-----------------------------------------------------------------------------
//函數(shù)聲明
//-----------------------------------------------------------------------------
void drawplayer();

//-----------------------------------------------------------------------------
// Name: ReleaseAllObjects()
// Desc: 釋放所有對象
//-----------------------------------------------------------------------------
static void
ReleaseAllObjects(void)
{
    if (g_pDD != NULL)
    {
        if (g_pDDSPrimary != NULL)
        {
            g_pDDSPrimary->Release();
            g_pDDSPrimary = NULL;
        }
        if (g_pDDSOne != NULL)
        {
            g_pDDSOne->Release();
            g_pDDSOne = NULL;
        }
        if (g_pDDSTwo != NULL)
        {
            g_pDDSTwo->Release();
            g_pDDSTwo = NULL;
        }
        if (g_pDDPal != NULL)
        {
            g_pDDPal->Release();
            g_pDDPal = NULL;
        }
        g_pDD->Release();
        g_pDD = NULL;
    }
}




//-----------------------------------------------------------------------------
// Name: InitFail()
// Desc: 初始化出錯時調(diào)用此函數(shù),顯示出錯信息并退出程序
//-----------------------------------------------------------------------------
HRESULT
InitFail(HWND hWnd, HRESULT hRet, LPCTSTR szError,...)
{
    char                        szBuff[128];
    va_list                     vl;

    va_start(vl, szError);
    vsprintf(szBuff, szError, vl);
    ReleaseAllObjects();
    MessageBox(hWnd, szBuff, TITLE, MB_OK);
    DestroyWindow(hWnd);
    va_end(vl);
    return hRet;
}




//-----------------------------------------------------------------------------
// Name: InitSurfaces()
// Desc: 初始化DirectDraw表面(讀入圖象而已)
//		 將三幅圖讀入相應(yīng)的表頁
//		 
//-----------------------------------------------------------------------------
BOOL 
InitSurfaces(void)
{

    // Load our bitmap resource.

	g_pDDSOne	=DDLoadBitmap(g_pDD, szBitmap1, 0, 0);
	g_pDDSTwo	=DDLoadBitmap(g_pDD, szBitmap2, 0, 0);
    return TRUE;
}




//-----------------------------------------------------------------------------
// Name: RestoreAll()
// Desc: 恢復所有對象(在表面丟失時調(diào)用)
//-----------------------------------------------------------------------------
HRESULT 
RestoreAll(void)
{
    HRESULT                     hRet;

    hRet = g_pDDSPrimary->Restore();
    if (hRet == DD_OK)
    {
        hRet = g_pDDSOne->Restore();
        if (hRet == DD_OK)
        {
            hRet = g_pDDSTwo->Restore();
            if (hRet == DD_OK)
            {
                InitSurfaces();
            }
        }
    }
    return hRet;
}




//-----------------------------------------------------------------------------
// Name: UpdateFrame()
// Desc: 
//		 
//		 
//		 
//-----------------------------------------------------------------------------
static void
UpdateFrame()
{

	//精靈顯示坐標
	static int ix=500,iy=200;
    HRESULT                     hRet;
    RECT                        rcRect;

	int i,j;


	//填充黑色
	DDBLTFX ddBltFx;
	ddBltFx.dwSize = sizeof(DDBLTFX);
	ddBltFx.dwFillColor = 0;
	g_pDDSBack->Blt(NULL, NULL, NULL, DDBLT_WAIT | DDBLT_COLORFILL, &ddBltFx);

    //顯示地圖
	for(i=0;i<21;i++)
	{
		for(j=0;j<16;j++)
		{
		    rcRect.left = 0;
		    rcRect.top = 32;
			rcRect.right = 30;
			rcRect.bottom = 62;
			hRet = g_pDDSBack->BltFast(i*30, j*30, g_pDDSOne, &rcRect, DDBLTFAST_NOCOLORKEY);
		}
	}

	drawplayer();//畫出相應(yīng)動作的人物

	//輸入文字
	HDC hdc;
	char temp[256];
	if (g_pDDSBack->GetDC(&hdc) == DD_OK)
	{
		SetBkMode(hdc,TRANSPARENT);
		SetTextColor( hdc, RGB( 0, 0, 0 ) );
		sprintf(temp,"鍵盤控制人物動畫");
		TextOut( hdc, 10, 10, temp, lstrlen(temp) );
		SetTextColor( hdc, RGB( 242, 109, 53 ) );
		sprintf(temp,"耗子 制作");
		TextOut( hdc, 500, 400, temp, lstrlen(temp) );
		sprintf(temp,"Email:Chain@km169.net");
		TextOut( hdc, 450, 415, temp, lstrlen(temp) );
		sprintf(temp,"主頁:http://clicknow.yeah.net");
		TextOut( hdc, 420, 430, temp, lstrlen(temp) );
		g_pDDSBack->ReleaseDC(hdc);
	}
	
}




//-----------------------------------------------------------------------------
// Name: WindowProc()
// Desc: 消息處理函數(shù)
//-----------------------------------------------------------------------------
long FAR PASCAL
WindowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HRESULT                     hRet;

    switch (message)
    {
        case WM_ACTIVATEAPP:
            // Pause if minimized or not the top window
            g_bActive = (wParam == WA_ACTIVE) || (wParam == WA_CLICKACTIVE);
            return 0L;

        case WM_DESTROY:
            // Clean up and close the app
            ReleaseAllObjects();
            PostQuitMessage(0);
            return 0L;

        case WM_KEYDOWN:
            // Handle any non-accelerated key commands
        switch( wParam )
        {
        case VK_ESCAPE://退出
            PostMessage(hWnd, WM_CLOSE, 0, 0);
            break;
		}
            break;

        case WM_SETCURSOR:
            // Turn off the cursor since this is a full-screen app
            SetCursor(NULL);
            return TRUE;

		
        case WM_TIMER:
            // 這里進行更新背景并翻轉(zhuǎn)表面以顯示出背景,呵呵,這里是抄別人的。
            if (g_bActive && TIMER_ID == wParam)
            {
                UpdateFrame();
                while (TRUE)
                {
                    hRet = g_pDDSPrimary->Flip(NULL, 0);
                    if (hRet == DD_OK)
                        break;
                    if (hRet == DDERR_SURFACELOST)
                    {
                        hRet = RestoreAll();
                        if (hRet != DD_OK)
                            break;
                    }
                    if (hRet != DDERR_WASSTILLDRAWING)
                        break;
                }
            }
            break;
		
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
}




//-----------------------------------------------------------------------------
// Name: InitApp()
// Desc: 初始化程序,窗口,DirectDraw與顯示時間間隔
//-----------------------------------------------------------------------------
static HRESULT
InitApp(HINSTANCE hInstance, int nCmdShow)
{
    HWND                        hWnd;
    WNDCLASS                    wc;
    DDSURFACEDESC              ddsd;
    DDSCAPS                    ddscaps;
    HRESULT                     hRet;
    LPDIRECTDRAW                pDD;

    // Set up and register window class
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WindowProc;
    wc.cbClsExtra = 0;
    wc.cbWndExtra = 0;
    wc.hInstance = hInstance;
	wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(NULL));
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH )GetStockObject(BLACK_BRUSH);
    wc.lpszMenuName = NAME;
    wc.lpszClassName = NAME;
    RegisterClass(&wc);

    // Create a window
    hWnd = CreateWindowEx(WS_EX_TOPMOST,
                          NAME,
                          TITLE,
                          WS_POPUP,
                          0,
                          0,
                          GetSystemMetrics(SM_CXSCREEN),
                          GetSystemMetrics(SM_CYSCREEN),
                          NULL,
                          NULL,
                          hInstance,
                          NULL);
    if (!hWnd)
        return FALSE;
    ShowWindow(hWnd, nCmdShow);
    UpdateWindow(hWnd);
    SetFocus(hWnd);

    ///////////////////////////////////////////////////////////////////////////
    // 創(chuàng)建DirectDraw對象
    ///////////////////////////////////////////////////////////////////////////
    hRet = DirectDrawCreate(NULL, &pDD, NULL);
    if (hRet != DD_OK)
        return InitFail(hWnd, hRet, "DirectDrawCreate FAILED");

    hRet = pDD->QueryInterface(IID_IDirectDraw, (LPVOID *) & g_pDD);
    if (hRet != DD_OK)
        return InitFail(hWnd, hRet, "QueryInterface FAILED");

    // 設(shè)置模式
    hRet = g_pDD->SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
    if (hRet != DD_OK)
        return InitFail(hWnd, hRet, "SetCooperativeLevel FAILED");

    // 設(shè)置顯示方式為640x480,256色
    hRet = g_pDD->SetDisplayMode(640, 480, 8);
    if (hRet != DD_OK)
        return InitFail(hWnd, hRet, "SetDisplayMode FAILED");

    // 創(chuàng)建主表面和一個背景表面
    ZeroMemory(&ddsd, sizeof(ddsd));
    ddsd.dwSize = sizeof(ddsd);
    ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
    ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE |
                          DDSCAPS_FLIP |
                          DDSCAPS_COMPLEX;
    ddsd.dwBackBufferCount = 1;
    hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSPrimary, NULL);
    if (hRet != DD_OK)
        return InitFail(hWnd, hRet, "CreateSurface FAILED");

    // 取得背景表面指針
    ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
    hRet = g_pDDSPrimary->GetAttachedSurface(&ddscaps, &g_pDDSBack);
    if (hRet != DD_OK)
        return InitFail(hWnd, hRet, "GetAttachedSurface FAILED");

    // 創(chuàng)建一個離屏表面(可想象是一幅圖)
    ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
    ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
    ddsd.dwHeight = 480;
    ddsd.dwWidth = 640;
    hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSOne, NULL);
    if (hRet != DD_OK)
        return InitFail(hWnd, hRet, "CreateSurface FAILED");

    // 創(chuàng)建另一個離屏表面(可想象是另一幅圖)
    hRet = g_pDD->CreateSurface(&ddsd, &g_pDDSTwo, NULL);
    if (hRet != DD_OK)
        return InitFail(hWnd, hRet, "CreateSurface FAILED");

    // 讀入調(diào)色板并設(shè)置上
    g_pDDPal = DDLoadPalette(g_pDD, szBitmap1);
    if (g_pDDPal)
        g_pDDSPrimary->SetPalette(g_pDDPal);

	//讀入圖象
    if (!InitSurfaces())
        return InitFail(hWnd, hRet, "InitSurfaces FAILED");

	//設(shè)置精靈的透明色
	DDSetColorKey(g_pDDSTwo, RGB(255,238,187));

    // 創(chuàng)建頁面翻轉(zhuǎn)時間間隔(這個我不大懂,呵呵)
    if (TIMER_ID != SetTimer(hWnd, TIMER_ID, TIMER_RATE, NULL))
        return InitFail(hWnd, hRet, "SetTimer FAILED");

    return DD_OK;
}




//-----------------------------------------------------------------------------
// Name: WinMain()
// Desc: 入口,初始化,進行消息循環(huán)
//-----------------------------------------------------------------------------
int PASCAL
WinMain(HINSTANCE hInstance,
        HINSTANCE hPrevInstance,
        LPSTR lpCmdLine,
        int nCmdShow)
{
    MSG                         msg;

    if (InitApp(hInstance, nCmdShow) != DD_OK)
        return FALSE;

    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}


void drawplayer(void)
{

    static int  phase = 0;//顯示精靈哪個動作的標志
	static int direction=0;//人物面對的方向,0 for south,1 for west,2 for east,3 for north;
    HRESULT                     hRet;
    RECT                        rcRect;

	if(GetAsyncKeyState(VK_UP))		{direction=3;phase++;}
	if(GetAsyncKeyState(VK_DOWN))	{direction=0;phase++;}
	if(GetAsyncKeyState(VK_LEFT))	{direction=1;phase++;}
	if(GetAsyncKeyState(VK_RIGHT))	{direction=2;phase++;}
	if (phase>2) phase=0;
	rcRect.left = phase*32;
	rcRect.top = direction*48+0;
	rcRect.right = phase*32+32;
	rcRect.bottom = direction*48+48;
	hRet = g_pDDSBack->BltFast(320, 240, g_pDDSTwo, &rcRect, DDBLTFAST_SRCCOLORKEY);

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91偷拍与自偷拍精品| 亚洲欧美一区二区三区极速播放| 亚洲成人高清在线| 久久亚洲精精品中文字幕早川悠里| 色综合天天做天天爱| 精品一区二区三区免费毛片爱| 1024成人网色www| 亚洲国产精华液网站w| 久久亚洲一区二区三区四区| 亚洲综合免费观看高清完整版在线| 国产精品久久久久aaaa樱花| 中日韩免费视频中文字幕| 国产精品欧美一级免费| 精品一区二区三区免费播放| 欧美色综合影院| 欧美人伦禁忌dvd放荡欲情| 欧美人与性动xxxx| 亚洲婷婷国产精品电影人久久| 亚洲最大成人网4388xx| 欧美96一区二区免费视频| 免费成人在线视频观看| 欧美精品日日鲁夜夜添| 欧美一区二区三区免费在线看| 91麻豆精品国产91久久久更新时间| 911精品产国品一二三产区| 一区二区三区四区激情| 色哟哟在线观看一区二区三区| 欧美日韩一级二级| xfplay精品久久| 精品一二线国产| 精品国产一区二区亚洲人成毛片| 久久中文娱乐网| 久久99精品久久只有精品| 精品国产乱码久久久久久蜜臀| 青青草国产精品97视觉盛宴| 欧美一级黄色片| 国产欧美一二三区| 午夜久久久久久| 国产高清不卡一区二区| 欧美色区777第一页| 亚洲成人av中文| 91精品国产黑色紧身裤美女| 日本三级韩国三级欧美三级| 成人高清av在线| 欧美精品 日韩| 日本免费新一区视频| 日韩精品一区二区三区swag| 亚洲欧美日韩人成在线播放| 91黄色免费看| 国产精品女同互慰在线看| 成人免费看片app下载| 欧美一区二区视频网站| 麻豆91精品视频| 欧美日韩一区成人| 麻豆精品蜜桃视频网站| 国产精品免费看片| 欧美在线999| 亚洲色图欧洲色图| 欧美精品一二三四| 国产91丝袜在线播放| 日韩精品中文字幕在线不卡尤物| 国产一区二区福利视频| 日韩一卡二卡三卡四卡| 国产精品自拍一区| 欧美成人艳星乳罩| 视频一区国产视频| 日本福利一区二区| 日本最新不卡在线| 国产精品成人免费精品自在线观看 | 亚洲精品国产a| 成人在线视频首页| 婷婷综合五月天| 国产精品久久久久久久久搜平片| 欧美日本韩国一区二区三区视频| 国产精品亚洲а∨天堂免在线| 亚洲免费观看在线视频| 欧美一区二区在线免费播放| 99久久精品免费观看| 亚洲视频一二三| 日韩免费成人网| 欧美中文字幕不卡| 成人av电影免费在线播放| 久88久久88久久久| 亚洲国产另类av| 678五月天丁香亚洲综合网| 成人黄色a**站在线观看| 日本怡春院一区二区| 亚洲激情第一区| 国产精品久久久久久户外露出| 日韩免费观看高清完整版 | 国产成人av一区二区三区在线观看| 一区二区三区免费看视频| 欧美激情综合网| www久久精品| 日韩精品一区二区三区在线播放 | 日韩成人免费电影| 亚洲综合网站在线观看| 自拍偷拍国产亚洲| 国产精品美女久久久久久久久| 久久综合国产精品| 精品人在线二区三区| 欧美一级生活片| 欧美一区二区视频在线观看2022| 欧美日本韩国一区| 欧美美女直播网站| 欧美乱妇一区二区三区不卡视频| 日本高清免费不卡视频| 色嗨嗨av一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃| 成人免费视频caoporn| 成人激情午夜影院| 99久久免费视频.com| 91视频免费看| 欧美日韩一区高清| 欧美日韩黄视频| 欧美高清性hdvideosex| 91麻豆精品国产无毒不卡在线观看| 884aa四虎影成人精品一区| 欧美一级片免费看| 欧美不卡一区二区| 久久久久国产精品免费免费搜索| 一本一道波多野结衣一区二区| 91香蕉视频mp4| 在线免费一区三区| 4hu四虎永久在线影院成人| 精品国产一区二区三区四区四 | 亚洲.国产.中文慕字在线| 亚洲一级电影视频| 欧美aaaaaa午夜精品| 国产一区欧美一区| 91在线国内视频| 欧美狂野另类xxxxoooo| 精品国产免费一区二区三区四区| 久久精品免费在线观看| 欧美精品99久久久**| 久久中文娱乐网| 国产精品每日更新| 亚洲地区一二三色| 精品一区二区综合| 成人免费观看av| 欧美伦理视频网站| 久久综合国产精品| 亚洲免费在线观看视频| 肉肉av福利一精品导航| 国产尤物一区二区| 日本久久电影网| 精品日韩一区二区| 亚洲制服丝袜av| 国产在线精品不卡| 欧美图区在线视频| 国产拍欧美日韩视频二区| 亚洲影院在线观看| 国产一区在线视频| 欧美日韩mp4| 国产精品美女久久久久高潮| 日韩国产欧美视频| 91亚洲男人天堂| 亚洲精品在线三区| 亚洲香肠在线观看| 国产成人高清视频| 日韩精品一区二区三区视频播放| 亚洲免费资源在线播放| 国产一区二区日韩精品| 欧美日韩和欧美的一区二区| 中文一区一区三区高中清不卡| 日韩精品高清不卡| 91亚洲国产成人精品一区二区三| 欧美精品一区二区三区在线播放| 亚洲一级不卡视频| 91最新地址在线播放| 久久久精品tv| 久久99精品久久久| 日韩一区二区免费在线观看| 一区二区三区视频在线看| 成人综合在线网站| 国产亚洲欧美日韩日本| 美女网站色91| 7777精品伊人久久久大香线蕉| 一区二区在线看| 色美美综合视频| 亚洲精品视频在线看| av电影在线不卡| 这里只有精品视频在线观看| 一区二区三区视频在线看| av动漫一区二区| 亚洲人成亚洲人成在线观看图片| 国产福利一区二区三区视频在线 | 91精品视频网| 亚洲国产综合在线| 日本黄色一区二区| 夜夜爽夜夜爽精品视频| 色婷婷激情一区二区三区| 国产精品成人免费精品自在线观看 | 在线亚洲一区观看| 亚洲精品免费在线观看| 欧美亚洲国产bt| 亚洲成va人在线观看| 欧美丰满少妇xxxbbb| 免费xxxx性欧美18vr| 欧美变态tickling挠脚心|