资源简介
基于C++控制台窗体绘图(GDI)的小游戏,俄罗斯方块,回调函数处理消息,有完整的实现逻辑,包括计分关卡机制,下一个方块预览,游戏文字说明等
代码片段和文件信息
/*
Author: ATP
Date:2015-7-25
*/
#include “stdafx.h“
#include“Brick.h“
#include
#include
#include
#include
#include
#include
#define FONTHEITH 15 //remark the font is not all limited by this define 15 is the default
extern HWND hwnd;
//the seven type brick‘s locate
int typeBK[7][4][2] = {
{ { 0 0 } { 0 1 } { 1 0 } { 1 1 } }
{ { -1 0 } { 0 0 } { 1 0 } { 2 0 } }
{ { 0 0 } { 1 0 } { 2 0 } { 0 1 } }
{ { -1 0 } { 0 0 } { 0 1 } { 1 1 } }
{ { -1 1 } { 0 0 } { 0 1 } { 1 0 } }
{ { -2 0 } { -1 0 } { 0 0 } { 0 1 } }
{ { -1 0 } { 0 0 } { 1 0 } { 0 1 } }
};
//the min/max x/y of the brick
int typeBKxy[7][4] = {
{ 0 1 0 1 }
{ -1 2 0 0 }
{ 0 2 0 1 }
{ -1 1 0 1 }
{ -1 1 0 1 }
{ -2 0 0 1 }
{ -1 1 0 1 }
};
Brick::Brick(){
srand(time(NULL));
memset(gameArea 0 sizeof(gameArea));
score = 0;
speed = 500;
nextType = rand() % 7;
firstrandBK();
judgeScore();
}
Brick::~Brick(){
}
//output certain text to the certain places
void PutOutText(char* lpsz int X int Y unsigned long fontcolor){
HDC hdc;
HFONT hF_black; //定义两种字体句柄
TEXTMETRIC tm; //定义一个TEXTMETRIC结构,用以记录字体信息
//HWND hwnd=GetForegroundWindow(); //找到程序运行窗口的句柄
hdc = GetDC((HWND)hwnd);//通过窗口句柄得到该窗口的设备场境句柄
hF_black = CreateFont //创建自定义字体
(
FONTHEITH //字体的高度
0 //由系统根据高宽比选取字体最佳宽度值
0 //文本的倾斜度为0,表示水平
0 //字体的倾斜度为0
FW_NORMAL //字体的粗度,FW_HEAVY为最粗
0 //非斜体字
0 //无下划线
0 //无删除线
GB2312_CHARSET //表示所用的字符集为ANSI_CHARSET
OUT_DEFAULT_PRECIS //输出精度为缺省精度
CLIP_DEFAULT_PRECIS //剪裁精度为缺省精度
DEFAULT_QUALITY //输出质量为缺省值
DEFAULT_PITCH | FF_DONTCARE//字间距和字体系列使用缺省值
(LPCWSTR)“粗体字“ //字体名称
);
SetTextColor(hdc fontcolor); //设置文本颜色为绿色
SetBkColor(hdc RGB(0 0 0));
Selectobject(hdc hF_black); //将自定义字体选入设备环境
GetTextMetrics(hdc &tm); //获取字体的信息,并写入tm结构中
TextOutA(hdc X Ylpsz strlen(lpsz)); //使用当前字体输出文本
ReleaseDC(hwnd hdc);
Deleteobject(hF_black); //删除自定义字体句柄
}
//
void Brick::firstrandBK(){
int randType = rand() % 7;
memcpy(activeBK.unit typeBK[randType] sizeof(activeBK.unit));
activeBK.minX = typeBKxy[randType][0];
activeBK.maxX = typeBKxy[randType][1];
activeBK.minY = typeBKxy[randType][2];
activeBK.maxY = typeBKxy[randType][3];
nextType = rand() % 7;
nextDirect = rand() % 4;
rotateBK(rand() % 4 0);
do{
activeBK.locaX = rand() % AREAWIDTH;
activeBK.locaY = -activeBK.maxY;
} while ((activeBK.minX + activeBK.locaX) < 0 || (activeBK.maxX + activeBK.locaX) > AREAWIDTH - 1);
drawNextBk();
}
//generate a random brick
void Brick::randBK(){
memcpy(activeBK.unit typeBK[nextType] sizeof(activeBK.unit));
activeBK.minX = typeBKxy[nextType][0];
activeBK.maxX = typeBKxy[nextType][1];
activeBK.minY = typeBKxy[nextType][2];
activeBK.maxY = typeB
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
I.A.... 88064 2015-07-25 19:08 RussianBrick-2015-7-25-final\Debug\RussianBrick.exe
I.A.... 10211 2017-07-13 12:44 RussianBrick-2015-7-25-final\RussianBrick\Brick.cpp
I.A.... 841 2017-07-13 12:44 RussianBrick-2015-7-25-final\RussianBrick\Brick.h
I.A.... 2310 2015-07-12 08:51 RussianBrick-2015-7-25-final\RussianBrick\ReadMe.txt
I.A.... 1766 2015-07-12 13:25 RussianBrick-2015-7-25-final\RussianBrick\resource.h
I.A.... 9912 2015-07-12 13:25 RussianBrick-2015-7-25-final\RussianBrick\RussianBrick.aps
I.A.... 13632 2017-07-13 12:44 RussianBrick-2015-7-25-final\RussianBrick\RussianBrick.cpp
I.A.... 39 2015-07-12 08:51 RussianBrick-2015-7-25-final\RussianBrick\RussianBrick.h
I...... 2998 2013-07-22 01:18 RussianBrick-2015-7-25-final\RussianBrick\RussianBrick.ico
I.A.... 5604 2015-07-12 13:25 RussianBrick-2015-7-25-final\RussianBrick\RussianBrick.rc
I.A.... 4883 2015-07-12 13:21 RussianBrick-2015-7-25-final\RussianBrick\RussianBrick.vcxproj
I.A.... 2026 2015-07-12 13:21 RussianBrick-2015-7-25-final\RussianBrick\RussianBrick.vcxproj.filters
I...... 2998 2013-07-22 01:18 RussianBrick-2015-7-25-final\RussianBrick\small.ico
I.A.... 218 2015-07-12 08:51 RussianBrick-2015-7-25-final\RussianBrick\stdafx.cpp
I.A.... 422 2015-07-12 08:51 RussianBrick-2015-7-25-final\RussianBrick\stdafx.h
I.A.... 236 2015-07-12 08:51 RussianBrick-2015-7-25-final\RussianBrick\targetver.h
I.A.... 982 2015-07-12 08:51 RussianBrick-2015-7-25-final\RussianBrick.sln
I.A..H. 32768 2015-07-25 19:16 RussianBrick-2015-7-25-final\RussianBrick.v12.suo
文件 0 2017-12-29 11:03 RussianBrick-2015-7-25-final\源码.txt
I..D... 0 2015-11-08 22:55 RussianBrick-2015-7-25-final\Debug
I..D... 0 2015-11-08 22:56 RussianBrick-2015-7-25-final\RussianBrick
I..D... 0 2017-12-29 11:09 RussianBrick-2015-7-25-final
----------- --------- ---------- ----- ----
179910 22
- 上一篇:编译原理大作业完整的词法分析器
- 下一篇:简单的词法分析器
相关资源
- 俄罗斯方块游戏源码(Tetris)
- 俄罗斯方块(c++控制台代码)
- 俄罗斯方块.cpp
- opencv版俄罗斯方块源码
- 俄罗斯方块源码用VC开发
- C语言版俄罗斯方块基于EASYX库
- VC++ Win32俄罗斯方块游戏源码(新)
- C++图形系统实现俄罗斯方块小游戏
- c++ 俄罗斯方块( + 文档)
- 用C++使用SDL库编写的俄罗斯方块游戏
- 一个控制台俄罗斯方块C++源代码及可
- 基于MFC的俄罗斯方块游戏
- 俄罗斯方块游戏exe程序和所有代码资
- 功能完善的俄罗斯方块程序(C语言编
- MFC俄罗斯方块源码
- 俄罗斯方块C语言实现,用到了C语言的
- 基于MFC的VC++俄罗斯方块程序源代码
- 自己用C语言写的俄罗斯方块游戏——
- STM32实现俄罗斯方块游戏C语言
- 手把手教你用vc6 c++ 做俄罗斯方块小游
- MFC 版俄罗斯方块
- 毕业设计-C++俄罗斯方块
- vc6.0的MFC实现简单的俄罗斯方块小游戏
- 俄罗斯方块(基于VC6.0单文档)
- MFC俄罗斯方块及源码
- 小程序 俄罗斯方块
- 最简单的C语言俄罗斯方块
- c语言实现俄罗斯方块
- VS2013写的简单小游戏俄罗斯方块
- 俄罗斯方块游戏设计C++课程设计报告
评论
共有 条评论