Java- 如何 link AWT 矩形?

Java- How to link AWT Rectangles?

java刚开始写贪吃蛇游戏。 (如果您不知道那是什么,请参阅:http://codeincomplete.com/projects/snakes/ or http://elgoog.im/snake/)。所以,当蛇吃 object 时,它的尾巴就会长出来。为了让游戏的转向物理正常工作,尾巴的每一段都需要有自己的 java.awt.Rectangle 碰撞箱。我的问题是我如何 link 他尾巴的这些 hitboxes/segments 使它们始终保持在一起,但在我的 JPanel 上是独立的组件。否则,如果有更好的方法,请告诉我。谢谢。

应该有一个蛇对象,带有一组有序的简单蛇片,每片都显示类型。练习model view controller,每一个Snake块都应该对图形一窍不通。当你在一个段时,放在最后一个中午的小道上。因此,您的 Snake 将包含一个片段列表,如下所示:

List<SnakePieces> mPieces

SnakePieces 应该很简单,像这样

public class SnakePieces {
    public enum Type {Head,Body,Tail};
    public Type type;
}

欢迎根据需要为SnakePieces添加其他功能。添加新片时,在

位置添加
mSnakePieces.add(mSnakePieces.length()-1,newSnakePiece);

如果可以,分离出模型(蛇形运动)、视图(根据 SnakePiece 的类型放入图形)和控制器(将输入馈送到模型)。这比要求的更高级,但很有帮助。 See Wikipedia on Model View Controller.

另外,请参阅 Android Snake Game,它无疑与您的应用程序有一些相似之处。 Android 这样做:

/**
 * mSnakeTrail: a list of Coordinates that make up the snake's body
 * mAppleList: the secret location of the juicy apples the snake craves.
 */
private ArrayList<Coordinate> mSnakeTrail = new ArrayList<Coordinate>();

它只知道绘制第一个和最后一个图块时略有不同。