【发布时间】:2016-03-17 04:38:39
【问题描述】:
目前我正在使用 java 构建游戏拼图滑动。首先,我的算法是创建按钮数组 2d,并在这些按钮上设置图像并将它们添加到面板(网格布局为 3*3)。我的问题是如何将这些按钮上的每张图像与原始图像进行比较? 下面的代码,我将按钮添加到 Jpanel。
private void set() throws Exception {
position = new int[row][col];
lstBtn = new JButton[row][col];
count = new int[row * col];
arr=new ArrayList<>(9);
panelContainer.setLayout(null);
panelContainer.setLayout(new GridLayout(row, col));
BufferedImage img;
int numCount = 0;
int posNum=0;
orgImg=new BufferedImage[row][col];
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
position[i][j] = posNum++;
if (i ==0 & j == 0) {
// For blank Button
lstBtn[i][j] = new JButton();
lstBtn[i][j].setBackground(Color.WHITE);
// panelContainer.add(lstBtn[i][j]);
lstBtn[i][j].setVisible(true);
arr.add(lstBtn[i][j]);
count[0] = numCount;
}
else {
numCount++;
lstBtn[i][j] = new JButton();
lstBtn[i][j].addActionListener(this);
img = image_cutting.getSubImage(j,i);//160, 116 //120, 87,
orgImg[j][i]=img;
lstBtn[i][j].setIcon(new ImageIcon(orgImg[j][i].getScaledInstance(160, 116, BufferedImage.SCALE_SMOOTH)));
lstBtn[i][j].setHorizontalTextPosition(JButton.CENTER);
lstBtn[i][j].setVerticalTextPosition(JButton.CENTER);
lstBtn[i][j].setFont(new Font("Dialog",2,20));
lstBtn[i][j].setForeground(Color.BLUE);
lstBtn[i][j].setText("" + numCount);
arr.add(lstBtn[i][j]);
// panelContainer.add(lstBtn[i][j]);
lstBtn[i][j].setVisible(true);
}
if (numCount == 0) {
continue;
}
count[numCount] = numCount;
}
下面的这张图片是与匹配图片滑动的拼图示例
【问题讨论】:
-
你到底是什么意思?发布MCVE 以获得更多帮助
-
不要比较 图像。看看按钮在哪里——每个按钮都有一个“正确”的位置,不管上面是什么图像。
-
是的,这就是我想要找到的,我应该怎么做才能知道按钮位置在正确的位置?
-
您需要某种模型来跟踪每个图像或片段,然后 UI 会复制模型的状态
-
是的,我使用数组来存储原始图像。但我的问题是如何知道它是校正位置