gpt4 book ai didi

java - Java 中的俄罗斯方 block 克隆,移动一 block 时越界?

转载 作者:行者123 更新时间:2023-11-29 08:26:44 24 4
gpt4 key购买 nike

我正在尝试编写俄罗斯方 block 克隆。我的棋盘是一个 10x20 的整数数组,其中 0 表示没有图 block ,1-7 表示特定颜色的图 block 。它不断被翻译成图形解释。我的形状是 4x4 整数数组。我刚刚意识到,虽然将所有形状都设为 4x4 让一些事情变得更容易,但在左右移动一 block 时也会造成问题。假设我们有 I 形状:

0010
0010
0010
0010

现在,如果我将它移到左墙,总会有两个单位长的间隙,因为 0 不能移到主板阵列之外。允许 1 移动到左墙而不导致越界异常的最简单方法是什么?

最佳答案

使用您描述的方法,简单地避免获得 IndexOutOfBoundsException 的一种方法是将您的板扩展为 18 x 24 而不是 10 x 24,然后写入额外的代码,如果对象数组中有任何 1 离开网格的中间 10 个方 block ,则不允许您向左/向右移动 block .通过将此“填充”添加到您的网格,您可以避免异常并且应该仍然能够实现。

我希望这种方法对您有意义。如果不是,我可以提供一个更伪代码驱动的答案,但我希望你能理解。 (如有任何问题,请发表评论。)

顺便说一句,@assylias 提出了一个很好的观点。在你开始实现之前有一个好的设计/计划是很重要的,以避免像这样的路障。它伴随着经验而来,所以不断练习,您就会掌握窍门。

注意: 正如 Nick 在评论中指出的那样,另一种方法是在移动任何数组之前简单地检查是否有任何 1 离开网格。这当然是可能的(并且可以说是一个更优雅/更简单的解决方案),尽管可能更难做到正确。

关于java - Java 中的俄罗斯方 block 克隆,移动一 block 时越界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52097117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com