gpt4 book ai didi

java - 在一个对象中存储多个数据值的更好方法是什么?

转载 作者:行者123 更新时间:2023-11-30 03:04:39 24 4
gpt4 key购买 nike

这是一个很难命名的标题。

基本上我有以下代码:

for (int x=0; x<width; x++)
{
for (int y=0; y<height; y++)
{
if (world[x][y] == 2) //Find all Planets ('2') in world
{
size[count] = randInt(1024, 512); //Random Size
angle[count] = randFloat(4, 0); //Random Angle
hue[count] = randInt(360, 0); //Random Hue
count++;
}
}
}

world[][] 是一个整数多维数组,当前保存从 02 之间随机放置的值。

0 是什么都没有,1 是一颗恒星,2 是一颗行星。

randIntrandFloat 给出其(最大值、最小值)之间的随机整数或浮点值

因此,这个 for 循环会遍历整个 world[][] 数组,如果找到行星 (2),则会执行以下代码。

for 循环中的代码应该存储找到的每个行星的值,以便它们都是唯一的,具有不同的值(即大小、角度、色调)。有了这些值,我稍后将绘制世界上的所有行星,在绘制它们时,我希望能够根据正在绘制的行星来访问这些值,然后相应地使用这些值来更改行星渲染方式的参数.

我不知道该怎么做是将所有这些值存储到一个行星 (2) 中,以便我可以让该行星永久保留我为其指定的值。最好的方法是什么?

如果需要更多代码,请告诉我。

最佳答案

您可以创建一个 Planet 类和一个 Star 类,以更多面向对象的方式来解决这个问题。例如,您可以使用 PlanetArrayListMap:

Planet.java

public class Planet {
private int size;
private int angle;
private int hue;

public Planet(int size, int angle, int hue) {
this.size = size;
this.angle = angle;
this.hue = hue;
}

// Getters & setters
}

Star.java

// I'm not sure whether you are considering Stars as Planets in your 
// approach, but this is just an example so that you would be able to use
// polymorphism in your code
public class Star extends Planet {
// methods & properties
}

你的MainClass.java

Map<Integer, List<Planet>> map = new HashMap<>();
map.put(1, new ArrayList<>());
map.put(2, new ArrayList<>());
map.put(3, new ArrayList<>());

for (int x=0; x<width; x++)
{
for (int y=0; y<height; y++)
{
if (world[x][y] == 1) //Find all Stars in world
{
// Taking in consideration the fact that Stars are Planets
map.get(1).add(new Star(/*args*/));
}
else if (world[x][y] == 2) //Find all Planets ('2') in world
{
map.get(2).add(new Planet(
randInt(1024, 512),
randFloat(4, 0),
randInt(360, 0)
));
}
}
}

关于java - 在一个对象中存储多个数据值的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35099609/

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