2013-06-01 3 views
0

실제 보드 게임을 기반으로 "이동"이라는 보드 게임을 만들고 있습니다. 기본적으로 2 명의 선수 (화이트와 블랙)가 있으며 보드 게임 그리드의 교차점에 흰색과 검은 색 돌을 놓고 차례로 회전합니다.그리드에 2D 배열 그리기

지금까지 돌을 그렸고 플레이어간에 번갈아 가며 2D 배열에서 값을 변경했습니다. 여기서 0 = 열린 지점, 1 = 흰색, 2 = 검정입니다.

2D 배열의 해당 돌을 내 보드에 그려야합니다. 올바른 돌을 그려 내 마우스를 따라갈 수 있지만 위치를 클릭하면 위치에 배치되고 거기에 머물러 있기를 원합니다.

내가 돌을 내 마우스를 따라하기 위해 무엇을 사용

if (turn == 1) { 
    g2d.drawImage(s.getBlackStone(), 
        s.getBlackX() - Frame.frameLocation.x - 15, 
        s.getBlackY() - Frame.frameLocation.y - 35, null); 
} else { 
    g2d.drawImage(s.getWhiteStone(), 
        s.getWhiteX() - Frame.frameLocation.x - 15, 
        s.getWhiteY() - Frame.frameLocation.y - 35, null); 
} 

난 내 마우스 버튼을 누르고 방법은 그리드 위치를 얻을 때마다 호출되는 방법이 무엇 나는 생각했다 내 마우스를 클릭하면 어디서 그것을 돌리고 이미지를 그립니다. 이것에 대한 당신의 생각은 무엇입니까?

+0

'프레임 '은 변수 또는 클래스입니까? 변수 인 경우에는 'frame'이라고해야합니다. 클래스의 경우 (a) 위치에 정적 변수를 사용하면 안되며 (b) java.awt.Frame을 숨기면 안됩니다. 또한 그래픽 컨텍스트는 화면이 아닌 구성 요소와 관련하여 그립니다. – wchargin

+0

그게 적절하다고 생각합니다. 그리드 위치를 가져 와서 거기에 돌을 놓거나 그립니다. 당신이 실제로 무엇을 할 지 확신하지 못합니다. – greedybuddha

+0

또한 enum을 살펴 보시기 바랍니다 :'if (turn == Player.WHITE)'와 함께'public enum Player {WHITE, BLACK}을 사용하십시오. – wchargin

답변

2

보통 상태 (검정색, 흰색 또는 비어 있음), 자유 수 및 배열 내의 위치와 같은 변수가있는 Stone 클래스를 만듭니다. 2D 배열은 Stone 클래스의 인스턴스 배열입니다. 상태 변수가 비어 있지 않으면 배열의 위치에 해당하는 셀에 검은 색 또는 흰색의 돌을 칠합니다.

돌을 나타내는 숫자가 포함 된 배열을 사용하는 경우 캡처를 처리해야 할 때 문제가 발생합니다.

질문에 대한 대답으로 그리드에서 클릭 한 위치를 찾고 해당 배열의 영향을받은 모든 돌을 업데이트 한 다음 배열을 다시 그립니다.