資源簡介
基于C++控制臺窗體繪圖(GDI)的小游戲,俄羅斯方塊,回調(diào)函數(shù)處理消息,有完整的實現(xiàn)邏輯,包括計分關卡機制,下一個方塊預覽,游戲文字說明等

代碼片段和文件信息
/*
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 //創(chuàng)建自定義字體
(
FONTHEITH //字體的高度
0 //由系統(tǒng)根據(jù)高寬比選取字體最佳寬度值
0 //文本的傾斜度為0,表示水平
0 //字體的傾斜度為0
FW_NORMAL //字體的粗度,F(xiàn)W_HEAVY為最粗
0 //非斜體字
0 //無下劃線
0 //無刪除線
GB2312_CHARSET //表示所用的字符集為ANSI_CHARSET
OUT_DEFAULT_PRECIS //輸出精度為缺省精度
CLIP_DEFAULT_PRECIS //剪裁精度為缺省精度
DEFAULT_QUALITY //輸出質(zhì)量為缺省值
DEFAULT_PITCH?|?FF_DONTCARE//字間距和字體系列使用缺省值
(LPCWSTR)“粗體字“ //字體名稱
);
SetTextColor(hdc?fontcolor); //設置文本顏色為綠色
SetBkColor(hdc?RGB(0?0?0));
Selectobject(hdc?hF_black); //將自定義字體選入設備環(huán)境
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
- 上一篇:編譯原理大作業(yè)完整的詞法分析器
- 下一篇:簡單的詞法分析器
評論
共有 條評論