資源簡(jiǎn)介
為了挑戰(zhàn)一個(gè)新的高度,作者原創(chuàng)了他從事WEB編程以來(lái)的第一個(gè)Win32 API應(yīng)用,之所以編寫一個(gè)游戲,是因?yàn)橛螒蚩疾斓闹R(shí)面很綜合,之所以選擇俄羅斯方塊,一是自己曾被癮過(guò),二是發(fā)現(xiàn)這款游戲幾乎包含了Widows入門的很多知識(shí),比如窗口、消息、菜單、工具欄、資源、對(duì)話框、計(jì)時(shí)器、自繪按鈕、GDI位圖操作、Windows目錄操作、INI文件操作等等,拿來(lái)練手會(huì)收獲不少。本游戲是帶有背景音樂(lè)的,一邊玩游戲一邊欣賞音樂(lè)的感覺(jué)相信很舒服。
代碼片段和文件信息
//=========================================================
//?Project Win32?俄羅斯方塊程序
//?File Tetris.cpp?主程序
//?Update 2009.04
//?Author 沉淪?http://www.EasyIDE.cn
//?Download?源碼愛(ài)好者:http://www.NewXing.com
//?Tools Visual?C++?6.0?&?Editplus?3
//=========================================================
#include?“Tetris.h“
//Windows?入口函數(shù)
int?WINAPI?WinMain(HINSTANCE?hInstanceHINSTANCE?hPrevInstanceLPSTR?szCmdLineint?iCmdShow)
{
static?TCHAR szClsName[]?=?TEXT(“Tetris“);
HWND hwnd;
MSG msg;
WNDCLASSEX wndclass;
InitCommonControls();?//初始化通用控件類庫(kù)
//程序啟動(dòng)時(shí)初始化數(shù)據(jù)
hInst?=?hInstance;
RandomBlock(&ii&jj&cc);
//x?=?4;?y?=?-1;
iLevel?=?1;?iSorce?=?0;
ilayer?=?0;?iSorceMax?=?TetrisIni(0);
hDcAlert?=?CreateCompatibleDC(NULL);
//注冊(cè)窗口類
wndclass.hInstance =?hInstance;
wndclass.lpszClassName =?szClsName;
wndclass.lpfnWndProc =?WndProc;
wndclass.cbClsExtra =?0;
wndclass.cbWndExtra =?0;
wndclass.cbSize =?sizeof(WNDCLASSEX);
wndclass.style =?CS_HREDRAW|CS_VREDRAW;
wndclass.hIcon =?LoadIcon(hInstanceMAKEINTRESOURCE(IDI_ICON1));
wndclass.hIconSm =?NULL;
wndclass.hCursor =?LoadCursor(NULLIDC_ARROW);
wndclass.hbrBackground =?(HBRUSH)(COLOR_BTNFACE+1);
wndclass.lpszMenuName =?MAKEINTRESOURCE(IDR_MENU1);
if?(?!RegisterClassEx(&wndclass)?)
{
MessageBox(
NULL
TEXT(“This?program?requires?Windows?NT!“)
TEXT(“RegisterClass?ERROR“)
MB_IConerror);
return?0;
}
//創(chuàng)建主窗口
hwnd?=?CreateWindowEx(
WS_EX_CLIENTEDGE
szClsName
TEXT(“俄羅斯方塊Win32版“)
WS_MINIMIZEBOX|WS_SYSMENU
GetSystemMetrics(SM_CXFULLSCREEN)/2-370/2
GetSystemMetrics(SM_CYFULLSCREEN)/2-520/2
370
520
NULL
NULL
hInstance
NULL);
//顯示窗口并刷新客戶區(qū)
ShowWindow(hwndiCmdShow);
UpdateWindow(hwnd);
//構(gòu)建消息循環(huán)
while?(?GetMessage(&msgNULL00)?)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return?msg.wParam;
}
//主窗口過(guò)程
LRESULT?CALLBACK?WndProc(HWND?hwndUINT?messageWPARAM?wParamLPARAM?lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch?(?message?)
{
case?WM_CREATE:
GameUI(hwnd);?//創(chuàng)建界面控件
GameStart(hwnd);?//數(shù)據(jù)初始化
//背景音樂(lè)初始化
bMusicOn?=?TRUE;
iMusicBG?=?IDR_WAVE1;
hMenu?=?GetMenu(hwnd);
MusicItem(IDM_MUSIC1);
return?0;
case?WM_PAINT:
hdc?=?BeginPaint(hwnd&ps);
DrawMatrix(hdc);?//繪制游戲區(qū)
DrawTetris(hdc000);?//繪制方塊
DrawNext(hdc);?//繪制預(yù)覽區(qū)
BitBlt(hdc4020016050hDcAlert00SRCCOPY);//繪制提示語(yǔ)
EndPaint(hwnd&ps);
return?0;
case?WM_TIMER:
DropTetris(hwnd);
return?0;
case?WM_DRAWITEM:
DrawButton(lParam);?//繪制方向按鈕
return?TRUE;
case?WM_KEYDOWN:
switch?(?(int)wParam?)
{
case?VK_LEFT:
if?(?!bStart?)?break;
if?(?CheckBlock(x-1y)?)
{
x?--;
hdc?=?GetDC(hwnd);
DrawTetris(hdc-100);
ReleaseDC(hwndhdc);
}
break;
case?VK_RIGHT:
if?(?!bStart?)?break;
if?(?CheckBlock(x+1y)?)
{
x?++;
hdc?=?GetDC(hwnd);
DrawTe
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????23767??2013-12-02?04:29??Tetris.cpp
?????文件????????457??2009-04-24?15:45??Tetris.dep
?????文件???????5075??2009-04-25?15:50??Tetris.dsp
?????文件????????537??2009-04-14?21:03??Tetris.dsw
?????文件???????3679??2013-12-02?04:29??Tetris.h
?????文件???????4625??2009-04-24?15:45??Tetris.mak
?????文件??????66560??2009-05-02?15:51??Tetris.ncb
?????文件??????53760??2009-05-02?15:51??Tetris.opt
?????文件???????1159??2009-05-02?15:51??Tetris.plg
????.......??????1254??2009-04-18?22:13??Resource\1.bmp
????.......??????1254??2009-04-18?22:13??Resource\2.bmp
????.......??????1254??2009-04-18?22:13??Resource\3.bmp
????.......??????1254??2009-04-18?22:13??Resource\4.bmp
????.......??????1254??2009-04-18?22:13??Resource\5.bmp
????.......??????1254??2009-04-18?22:13??Resource\6.bmp
????.......??????1254??2009-04-18?22:13??Resource\7.bmp
????.......???????886??2009-04-15?21:45??Resource\bitmap1.bmp
????.......?????24056??2009-04-20?00:15??Resource\gameover.bmp
????.......???1668244??2009-04-25?12:39??Resource\Hawker‘sSong1.wav
????.......????759642??2009-04-25?12:39??Resource\Hawker‘sSong2.wav
?????文件???????2136??2013-12-02?04:29??Resource\resource.h
????.......???2487424??2009-04-25?21:06??Resource\Tetris.aps
????.......??????3574??2009-04-14?21:27??Resource\Tetris.ico
????.......??????6797??2009-04-25?20:06??Resource\Tetris.rc
????.......???????766??2003-09-22?16:09??Resource\TetrisM.ico
????..A.SH.?????23552??2009-04-24?12:40??Resource\Thumbs.db
????.......???????358??2009-04-16?20:05??Resource\toolbar.bmp
????.......????190115??2009-04-18?16:50??Resource\UI.psd
?????目錄??????????0??2009-05-02?15:49??Resource
-----------?---------??----------?-----??----
............此處省略2個(gè)文件信息
評(píng)論
共有 條評(píng)論