游戏的想法安排图像块

时间:2014-04-21 03:59:24

标签: java c#-4.0

有人能告诉我构建游戏的想法或流程会将图像块排列成完成图片。如何将图像分割成小图像并对其进行控制?(java或c#)

1 个答案:

答案 0 :(得分:0)

我假设您正在使用Java

首先,将完成的Sliding Block拼图图像加载到内存中。这可以通过ImageIO类的读取方法轻松完成

import javax.imageio.ImageIO;

String directory = "someFolder\myImage.png";
BufferedImage image = ImageIO.read(directory);

现在让我们将图像分割成子标题。您可以使用的一种方便的方法是" getSubimage(x,y,w,h)" BufferedImage类的方法。

int rows = 3, cols = 3;
BufferedImage[][] pieces = new BufferedImage[rows][cols];

int imageWidth = image.getWidth();
int imageHeight = image.getHeight();
int pieceWidth = imageWidth/cols;
int pieceHeight = imageHeight/rows;

for (int i = 0; i < rows; i++)
{
    for (int j = 0; j < cols; j++)
    {
        pieces[i][j] = image.getSubimage(j*pieceWidth, i*pieceHeight, pieceWidth, pieceHeight);
    }
}

现在,pieces[i][j]表示当前位于第i行第j个col的子图像。所以,让我们说你想要第二行第三列中的这一部分,这将是pieces[1][2]

要交换两个子图像的位置,我们必须交换2D数组中的引用。

//  Swaps the subimage at row1,col1 with the subimage at row2,col2
private void swapPosition(row1, col1, row2, col2)
{
    BufferedImage temp = pieces[row1][col1];
    pieces[row1][col1] = pieces[row2][col2];
    pieces[row2][col2] = temp;
}  

滑动拼图只允许您交换相邻的部分,因此您可能希望将该逻辑添加到swapPosition方法中。

我希望这能让你开始。