2014-04-21 1 views
-2

누군가가 나에게 아이디어 나 게임 이미지가 완료 그림을 차단 배열 구축의 흐름을 알 수 차단합니다. 작은 것들로 이미지를 분할하고이를 제어하는 ​​방법? (자바 또는 C#)이미지를 배치 게임 아이디어는

+0

- 당신이 도움을 원한다면, 당신은 분명히 확인하기 위해 문구를 바꿔해야 할 것입니다. – user1813598

+0

죄송합니다,이 게임의 영어로 이름을 알지 못합니다. 그림이 4, 9, 16 부분으로 무작위로 배열 될 수 있습니다. 이 piture를 분할하고 C# 또는 java로 제어하는 ​​방법을 알고 싶습니다. – vmduan

+0

아마도 슬라이딩 블록 퍼즐을 생각하고 있을까요? http://en.wikipedia.org/wiki/Sliding_puzzle – user1813598

답변

0

난 당신이

먼저 자바

를 사용하는 가정합니다, 메모리에 슬라이딩 블록 퍼즐의 완성 된 이미지를로드합니다. ImageIO 클래스의 read 메서드를 사용하면 쉽게 수행 할 수 있습니다.

import javax.imageio.ImageIO; 

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

이제 이미지를 하위 피스로 분할합시다. 편리한 메소드는 BufferedImage 클래스의 "getSubimage (x, y, w, h)"메소드입니다.

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] 현재 COL 제 j, i 번째 행에 위치하는 부분 이미지를 나타낸다. 두 번째 줄의 세 번째 열에있는 조각을 pieces[1][2]으로 지정한다고 가정 해 봅시다.

우리는 조각 2 차원 배열에 대한 참조를 교환해야하며, 두 개의 서브 이미지의 위치를 ​​교환합니다.

// 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 방법으로 그 논리를 추가 할 수 있습니다.

여러분이 시작하게되기를 바랍니다. "게임 이미지가 완료 그림을 차단 배열 구축"

+0

덕분에 정확한입니다! – vmduan

관련 문제