資源簡介
俄羅斯方塊(c++控制臺代碼)
代碼片段和文件信息
#include
#include
#include
#define?W?14?//游戲區(qū)域?qū)挾?br/>#define?H?20?//游戲區(qū)域高度
#define?W1?6?//右邊狀態(tài)欄寬度
#define?BSIZE?25?//游戲方格邊長
#define?Y1?6?//放置照片底端的縱坐標(biāo)
#define?Y2?12?//分?jǐn)?shù)顯示欄頂端縱坐標(biāo)
#define?Y3?15?//等級顯示欄頂端縱坐標(biāo)
#define?Y4?7?//幫助欄頂端縱坐標(biāo)
#define?Cur_x?W/2-1?//游戲方塊初始狀態(tài)左上角橫坐標(biāo)
#define?Cur_y?1?//初始狀態(tài)左上角縱坐標(biāo)
#define?BgColor?RGB(0xF50xF50xDC)?//米色
#define?FgColor?RGB(255153204)?//粉紅
#define?RED?RGB(25500)
#define?ORANGE?RGB(255970)
#define?YELLOW?RGB(25515318)
#define?GREEN?RGB(3413934)
#define?CYAN?RGB(1284242)
#define?LIGHT_BLUE?RGB(65105225)?//天藍(lán)色
#define?PURPLE?RGB(2550255)
#define?MS_NEWBLOCK?WM_USER+1??//?消息ID,產(chǎn)生新的【方塊】
int?score=0level=0level_step=100;?//分?jǐn)?shù)等級以及每等級所需分?jǐn)?shù)的定義及初始化
int?top=H-1;?//最頂端的縱坐標(biāo)
int?xy;?//方塊當(dāng)前位置的橫坐標(biāo)及縱坐標(biāo)
int?cur_boxnumnext_boxnum;?//cur_boxnum是當(dāng)前方塊編號,next_boxnum是下一個方塊編號
struct?BOARD
{
int?var;?//狀態(tài),1代表已被占用,0代表未被占用
int?color;?//顏色
}board[H][W];?//定義游戲主板,H行N列
struct?BLOCK
{
int?a[4][2];?//定義方塊形狀的數(shù)組,每行為方塊左上角坐標(biāo)
int?color;?//方塊顏色
int?next;?//下一個方塊的號碼
};
struct?BLOCK?block[19]=
{??//初始化各個游戲方塊
{11121323RED1}
{02122203RED2}
{01111213RED3}
{21021222RED0}
{11120313ORANGE5}
{01021222ORANGE6}
{11211213ORANGE7}
{02122223ORANGE4}
{11021222YELLOW9}
{11122213YELLOW10}
{02122213YELLOW11}
{11021213YELLOW8}
{11122223GREEN13}
{12220313GREEN12}
{21122213CYAN15}
{02121323CYAN14}
{10111213LIGHT_BLUE17}
{02122232LIGHT_BLUE16}
{11211222PURPLE18}
};
void?Paint(HDC?hdcHPEN?hpen)?//此函數(shù)用于初始化界面
{
int?ij;
HPEN?hpen1;?//定義畫筆,用于繪制分隔線
HBRUSH?hbrush=CreateSolidBrush(BgColor);?//定義畫刷并賦初值,畫刷顏色采用背景色
hpen1=CreatePen(PS_DASHDOTDOT3FgColor);?//給畫筆賦初值,顏色為前景色,線寬為3,雙點劃線
Selectobject(hdchpen1);?//選擇畫筆
MoveToEx(hdcW*BSIZE0NULL);?//將光標(biāo)移動到(W*BSIZE0)處
LineTo(hdcW*BSIZEH*BSIZE);?//從光標(biāo)所在位置畫線到(W*BSIZEH*BSIZE)處
Deleteobject(hpen1);?//刪除之前所選用的畫筆
Selectobject(hdchpen);?//重新選擇畫筆
Selectobject(hdchbrush);?//選擇畫刷
for(i=1;i for(j=1;j Rectangle(hdcj*BSIZEi*BSIZE(j+1)*BSIZE(i+1)*BSIZE);
for(i=1;i<5;i++)??//繪制右邊狀態(tài)欄游戲預(yù)覽區(qū)域方格線
for(j=W+1;j Rectangle(hdcj*BSIZEi*BSIZE(j+1)*BSIZE(i+1)*BSIZE);
Rectangle(hdc(W+1)*BSIZEY2*BSIZE(W+W1-1)*BSIZE(Y2+2)*BSIZE);?//繪制分?jǐn)?shù)欄方格線
Rectangle(hdc(W+1)*BSIZEY3*BSIZE(W+W1-1)*BSIZE(Y3+2)*BSIZE);?//繪制等級欄方格線
Rectangle(hdc(W+1)*BSIZEY4*BSIZE(W+W1-1)*BSIZE(Y4+4)*BSIZE);?//繪制幫助欄方格線
TextOut(hdc(W+2)*BSIZE(Y2+0.2)*BSIZETEXT(“分????數(shù)“)8);?//輸出文字
TextOut(hdc(W+2)*BSIZE(Y3+0.2)*BSIZETEXT(“等????級“)8);?//同上
Deleteobject(hpen);?//刪除畫筆
Deleteobject(hbrush);?//刪除畫刷
}
void?ShowScore(HDC?hdc)?//顯示分?jǐn)?shù)的函數(shù)
{
TCHAR??score_str[4];?//定義字符串用于保存分?jǐn)?shù)值
wsprintf(score_strTEXT(“%3d“)score);?//將數(shù)字score轉(zhuǎn)換成字符串后保存到score_str之中
Tex
- 上一篇:基于ege圖形的推箱子游戲
- 下一篇:走迷宮(自動生成迷宮版本!)
評論
共有 條評論