• 大小: 0.01M
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-04-13
  • 语言: C/C++
  • 标签: 俄罗斯  

资源简介

俄罗斯方块(c++控制台代码)

资源截图

代码片段和文件信息

#include
#include
#include

#define W 14 //游戏区域宽度
#define H 20 //游戏区域高度
#define W1 6 //右边状态栏宽度
#define BSIZE 25 //游戏方格边长
#define Y1 6 //放置照片底端的纵坐标
#define Y2 12 //分数显示栏顶端纵坐标
#define Y3 15 //等级显示栏顶端纵坐标
#define Y4 7 //帮助栏顶端纵坐标
#define Cur_x W/2-1 //游戏方块初始状态左上角横坐标
#define Cur_y 1 //初始状态左上角纵坐标
#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) //天蓝色
#define PURPLE RGB(2550255)
#define MS_NEWBLOCK WM_USER+1  // 消息ID,产生新的【方块】

int score=0level=0level_step=100; //分数等级以及每等级所需分数的定义及初始化
int top=H-1; //最顶端的纵坐标
int xy; //方块当前位置的横坐标及纵坐标
int cur_boxnumnext_boxnum; //cur_boxnum是当前方块编号,next_boxnum是下一个方块编号

struct BOARD
{
int var; //状态,1代表已被占用,0代表未被占用
int color; //颜色
}board[H][W]; //定义游戏主板,H行N列

struct BLOCK
{
int a[4][2]; //定义方块形状的数组,每行为方块左上角坐标
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) //此函数用于初始化界面
{
int ij;
HPEN hpen1; //定义画笔,用于绘制分隔线
HBRUSH hbrush=CreateSolidBrush(BgColor); //定义画刷并赋初值,画刷颜色采用背景色

hpen1=CreatePen(PS_DASHDOTDOT3FgColor); //给画笔赋初值,颜色为前景色,线宽为3,双点划线
Selectobject(hdchpen1); //选择画笔
MoveToEx(hdcW*BSIZE0NULL); //将光标移动到(W*BSIZE0)处
LineTo(hdcW*BSIZEH*BSIZE); //从光标所在位置画线到(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++)  //绘制右边状态栏游戏预览区域方格线
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); //绘制分数栏方格线
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(“分    数“)8); //输出文字
TextOut(hdc(W+2)*BSIZE(Y3+0.2)*BSIZETEXT(“等    级“)8); //同上

Deleteobject(hpen); //删除画笔
Deleteobject(hbrush); //删除画刷
}

void ShowScore(HDC hdc) //显示分数的函数
{
TCHAR  score_str[4]; //定义字符串用于保存分数值
wsprintf(score_strTEXT(“%3d“)score); //将数字score转换成字符串后保存到score_str之中
Tex

评论

共有 条评论