到过年了 走亲访友又花去两天,进度又落下了
今天学习了俄罗斯方块小游戏
/*这是头文件*/
#define BLOCK_COUNT 5 //数量
#define BLOCK_WIDTH 5 //宽度
#define BLOCK_HEIGHT 5 //高度
#define BLOCK_SIZE 20 //方块的像素大小
#define START_X 130 //掉落方块位置的X轴
#define START_Y 30 //掉落方块位置的Y轴
#define KEY_UP 72 //按键的 ↑ → ← 的对应ALLS值
#define KEY_RIGHT 77
#define KEY_DOWN 78
#define KEY_LEFT 75
int block[BLOCK_COUNT * 4][BLOCK_HEIGHT][BLOCK_WIDTH] = //[三种 * 形态][行][列]
{
//条形方块
{
0,0,0,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,0,0,0,0,
0,1,1,1,0,
0,0,0,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,0,0,0,0,
0,1,1,1,0,
0,0,0,0,0,
0,0,0,0,0
},
// L 形方块
{
0,0,0,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,1,1,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,0,0,0,0,
0,1,1,1,0,
0,1,0,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,1,1,0,0,
0,0,1,0,0,
0,0,1,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,0,0,1,0,
0,1,1,1,0,
0,0,0,0,0,
0,0,0,0,0
},
// 田 形方块
{
0,0,0,0,0,
0,1,1,0,0,
0,1,1,0,0,
0,0,0,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,1,1,0,0,
0,1,1,0,0,
0,0,0,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,1,1,0,0,
0,1,1,0,0,
0,0,0,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,1,1,0,0,
0,1,1,0,0,
0,0,0,0,0,
0,0,0,0,0
},
// T 形方块
{
0,0,0,0,0,
0,1,1,1,0,
0,0,1,0,0,
0,0,0,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,0,0,1,0,
0,0,1,1,0,
0,0,0,1,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,0,1,0,0,
0,1,1,1,0,
0,0,0,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,1,0,0,0,
0,1,1,0,0,
0,1,0,0,0,
0,0,0,0,0
},
// Z 形方块
{
0,0,0,0,0,
0,1,1,0,0,
0,0,1,1,0,
0,0,0,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,0,1,0,0,
0,1,1,0,0,
0,1,0,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,1,1,0,0,
0,0,1,1,0,
0,0,0,0,0,
0,0,0,0,0
},
{
0,0,0,0,0,
0,0,1,0,0,
0,1,1,0,0,
0,1,0,0,0,
0,0,0,0,0
}
};
#include <stdio.h>
#include <graphics.h>
#include <time.h>
#include <conio.h> //kbhit()使用
#include "TetrisGame.h"
int color[BLOCK_COUNT] =
{
GREEN,CYAN,MAGENTA,BROWN,YELLOW
};
//欢迎界面
void welcome(void)
{
initgraph(550, 660); //初始化画布
//设置窗口标题
HWND window = GetHWnd(); //获取窗口
SetWindowText(window, _T("俄罗斯方块 开发员:王黎明")); //设置窗口最上方标题
//设置文本的字体样式
settextstyle(40, 0, _T("微软雅黑")); //设置字体的形式
setcolor(WHITE); //设置颜色
outtextxy(205, 200, _T("俄罗斯方块")); //输出文本的位置
settextstyle(22, 0, _T("楷体"));
outtextxy(175, 300, _T("编程的开始,重俄罗斯方块开始!"));
Sleep(3000); //睡眠 (暂停) 3000毫秒 3秒钟
}
//初始化游戏场景
void initGameScene(void)
{
char str[16]; //存放分数,等级字符的数组
cleardevice(); //清除屏幕
rectangle(27, 27, 336, 635); //外面一层方框
rectangle(29, 29, 334, 633); //里面一层方框
rectangle(370, 50, 515, 195); //右上角方框
//设置右下角的字体
settextstyle(24, 0, _T("楷体")); //设置字体的形式
setcolor(LIGHTGRAY); //设置颜色:浅灰色
outtextxy(405, 215, _T("下一个")); //输出文本的位置
//设置分数
setcolor(RED); //设置颜色:红色
outtextxy(405, 280, _T("分数")); //输出文本的位置
sprintf_s(str, "%d", score); //输入分数
outtextxy(415, 310, str); //显示分数的位置
//设置等级
setcolor(RED); //设置颜色:红色
outtextxy(405, 375, _T("等级")); //输出文本的位置
sprintf_s(str, "%d", rank); //输入等级
outtextxy(425, 405, str); //显示分数的位置
//操作说明
setcolor(LIGHTBLUE); //设置颜色:浅蓝色
outtextxy(390, 475, _T("操作说明:")); //输出文本的位置
outtextxy(390, 500, _T(" ↑ :旋转"));
outtextxy(390, 525, _T(" ↓ :下降"));
outtextxy(390, 550, _T(" ← :左移"));
outtextxy(390, 575, _T(" → :右移"));
outtextxy(390, 600, _T("空格:暂停"));
}
int main()
{
welcome();
initGameScene();
system("pause");
closegraph(); //关闭画布
return 0;
}
完成了游戏搭建的框架