在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、摘要 目前支持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这些方法; |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论