Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
俄罗斯方块
RT-Thread一般讨论
ART-Badge V2.0 之俄罗斯方块开发
1.00
发布于 2022-01-25 20:37:44 浏览:1137
订阅该版
[tocm] ## 思路: 在看到 ART-Badge V2.0 支持了 2048 小游戏之后,萌生了制作一个 俄罗斯方块的小游戏,毕竟是童年的经典。 整个工程是在原有的 ART_Game 工程的基础上进行开发的 在游戏列表中添加跳转的页面选项:card1 中添加 panel4 以及 imagebox3 的子控件,用于列表中游戏的选择 ![image.png](https://oss-club.rt-thread.org/uploads/20220125/23f1ab7c84b9d8cea6b5ed3f284801ca.png) 在 JS 中添加 游戏名称,以及跳转页面的代码 ![image.png](https://oss-club.rt-thread.org/uploads/20220125/37831a2d8fee36c7a160b3b7bf1e7a03.png) ![image.png](https://oss-club.rt-thread.org/uploads/20220125/a6ccb9defc5b194ee683f414fa757307.png) 之后就新建页面(`Game_Tetris`)完全由自己开发了 ## 界面设计: 其实界面没有一点美感可言,都是方框直接堆积而成的, 不过考虑到一些重复的工作(一些方格的绘制),看到界面是 XML 格式的,就直接吧这些重复的方块使用 python 生成输出,然后直接放在了 XML 里,(不建议这样使用,这样可能有很多问题,不详细说明) ![image.png](https://oss-club.rt-thread.org/uploads/20220125/d8c9ebe3970494aa5e0f8c1147d3b1ac.png) ## 整体思路: 说白了俄罗斯方块其实很简单,七种方块随机出现,随机方向,从顶部落下,可以左右下移动,可以旋转方块,一样的一行消除得分。只要把这些事情考虑清楚就可以了 一些函数的功能, `reduceMatrix` 去除全为零的行和列:简化之后的一些碰撞的判断,方便旋转之后的显示, `rotateMatrix` 旋转方块:分别以90、180、270旋转用于手动旋转还有显示下一个方块时随机显示方块 `nextTetrominoDisplay` 随机显示下一个出现的方块 `fillColor` 填充颜色 :用于填充并显示有两个功能,1、将消失的方块恢复底色。2、将方块新走到的地方填充为方块的颜色(这里有优化的空间,例如:将两次不改变的方块颜色不做处理) `fillBlock` 对一整个“棋盘”做一个占位处理,这里仅一个方块结束时才进行占位填充,为了之后进行一个方块的结束判断,以及消除一行时的判断 `isDeleteRow` 判断哪一行要删除,通过 `fillBlock` 函数的填充去判断 `deleteRow` 删除行通过 `isDeleteRow` 判断出要删除之后,去删除该行,并把上面行的方块向下填充 `blockEnd` 判断一个方块下一个位置是否结束(针对的是方向向下、向左、向右)还有旋转的下一个位置是否碰撞 定时器:方块的自动向下移动, 最后下载这里就不细说了,相信大多说有 ART-Badge V2.0 的都是去过现场体现过下载的(其实我没去,哈哈哈) ![Game_Tetris4.gif](https://oss-club.rt-thread.org/uploads/20220125/5daf1093cd3db3408cbf13ee470b2512.gif) 1. 上键:方块旋转 2. 下键:方块下移 3. 左键:方块左移 4. 右键:方块右移 ### 最后这里有一些小问题还未完善 虽然我已经尽力在优化,但还是有一些可以优化,未优化完全的部分 1. 在方块移动和变形时,目前使用的是先将该方块对应控件改为默认颜色,然后再填充移动或变形后的方块,其实同种前后都一样的颜色没有必要先改为默认色,然后再填充 2. 在删除行时,使用的是一行一行的删除,同时消除多行的时候,也是一行一行的删除,可以优化 3. 在旋转后如果超出边界或重叠到现有方块,将会无效果,不旋转,可以优化,可以放下旋转后的方块的话,就贴着边界或现有方格。 4. 目前多行消除,不会有额外的得分,待优化 5. 界面待优化,太丑了 望大家有兴趣的一起开发完善呀! 代码仓库 [ART_Game (github.com)](https://github.com/pk-ing/ART_Game)
4
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
zhkag
这家伙很懒,什么也没写!
文章
12
回答
482
被采纳
66
关注TA
发私信
相关文章
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部