资源简介
C++版本俄罗斯方块代码,小巧,但是非常经典!vs 2015 编译通过!@
代码片段和文件信息
#include
#include
#include
#define CELL 20
#define ROWS 25
#define COLS 15
//升级所需分数值
#define SCORE_LEVEL_INC 80
#define ID_TIMER 1
/////////////////全局变量/////////////////////////////
HWND hwnd; //保存窗口句柄
int score=0; //分数
int level=0; //级数
int interval_unit=25; //随级数递增的时间间隔增量
int interval_base=300; //时间间隔基量
int old_interval; //保存当前的时间间隔,用于加速操作
int cur_leftcur_top; //记录方块当前的位置
int width_blockheight_block; //方块的宽带和高度
bool isPause=false; //暂停标识
UINT timer_id=0; //保存计时器ID
static byte *block=NULL; //方块,方块为随机大小,采用动态分配内存方式,所以这里是指针变量
byte g_panel[ROWS][COLS]={0};
////////////////////////////////////////////////////
LRESULT CALLBACK WndProc ( HWNDUINTWPARAMLPARAM );
void DrawPanel ( HDC hdc ); //绘制表格
void RefreshPanel ( HDC hdc ); //刷新面板
void DoDownShift ( HDC hdc ); //下移
void DoLeftShift ( HDC hdc ); //左移
void DoRightShift ( HDC hdc ); //右移
void DoAccelerate ( HDC hdc ); //加速
void DoRedirection ( HDC hdc ); //改变方向
void ClearRow ( HDC hdc ); //消行
bool ExportBlock(); //输出方块,
//该函数会直接修改全局变量blockwidth_blockheight_block
//cur_left和cur_top
bool IsTouchBottom ( HDC hdc ); //判断是否到达底部
int main()
{
HINSTANCE hInstance=GetModuleHandle ( NULL );
TCHAR szAppName[]=TEXT ( “teris“ );
MSG msg;
WNDCLASS wc;
wc.style=CS_HREDRAW|CS_VREDRAW;
wc.lpfnWndProc=WndProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=LoadIcon ( NULLIDI_APPLICATION );
wc.hCursor=LoadCursor ( NULLIDC_ARROW );
wc.hbrBackground= ( HBRUSH ) GetStockobject ( WHITE_BRUSH );
wc.lpszMenuName=NULL;
wc.lpszClassName=szAppName;
if ( !RegisterClass ( &wc ) )
{
printf ( “RegisterClass occur errors!“ );
return 0;
}
hwnd=CreateWindow ( szAppNameTEXT ( “Teris Demo“ )
WS_OVERLAPPEDWINDOW
0000
NULL
NULL
hInstance
NULL );
ShowWindow ( hwndSW_SHOW );
UpdateWindow ( hwnd );
while ( GetMessage ( &msgNULL00 ) )
{
TranslateMessage ( &msg );
DispatchMessage ( &msg );
}
return msg.wParam;
}
void DrawPanel ( HDC hdc ) //绘制游戏面板
{
int xy;
RECT rect;
for ( y=0; y {
for ( x=0; x {
//计算方块的边框范围
rect.top=y*CELL+1;
rect.bottom= ( y+1 ) *CELL-1;
rect.left=x*CELL+1;
rect.right= ( x+1 ) *CELL-1;
frameRect ( hdc&rect ( HBRUSH ) GetStockobject ( BLACK_BRUSH ) );
}
}
}
void DoDownShift ( HDC hdc ) //下移
{
if ( NULL==block ) return;
//判断是否到达底部
if ( IsTouchBottom ( hdc ) ) //到底部
{
//消行处理
ClearRow ( hdc );
ExportBlock(); //输出下一个方块
}
cur_top++;
RefreshPanel ( hdc );
}
void DoLeftShift ( HDC hdc ) //左移
{
int xy;
if ( NULL==block ) return;
if ( 0==cur_left ) return;
if ( cur_top<0 ) return; //方块没有完整显示前,不能左移
for ( y=0; y {
for ( x=0; x<
- 上一篇:电力系统短路程序
- 下一篇:C++程序设计语言_特别版
相关资源
- VC++ 中国象棋经典游戏源代码
- Qt飞机大战小游戏源代码
- C语言c++游戏源代码大全
- VC++ 推箱子游戏源代码(双缓存版)
- C++控制台小游戏《突破重围》,有所
- 台球游戏源代码
- C++实现的经典小游戏源代码
- 太空入侵者游戏源代码VC++
- c++基于OpenGL的游戏源代码
- c++经典棋类游戏源代码合集.rar
- 几个c++游戏源代码
- VC++版贪吃蛇游戏源代码
- c++基于Windows编程的打飞机小游戏源代
- C++飞机游戏源代码
- 三国志游戏源代码C语言版本
- C++版贪吃蛇游戏源代码
- 坦克大战游戏源代码C++源代码
- codeblocks写的c语言小游戏源代码
- c语言迷宫游戏源代码
- C语言战争游戏源代码
- 网络对战象棋游戏源代码
- C++实现开心消消乐游戏源代码+教学视
- C++实现塔防游戏源代码
- C语言小精灵游戏源代码包含画图库
- MFC贪吃蛇游戏源代码
- C语言数独游戏源代码+注释(.C文件)
- 用C++实现的经典小游戏源代码
- c语言坦克游戏源代码带声音效果
- 球球大战游戏源代码c++
- 2048小游戏源代码Linux平台
评论
共有 条评论