/*******************************************************
* 文件名称:Block.c
* 单 片 机:STC89C52RC
* 简 述:屏幕显示子程序
* 说 明:所有H,S坐标对应于10*20的方格范围内,H对应10,S对应20,右上角为(0,0)
* 作 者:刘琦
*******************************************************/
#include"12864b.h"
#include"Tetris.h"
#define ORIGINAL_POINT_X 8//起点的X坐标
#define ORIGINAL_POINT_Y 2//起点的Y坐标
#define ORIGINAL_POINT_X_YL 2//预览方块的起点X坐标
#define ORIGINAL_POINT_Y_YL 6//预览方块的起点Y坐标
#define BLOCK_SIZE 6//方块的规格
#define BLOCK_SIZE_YL 2//预览方块的规格
/*******************************************************
* 函 数 名:void DrawBlock( unsigned char X, unsigned char Y, unsigned char Color )
* 功能描述:画6×6的方块
* 函数说明:在制定位置画一个6×6的方块,用于BlockS1等
* 输入参数:unsigned char X, unsigned char Y, unsigned char Color
* X为列,Y为行,COLOR为不显示、显示或者翻转(0、1、2)
* 返 回 值:无
*******************************************************/
void DrawBlock( unsigned char X, unsigned char Y, unsigned char Color )
{
unsigned char i=0;
for(i=0;i<6;i++)
{
DrawLineX(X,X+5,Y+i,Color);
}
}
/*******************************************************
* 函 数 名:void DrawBlockSmall( unsigned char X, unsigned char Y, unsigned char Color )
* 功能描述:画2×2的方块
* 函数说明:在制定位置画一个2×2的方块,用于SmallBlock
* 输入参数:unsigned char X, unsigned char Y, unsigned char Color
* X为列,Y为行,COLOR为不显示、显示或者翻转(0、1、2)
* 返 回 值:无
*******************************************************/
void DrawBlockSmall( unsigned char X, unsigned char Y, unsigned char Color )
{
unsigned char i=0;
for(i=0;i<2;i++)
{
DrawLineX(X,X+1,Y+i,Color);
}
}
/*******************************************************
* 函 数 名:void DrawBlockMap( unsigned char H, unsigned char S, unsigned char Color )
* 功能描述:根据Map坐标,画6×6的方块
* 函数说明:在制定位置画一个6×6的方块,用于ChangeMap
* 输入参数:unsigned char H, unsigned char S, unsigned char Color
* H为列,S为行,COLOR为不显示、显示或者翻转(0、1、2)
* 返 回 值:无
*******************************************************/
void DrawBlockMap( unsigned char H, unsigned char S, unsigned char Color )
{
unsigned char i=0;
unsigned char X=0,Y=0;
X=ORIGINAL_POINT_X+S*BLOCK_SIZE;
Y=ORIGINAL_POINT_Y+H*BLOCK_SIZE;
for(i=0;i<6;i++)
{
DrawLineX(X,X+5,Y+i,Color);
}
}
/*******************************************************
* 函 数 名:ChangeSmallBlock(unsigned char color)
* 功能描述:创建或删除方块预览
* 函数说明:
* 输入参数:color,0删除,1创建
* 返 回 值:无
*******************************************************/
void ChangeSmallBlock(unsigned char color)
{
switch(ucBlockNext)
{
case 0: //S
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL-BLOCK_SIZE_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL+BLOCK_SIZE_YL,ORIGINAL_POINT_Y_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL+BLOCK_SIZE_YL,ORIGINAL_POINT_Y_YL+BLOCK_SIZE_YL,color);
break;
case 1: //Z
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL+BLOCK_SIZE_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL+BLOCK_SIZE_YL,ORIGINAL_POINT_Y_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL+BLOCK_SIZE_YL,ORIGINAL_POINT_Y_YL-BLOCK_SIZE_YL,color);
break;
case 2: //L
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL+BLOCK_SIZE_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL-BLOCK_SIZE_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL-BLOCK_SIZE_YL,ORIGINAL_POINT_Y_YL-BLOCK_SIZE_YL,color);
break;
case 3: //J
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL-BLOCK_SIZE_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL+BLOCK_SIZE_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL-BLOCK_SIZE_YL,ORIGINAL_POINT_Y_YL+BLOCK_SIZE_YL,color);
break;
case 4: //I
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL+BLOCK_SIZE_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL-BLOCK_SIZE_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL-BLOCK_SIZE_YL,color);
break;
case 5: //O
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL-BLOCK_SIZE_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL+BLOCK_SIZE_YL,ORIGINAL_POINT_Y_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL+BLOCK_SIZE_YL,ORIGINAL_POINT_Y_YL-BLOCK_SIZE_YL,color);
break;
case 6: //T
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL+BLOCK_SIZE_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL,ORIGINAL_POINT_Y_YL-BLOCK_SIZE_YL,color);
DrawBlockSmall(ORIGINAL_POINT_X_YL+BLOCK_SIZE_YL,ORIGINAL_POINT_Y_YL,color);
break;
}
}
/*******************************************************
* 函 数 名:BuildS1(unsigned char H, unsigned char S, unsigned char color)
* 功能描述:创建或删除S型方块
* 函数说明:第一形态
* 输入参数:H横;S竖;color,0删除,1创建
* 返 回 值:无
*******************************************************/
void BlockS1(unsigned char H, unsigned char S, unsigned char color)
{
DrawBlock(ORIGINAL_POINT_X+S*BLOCK_SIZE,ORIGINAL_POINT_Y+H*BLOCK_SIZE,color);//画出旋转点
DrawBlock(ORIGINAL_POINT_X+S*BLOCK_SIZE,ORIGINAL_POINT_Y+(H-1)*BLOCK_SIZE,color);
DrawBlock(ORIGINAL_POINT_X+(S+1)*BLOCK_SIZE,ORIGINAL_POINT_Y+H*BLOCK_SIZE,color);
DrawBlock(ORIGINAL_POINT_X+(S+1)*BLOCK_SIZE,ORIGINAL_POINT_Y+(H+1)*BLOCK_SIZE,color);
}
/*******************************************************
* 函 数 名:BuildS2(unsigned char H, unsigned char S ,unsigned char color)
* 功能描述:创建或删除S型方块
* 函数说明:第二形态
* 输入参数:H横;S竖;color,0删除,1创建
* 返 回 值:无
*******************************************************/
void BlockS2(unsigned char H, unsigned char S, unsigned char color)
{
DrawBlock(ORIGINAL_POINT_X+S*BLOCK_SIZE,ORIGINAL_POINT_Y+H*BLOCK_SIZE,color);//画出旋转点
DrawBlock(ORIGINAL_POINT_X+(S-1)*BLOCK_SIZE,ORIGINAL_POINT_Y+H*BLOCK_SIZE,color);
DrawBlock(ORIGINAL_POINT_X+S*BLOCK_SIZE,ORIGINAL_POINT_Y+(H-1)*BLOCK_SIZE,color);
DrawBlock(ORIGINAL_POINT_X+(S+1)*BLOCK_SIZE,ORIGINAL_POINT_Y+(H-1)*BLOCK_SIZE,color);
}
/*******************************************************
* 函 数 名:BuildZ1(unsigned char H, unsigned char S ,unsigned char color)
* 功能描述:创建或删除Z型方块
* 函数说明:第一形态
* 输入参数:H横;S竖;color,0删除,1创建
* 返 回 值:无
*******************************************************/
void BlockZ1(unsigned char H, unsigned char S, unsigned char color)
{
DrawBlock(ORIGINAL_POINT_X+S*BLOCK_SIZE,ORIGINAL_POINT_Y+H*BLOCK_SIZE,color);//画出旋转点
DrawBlock(ORIGINAL_POINT_X+S*BLOCK_SIZE,ORIGINAL_POINT_Y+(H+1)*BLOCK_SIZE,color);
DrawBlock(ORIGINAL_POINT_X+(S+1)*BLOCK_SIZE,ORIGINAL_POINT_Y+H*BLOCK_SIZE,color);
DrawBlock(ORIGINAL_POINT_X+(S+1)*BLOCK_SIZE,ORIGINAL_POINT_Y+(H-1)*BLOCK_SIZE,color);
}
/*******************************************************
* 函 数 名:BuildZ2(unsigned char H, unsigned char S ,unsigned char color)
* 功能描述:创建或删除Z型方块
* 函数说明:第二形态
* 输入参数:H横;S竖;color,0删除,1创建
* 返 回 值:无
*******************************************************/
void BlockZ2(unsigned char H, unsigned char S, unsigned char color)
{
DrawBlock(ORIGINAL_POINT_X+S*BLOCK_SIZE,ORIGINAL_POINT_Y+H*BLOCK_SIZE,color);//画出旋转点
DrawBlock(ORIGINAL_POINT_X+S*BLOCK_SIZE,ORIGINAL_POINT_Y+(H-1)*BLOCK_SIZE,color);
DrawB
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
GJZGRB
- 粉丝: 2982
- 资源: 7735
最新资源
- 探究动态渗透率模型下的天然气水合物降压开采:深度数值模拟分析与研究,探究动态渗透率模型下的天然气水合物降压开采:精细数值模拟与分析研究,基于动态渗透率模型的天然气水合物降压开采数值模拟研究 ,基于动态
- 基于动态渗透率模型下的天然气水合物降压开采过程数值模拟研究:探索开采策略与影响因素分析,基于动态渗透率模型与数值模拟的天然气水合物降压开采技术研究与应用分析,基于动态渗透率模型的天然气水合物降压开采数
- 煤层开挖过程与邻近煤岩层应力变形场变化及保护层效应研究模型,煤层开挖过程应力变形场变化及瓦斯流动弹塑性模型研究,煤层工作开挖过程,会引起邻近煤岩层应力、变形场发生变化,以及引起临近煤层卸压,从而达到保
- 电气安全专业基础-.pdf
- 利用PID控制器模拟智能控温建筑房间温度-Simulink在MATLAB中的实现及详细pdf介绍,基于Simulink的MATLAB环境的PID控制器模拟,实现对房间温度的精准控制附带详细pdf介绍
- 一个用 c 语言编写的学生成绩管理系统源码
- STM32微控制器的入门教程,涵盖基础知识、开发环境搭建、常用功能实现及学习路径
- 直流电机双闭环调速控制系统仿真模型:转速与电流双闭环PI控制研究及Matlab Simulink应用报告,直流电机双闭环调速控制系统仿真模型研究:转速与电流双闭环PI控制算法的探索与实践(基于Matl
- 基于Matlab Simulink的四机两区域与IEEE 39节点系统短路故障分析与潮流计算研究,基于Matlab Simulink的四机两区域与IEEE 39节点系统短路故障分析与潮流计算研究,Ma
- 一个用 c 语言编写的链表实现栈的源码
- VSG并联技术详解:专业讲解视频带你深入了解其运作原理与实际应用,VSG并联技术详解:专业讲解视频带你深入了解并联运行原理与操作应用,VSG并联,有对应讲解视频 ,VSG并联; 对应讲解视频; 电力技
- 健康评分主要受运动频率、胆固醇水平和年龄的影响
- 2000-2019年上市公司银企关系数据.xls
- Matlab Simulink下的双馈风机风电调频技术研究:含虚拟惯性惯量控制与下垂控制,快速仿真达20秒,基于MATLAB Simulink的双馈风机风电调频技术:包含虚拟惯性惯量与下垂控制策略的快
- 基于煤层渗透扩散特性消除的煤与瓦斯气固耦合模型研究:建立修正P-M渗透率模型与多物理场耦合关系分析,煤层瓦斯渗透扩散的深部采煤影响与煤固气耦合模型的构建与应用研究,立足于消除煤层渗透及扩散特性对于煤与
- Matlab Simulink下的风光火储联合调频系统:混合储能优化与等值系统分析,风电三相电压电流离散模型仿真研究,Matlab Simulink下的风光火储联合调频系统:混合储能优化与等值系统分析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)