gpt4 book ai didi

java - 在数组上存储 Piece 对象 - java Tetris Tutorial

转载 作者:行者123 更新时间:2023-12-02 08:21:56 25 4
gpt4 key购买 nike

我刚刚接触 Java,我发现了这个关于创建 Java 俄罗斯方 block 游戏的好教程。

我没有导师或导师来帮助我解决这个问题 - 我一直在寻找一位导师或导师:(所以目前我正在自学 java 和 PHP :)

无论如何,这是我找到的网站 http://zetcode.com/tutorials/javagamestutorial/tetris/

有人可以通过教程解释一下这个方法是如何工作的吗?

Tetrominoes shapeAt(int x, int y) { return board[(y * BoardWidth) + x]; }

我知道它是通过 Paint() 方法调用的

for (int i = 0; i < BoardHeight; ++i) {
for (int j = 0; j < BoardWidth; ++j) {
Tetrominoes shape = shapeAt(j, BoardHeight - i - 1);
if (shape != Tetrominoes.NoShape)
drawSquare(g, 0 + j * squareWidth(),
boardTop + i * squareHeight(), shape);
}
}

据我了解- 它在棋盘的每个方格处循环,并确定 board[] 数组中是否存储有形状(Enum)。

我只需要有人向我解释这部分如何绘制所有形状或形状的剩余部分,这些形状已落到板的底部?

那么所有的方 block 是如何被记住在 board[] 数组中的呢?

谢谢

最佳答案

简单地说,board 数组是一个一维数组,它记住每个正方形上的形状。虽然它是一维的,但它的排列方式是第一行在前,然后是第二行,依此类推。因此在 3x5 的板上如下所示:

A B C
D E F
G H I
J K L
M N O

该数组将使得 board[0] 将包含 A 处的形状,board[3] 将包含 D 处的形状,等等。

值得注意的是,它实际上并没有记住每个正方形的整个形状 - 只是记住那里的形状种类。因此,当形状下降到底部时,每个单独的方 block 都会保留在板阵列中,即使它所代表的部分形状被删除的线删除了。删除一行实际上只需要“向下”移动数组的第一部分以覆盖要删除的行,并清除顶行的元素(到 Tetrominoes.NoShape)。

关于java - 在数组上存储 Piece 对象 - java Tetris Tutorial,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5310251/

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