【发布时间】:2013-05-23 01:19:08
【问题描述】:
我正在用 Java 制作俄罗斯方块游戏,当他们击中另一个已经着陆的棋子时,我无法让当前棋子停止。我为每个 tetromino 形状都有单独的类。当 currentPiece 下降时,将 Y 坐标最低且 X 值与 currentPiece 相同的形状设置为 currentPiece 的停止点。问题是这块通过与 currentPiece 中心相邻的块,并且为所有可能的形状和旋转编码是很乏味的
有没有更好的方法来做到这一点? 基本上,我的问题是,如何处理俄罗斯方块的边界?
链接到我的 java 文件:http://goo.gl/Ms8Mj (见谅)
每个块都由一个值表表示,对于 L 形状它是:
{0,0},{1,0},{0,1},{0,2}
“中间”块被视为原点。我正在考虑制作一个二维布尔数组来判断一个位置是否被占用。
【问题讨论】:
-
取决于您的实现方式...
Shape提供了一个getBounds方法,该方法提供了一个intersects方法,可用于确定两个形状是否感兴趣...假设您正在使用java.awt.Shape -
@MadProgrammer 我没有使用 Shape 界面
-
这是对您的代码有所帮助的地方 ;)
-
@MadProgrammer goo.gl/Ms8Mj