用Rust写一个控制台的俄罗斯方块
一、摘要
目前支持Win10的控制台和Ubuntu的终端正常显示(其他平台没试过,不同的终端可能会造成排序混乱);
运行图:
代码地址:https://github.com/Silentdoer/RustTetris
二、实现原理
2.1根本原理其实就是一个二维的Vec,即Vec<Vec<CanvasPixel>>,每一个CanvasPixel代表一个展示的最小单元,比如图中的方块□;
2.2每个方块是一个CanvasPiece,即每个CanvasPiece由四个CanvasPixel组成,每个CanvasPiece有它自己的原点坐标,供后续的旋转之类的判定;
2.3每个方块下降其实就是判断它里面的Piece的下一个坐标在Canvas里(Map)是空白还是□,是□则说明不允许下降(当然这部分判定还有一些其他情况要考虑,比如还没显示的部分,或者下一个坐标的Piece其实是自己的一部分等);
2.4每个方块的旋转也是根据原点旋转后的坐标是否是□以及是否出界等判断来判断是否可以旋转;
2.5每次方块不能再下落时都要判断是否可以消除,消除则对Canvas进行下移;
2.6如果新的Piece不能下落,且存在Pixel的y轴是负数,说明游戏结束;
2.7 。。。上面是主要的一些判断内容,具体可以看代码里的canvas_piece里的can_rotate,rotate,can_dropdown,dropdown,in_self这些方法;
相关推荐
zhangxiafll 2020-11-13
svap 2020-11-09
viplinux 2020-10-28
Justhavefun 2020-10-22
lousir 2020-10-21
longzhiwen 2020-10-16
Justhavefun 2020-09-25
归去来兮 2020-09-18
zhouxiaojie 2020-09-16
gamedevd 2020-09-04
tkernel 2020-09-03
Trustport 2020-09-01
svap 2020-08-25
tkernel 2020-08-18
lihn 2020-08-18
归去来兮 2020-07-28
TianlangStudio 2020-07-18
iammjun 2020-07-07
Colourful 2020-07-03