吐血巨献stm32 DIY俄罗斯方块 断断续续写了四天中间还有一天补牙 调了一下午
张静茹2014/08/20软件综合 IP:北京
本帖最后由 张静茹 于 2014-8-20 21:02 编辑

点击此处查看视频

贪吃蛇的帖子https://www.kechuang.org/t/66641

俄罗斯方块.jpg

先上程序


+500  科创币    科创网    2014/08/20 编译和运行环境。
+50  科创币    yanli12321    2014/08/20 超高节操发帖
+1  科创币    布布卡    2014/08/21 感谢分享
+1  科创币    wangrui555    2014/08/21 身为计算机专业的我,自叹不如啊~
+1  学术分    1211    2014/09/14 赞扬
来自:计算机科学 / 软件综合
27
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
发电机
9年8个月前 IP:未同步
714451
哈哈,看的捉急啊,,玩的不错加油~[s:12][s:12]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
点点_
9年8个月前 IP:未同步
714459
仰望高端玩家玩STM32,还是彩色TFT屏。
另外那个BGM是什么?一直好想要
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
9年8个月前 IP:未同步
714466
点点_ 发表于 2014-8-20 20:45
仰望高端玩家玩STM32,还是彩色TFT屏。
另外那个BGM是什么?一直好想要


River Flows In You  百度
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
bxbian951122
9年8个月前 IP:未同步
714499
被stm32的i2c玩死的默默点赞
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
9年8个月前 IP:未同步
714519
本帖最后由 张静茹 于 2014-8-21 12:51 编辑

三四天的时间 思路改了好几次,刚开始 写了一个10*10方块的函数,打算每个形状的 方框都写一个函数,然后检测屏幕哪一行满了就计分 ,后来发现不太好检测,原子自带的那个 检测屏幕颜色的函数也不大好用,而且左移右移之后怎样能不淹没已经固定的方块,最后改成了现在的程序 定义一个32个元素 的int数组,屏幕分辨率320*240,每个元素代表一行。每位对应一个10*10方块,在写一个专门刷屏的函数,只要计算好这个数组表就能实现 左移右移 计分的功能,
void left_shift(void); //左移函数
void right_shift(void); //右移函数
char down_shift(void); //下移
方块形状存到box_date[19][4]

box_xy[0]=0;box_xy[1]=10;   //复位xy标记
Calculation_Fraction(); //计分
KEY.n=rand()%0x13; //形成随即形状
box_date_temp[0]=box_date[KEY.n][0]; //放进临时缓存数组
box_date_temp[1]=box_date[KEY.n][1];
box_date_temp[2]=box_date[KEY.n][2];
box_date_temp[3]=box_date[KEY.n][3];
然后由down_shift函数 对准将 方块缓存box_date_temp[0]对准屏幕缓存box[],拷贝进准确的位置,由fresh_screen();更新到屏幕

然后再次用down_shift下降方块,并且判断 是否已经落到屏幕底部,或者 通过方块缓存box_date_temp与屏幕缓存box[]与运算,结果大于0说明落到落到别的方块上面了,

unsigned int box[32]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
const unsigned int box_date[19][4]={
0x2000, 0x2000, 0x2000, 0x2000, //垂直四块 0
0x0000, 0x0000, 0x0000, 0x7800, //水平四块 1
0x0000, 0x0000, 0x6000, 0x3000, //正Z水平 2
0x0000, 0x2000, 0x6000, 0x4000, //正Z垂直 3
0x0000, 0x0000, 0x3000, 0x6000, //反Z水平 4
0x0000, 0x4000, 0x6000, 0x2000, //反Z垂直 5
0x0000, 0x6000, 0x2000, 0x2000, //正7 +0 6
0x0000, 0x0000, 0x1000, 0x7000, //正7 +90 7
0x0000, 0x4000, 0x4000, 0x6000, //正7 +180 8
0x0000, 0x0000, 0x7000, 0x4000, //正7 +270 9
0x0000, 0x6000, 0x4000, 0x4000, //反7 +0 10 a
0x0000, 0x0000, 0x7000, 0x1000, //反7 +90 11 b
0x0000, 0x2000, 0x2000, 0x6000, //反7 +180 12 c
0x0000, 0x0000, 0x4000, 0x7000, //反7 +270 13 d
0x0000, 0x0000, 0x2000, 0x7000, //上土 14 e
0x0000, 0x0000, 0x7000, 0x2000, //下土 15 f
0x0000, 0x4000, 0x6000, 0x4000, //右土 16 10
0x0000, 0x2000, 0x6000, 0x2000, //左土 17 11
0x0000, 0x0000, 0x6000, 0x6000 //田 18 12
};

void box_delete(void); //删除当前方块
void box_change(void); //更改方块形状
//void box_xy(void); //取方框 在box数组中的位置
//char box_judge(void); //判断方块 落到底,碰到 别的方块
void refresh_screen(void);//刷屏函数
unsigned int Calculation_Fraction(void);//计算分数
void Row_Down(signed char); //整排下降

@科创论坛, 编译环境是keil5.1 psb.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
xjp13
9年8个月前 IP:未同步
714547
不得不说很不错,赞一个
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
请叫我jun先生
9年8个月前 IP:未同步
715599
很不错,stm32玩的很好啊
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
biggigi2002
9年8个月前 IP:未同步
715600
有魅力的女人[s:12]     正在学DSP的飘过
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
lat158
9年8个月前 IP:未同步
719535
求好友
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
lat158
9年8个月前 IP:未同步
719536
求好友
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
myname_360
9年8个月前 IP:未同步
719557
代码写的真工整,大赞一下。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
9年8个月前 IP:未同步
719624
myname_360 发表于 2014-9-11 21:33
代码写的真工整,大赞一下。


格式强迫症, 格式错了感觉会报错似的,传上来的格式就乱了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
.........
9年7个月前 IP:江西
720971
ST竟然为它的I2C写了1000多行的库……
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
chenhello
9年7个月前 IP:湖南
722439
毅力十足
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
他的小弟弟
9年4个月前 IP:江苏
738780
为何现在看不见程序包了。。
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
他的小弟弟
9年4个月前 IP:江苏
738783
跪求美女楼主看到了能把程序包发我。急用!!邮箱736651942@XXXXXX。好人一生平安,谢谢!!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
Jeep
9年4个月前 IP:湖北
739959
[s::lol]赞
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
北落师门
9年4个月前 IP:浙江
739979
改下程序让掉下来的全是长条呗[s::lol]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
大胆哥
9年2个月前 IP:广东
753030
[s::lol]女孩子居然会玩这些,太神了,
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
大胆哥
9年2个月前 IP:广东
753031
我[s::$]可惜,楼主把我Q删除了
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
smith
9年2个月前 IP:广东
753057
做这个开发板的人好像是我读书的时候比我大一个年级的一个师兄,网名叫正点原子什么的
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
refinder
9年2个月前 IP:德国
753073
my dream girl 是要会写程序的!求交往
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
小氚
9年2个月前 IP:广东
755937
引用 张静茹:
River Flows In You  百度
https://www.kechuang.org/t/70472
这个怎么搞
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
samsun185
9年2个月前 IP:山东
755945
这么年轻,牙居然坏了?!!!!!!
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
张静茹作者
9年2个月前 IP:北京
755957
引用 samsun185:
这么年轻,牙居然坏了?!!!!!!
[s:30]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
adam2015
8年8个月前 IP:广东
789972
STM32 初学
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
张静茹
进士 学者 机友 笔友
文章
138
回复
1857
学术分
1
2010/12/30注册,2个月1天前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}