gpt4 book ai didi

Java-如何链接 AWT 矩形?

转载 作者:行者123 更新时间:2023-12-01 18:09:01 24 4
gpt4 key购买 nike

我刚刚开始用java编写贪吃蛇游戏。 (如果您不知道那是什么,请参阅此: http://codeincomplete.com/projects/snakes/http://elgoog.im/snake/ )。因此,当蛇吃掉一个物体时,它的尾部就会生长。为了使游戏的转动物理效果正常工作,尾部的每个部分都需要有自己的 java.awt.Rectangle 碰撞箱。我的问题是如何链接他尾部的这些命中框/片段,以便它们始终保持在一起,但在我的 JPanel 上是单独的组件。否则,如果有更好的方法来做到这一点,请告诉我。谢谢。

最佳答案

应该有一个蛇对象,有一组有序的简单蛇片,每片都显示类型。练习 Model View Controller ,每个 Snake block 应该对图形一无所知。当你在一个路段时,把最后一个中午的路段放在前面。因此,您的 Snake 将包含一个片段列表,如下所示:

List<SnakePieces> mPieces

SnakePieces 应该很简单,像这样

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

您可以根据需要随意向 SnakePieces 添加其他功能。添加新片段时,将其添加到该位置

mSnakePieces.add(mSnakePieces.length()-1,newSnakePiece);

如果可以的话,将模型(蛇的运动)、 View (根据 SnakePiece 的类型放入图形)和 Controller (将输入提供给模型)分开。这比所需的更先进,但很有帮助。 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>();

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

关于Java-如何链接 AWT 矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279314/

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