前田稔(Maeda Minoru)の超初心者のプログラム入門
ファイル名 | ファイルの説明 |
---|---|
Main.cpp | Main Program File |
Ddutil.cpp | c:\Dx90SDK\Samples\C++\Common からコピー |
Ddutil.h | c:\Dx90SDK\Samples\C++\Common からコピー |
Dxutil.h | c:\Dx90SDK\Samples\C++\Common からコピー |
Kao.bmp | 130*130 ドットの顔全体の画像 |
Buhin.bmp | 3枚の目と3枚の口を縦に並べた画像 |
HWND g_hWnd; CDisplay* g_pDisplay = NULL; CSurface* g_pSurface1 = NULL; CSurface* g_pSurface2 = NULL; BOOL g_bActive = FALSE; char img1[] = "kao.bmp"; //130*130 char img2[] = "buhin.bmp"; //60*20*3, 60*30*3 int eye[16] = { 0,1,2,0,0,0,0,0,0,1,2,0,0,0,0,0 }; int mouth[16] = { 0,0,1,1,2,2,0,0,0,0,1,1,2,2,0,0 }; int g_num= 0; //スプライトの切り替え |
HRESULT InitDirectDraw(HWND hWnd) { HRESULT hr; g_pDisplay = new CDisplay(); if (FAILED(hr=g_pDisplay->CreateWindowedDisplay(hWnd,320,240))) return hr; if (FAILED(hr=g_pDisplay->CreateSurfaceFromBitmap(&g_pSurface1,img1,0,0))) return hr; if (FAILED(hr=g_pDisplay->CreateSurfaceFromBitmap(&g_pSurface2,img2,0,0))) return hr; return S_OK; } |
HRESULT DisplayFrame() { HRESULT hr; RECT rect; g_pDisplay->Clear(RGB(80,100,60)); g_num= (timeGetTime()/200)%16; // 顔(g_pSurface1) を描画 g_pDisplay->Blt(100,50,g_pSurface1,NULL); // 目(g_pSurface2) を顔にかぶせる SetRect(&rect,0,eye[g_num]*20,60,eye[g_num]*20+20); g_pDisplay->Blt(139,100,g_pSurface2,&rect); // 口(g_pSurface2) を顔にかぶせる SetRect(&rect,0,mouth[g_num]*30+60,60,mouth[g_num]*30+90); g_pDisplay->Blt(139,123,g_pSurface2,&rect); if (FAILED(hr=g_pDisplay->Present())) return hr; return S_OK; } |
case WM_KEYDOWN: PostMessage(hWnd,WM_CLOSE,0,0); return 0L; case WM_SETCURSOR: //カーソルを非表示 SetCursor(NULL); return TRUE; |
超初心者の方のために全ソースコードを掲載します。 (^_^;)
全ソースコード