gpt4 book ai didi

java - 数组消失了?

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

我知道标题似乎有点奇怪,但这是我描述问题的唯一方式。

该项目正在创建一个简单的益智游戏,您必须将图 block 移动到某个位置以形成 4(图 block )x 4(图 block )图像。

它有几个类,但有问题的是 Tile Grid 类。我的思考过程是:我将为图 block 创建两个类,一个用于左侧,一个用于右侧

(我选择 2 是因为我遇到了一个问题,其中一个问题是在对数组进行洗牌后,主窗口会在图 block 位置中显示重复的图像,即使数组本身没有重复项,但我推断这是因为我正在制作 2 个 TileGrid 类,从而制作 2 个大小均为 16 的图标数组,它们都包含所有图像,而不是仅从这些数组之一获取图标,而是从两个数组中获取图标。此外,2 个单独的类还减少了匿名类的数量。)

这些类将有两个类 Tile 数组,其中一个用于操作,另一个是用于重置的主数组。

然后我循环遍历这些数组,将 Tile 图标设置为 MazeImage 类中相应数组之一中的 Icon

MazeImage 类获取一个图像,将其分成 16 block ,并将这些 block 添加到图像数组和未打乱的数组中。图像数组是可操作的数组,未洗牌的数组用于解决方案

一旦图像被分割成 16 个并存储,MazeImage 类就会运行 setShuffledMaster() 和 setShuffledProxy()setShuffledMaster() 将 images[] 复制到 master[] 中,然后对主数组进行洗牌,然后通过 System.copyarray 将主数组分成 2 部分,并将 1-8 部分存储到 masterL[] 中,将 8-16 部分存储到 masterR[] 中

setShuffledProxy() 然后将 master[] 数组一分为二,并将一半存储到 imagesL[] 和 imagesR[] 中,这些是将用于操作的数组

然后我有一堆 getMethods() 返回数组,但是这些 get 方法似乎不起作用或正在工作,但 half/half 数组被重置为 null

确切的错误是空指针异常,发生在:masterL[i].setIcon(img.getMasterL(i));在 TGridL 类中,也在 TGridR 类中使用相同的行

这可能是我可能需要解决的最终问题之一,以使一切正常工作,但这只是杀了我,因为我不明白这是/为什么会发生这种情况,任何帮助都会真正节省理智。

顺便说一句,如果有人对如何改进这方面有任何想法,请告诉我。现在这类似于草稿,所以事情并没有想象的那么漂亮。

这是代码:

for(int i = 0; i<masterL.length; i++)
{
masterL[i] = new Tile(){
public Dimension getPreferredSize() {
return new Dimension(80, 80);
//Sets Dimensions
};
};


masterL[i].setIcon(img.getMasterL(i));
masterL[i].setIdentifier("Tile_" + (i + 1));
//---------------------------------------------
}

TGridR 完全相同,只是将所有“L”替换为“R”,所以我不会发布它,但如果您需要它,请告诉我。

public void setShuffledMaster()   //Master Tiles Left
{
List<Image> temp;
//Temp list for shuffle

Image[] shuffled = new Image[16];
//array for shuffled images

shuffled = images;
//Set equal to initial right after crop from editImage();

temp = Arrays.asList(shuffled);
//Set temp list equal to init order

Collections.shuffle(temp);
//Shuffle

shuffled = (Image[]) temp.toArray();
master = shuffled;
//Change List to Array to be able to loop over it

System.arraycopy(shuffled, 0, masterL, 0, masterL.length);
System.arraycopy(shuffled, masterL.length, masterR, 0, masterR.length);
//Split array into two parts




public ImageIcon getMasterL(int i) //Get Master Left
{
img = new ImageIcon(masterL[i]);
return img;
}

所以要点是 getMasterL 实际上并没有工作,因为显然 masterL 数组是空的,但是当我打印出 MazeImage 类创建的所有数组的内容时,这些数组都不为空

如果你们需要任何其他信息或需要澄清,请告诉我。

非常感谢!

最佳答案

您没有初始化 MazeImage 类型的 img 对象。可能在构造函数中这样做......

img = new MazeImage(); // Or whatever constructor you need here.

此外,如果您的左右类如此相似,您可以简单地使用一个基本 Tile 类并将其子类化以创建两个略有不同的变体。

关于java - 数组消失了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36206553/

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