资源简介
为了挑战一个新的高度,作者原创了他从事WEB编程以来的第一个Win32 API应用,之所以编写一个游戏,是因为游戏考察的知识面很综合,之所以选择俄罗斯方块,一是自己曾被瘾过,二是发现这款游戏几乎包含了Widows入门的很多知识,比如窗口、消息、菜单、工具栏、资源、对话框、计时器、自绘按钮、GDI位图操作、Windows目录操作、INI文件操作等等,拿来练手会收获不少。本游戏是带有背景音乐的,一边玩游戏一边欣赏音乐的感觉相信很舒服。
代码片段和文件信息
//=========================================================
// Project Win32 俄罗斯方块程序
// File Tetris.cpp 主程序
// Update 2009.04
// Author 沉淪 http://www.EasyIDE.cn
// Download 源码爱好者:http://www.NewXing.com
// Tools Visual C++ 6.0 & Editplus 3
//=========================================================
#include “Tetris.h“
//Windows 入口函数
int WINAPI WinMain(HINSTANCE hInstanceHINSTANCE hPrevInstanceLPSTR szCmdLineint iCmdShow)
{
static TCHAR szClsName[] = TEXT(“Tetris“);
HWND hwnd;
MSG msg;
WNDCLASSEX wndclass;
InitCommonControls(); //初始化通用控件类库
//程序启动时初始化数据
hInst = hInstance;
RandomBlock(&ii&jj&cc);
//x = 4; y = -1;
iLevel = 1; iSorce = 0;
ilayer = 0; iSorceMax = TetrisIni(0);
hDcAlert = CreateCompatibleDC(NULL);
//注册窗口类
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;
}
//创建主窗口
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);
//显示窗口并刷新客户区
ShowWindow(hwndiCmdShow);
UpdateWindow(hwnd);
//构建消息循环
while ( GetMessage(&msgNULL00) )
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
//主窗口过程
LRESULT CALLBACK WndProc(HWND hwndUINT messageWPARAM wParamLPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
switch ( message )
{
case WM_CREATE:
GameUI(hwnd); //创建界面控件
GameStart(hwnd); //数据初始化
//背景音乐初始化
bMusicOn = TRUE;
iMusicBG = IDR_WAVE1;
hMenu = GetMenu(hwnd);
MusicItem(IDM_MUSIC1);
return 0;
case WM_PAINT:
hdc = BeginPaint(hwnd&ps);
DrawMatrix(hdc); //绘制游戏区
DrawTetris(hdc000); //绘制方块
DrawNext(hdc); //绘制预览区
BitBlt(hdc4020016050hDcAlert00SRCCOPY);//绘制提示语
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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 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个文件信息
相关资源
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
- c++ 虚拟摄像头
- 打飞机小游戏57466
- hook,捕获所有案件,查找所有窗口,
- C语言课设计算器
- c++ 简易贪吃蛇源码
- 高精度加法(c++代码)
- C++调用百度地图案例
- 北京化工大学计算方法(C/C++)讲义
- 基于VC++的SolidWorks二次开发SolidWorks
- c++ 模拟鼠标按键
- OFD编辑器
- Beginning C++17 From Novice to Professional
- C++ STL实现
- 俄罗斯方块游戏源码(Tetris)
- opencv手部轮廓识别以及轨迹识别
- 百度C++编码规范
- C++ sql2008 WebServer通讯.docx
- c++ 定时关机程序源码
- 基于VSCode和CMake实现C++开发
评论
共有 条评论