/*******************************************************
* 文件名称: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
没有合适的资源?快使用搜索试试~ 我知道了~
51单片机课设实验源码-LCD12864俄罗斯方块STC51单片机例程源码.zip
共46个文件
obj:10个
lst:10个
h:8个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 59 浏览量
2024-05-24
07:32:15
上传
评论 1
收藏 152KB ZIP 举报
温馨提示
51单片机课设实验源码-LCD12864俄罗斯方块STC51单片机例程源码.zip
资源推荐
资源详情
资源评论
收起资源包目录
51单片机课设实验源码-LCD12864俄罗斯方块STC51单片机例程源码.zip (46个子文件)
51单片机课设实验源码-LCD12864俄罗斯方块STC51单片机例程源码
12864b.h 974B
task_key.c 9KB
TaskBlock.h 435B
Tetris.hex 18KB
task_activation.LST 7KB
STARTUP.LST 14KB
task_key.h 279B
Tetris.OBJ 10KB
ChangeBlock.h 319B
12864b.c 12KB
TaskBlock.LST 14KB
Tetris.c 5KB
12864b.OBJ 15KB
task_activation.OBJ 7KB
Score.LST 3KB
STARTUP.A51 6KB
TaskScreen.LST 32KB
Score.OBJ 4KB
task_activation.h 115B
ChangeBlock.LST 5KB
task_key.OBJ 15KB
task_activation.c 3KB
Tetris.plg 471B
Tetris_uvopt.bak 59KB
TaskBlock.OBJ 11KB
Tetris 86KB
TaskBlock.c 5KB
TaskScreen.OBJ 37KB
Block.c 27KB
Tetris.lnp 162B
task_key.LST 25KB
Block.LST 45KB
ChangeBlock.OBJ 5KB
Tetris.M51 83KB
Tetris.h 823B
Tetris.uvproj 14KB
Block.OBJ 43KB
Tetris.uvopt 59KB
ChangeBlock.c 2KB
STARTUP.OBJ 749B
Tetris.LST 10KB
Score.c 951B
Score.h 81B
12864b.LST 22KB
Block.h 556B
Tetris_uvproj.bak 14KB
共 46 条
- 1
资源评论
- m0_740627232024-06-04资源和描述一致,质量不错,解决了我的问题,感谢资源主。
GJZGRB
- 粉丝: 1983
- 资源: 7116
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- IMG_5255.jpg
- 大学常用数据库设计建库建表语句整理,以及pymysql连接数据库应用案例
- 大学城33-101智能家居报价.xls
- 基于C语言的字符串拼接
- CDBL, a JSON alternative, Curly Brackets Document Layout
- A website for updating and displaying the CBDL tag game data
- 串口与按键控制直流电机运行及液晶屏显示状态
- 精品英格索兰远程管理系统项目细化
- google个人资料.psd
- Windows下开箱后即时编译体验freeRTOS 的MDK demo工程,使用事件Event实现freeRTOS多线程通信
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功