用Rust写一个控制台的俄罗斯方块

Posted Silentdoer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用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这些方法;

以上是关于用Rust写一个控制台的俄罗斯方块的主要内容,如果未能解决你的问题,请参考以下文章

java如何用图形界面显示二维数组俄罗斯方块

根据俄罗斯方块游戏创建的数组为 JTable 单元着色

用c语言编写俄罗斯方块程序 求详解

使用Python写俄罗斯方块,以游戏的方式学习编程

win10 uwp 俄罗斯方块

用JS实现的俄罗斯方块