어떤 안드로이드오목오픈소스를 보고 참고해서 새로 만들고있는데 바둑판까지는 그려지는데 아무리해도 터치이벤트했을때 바둑알이 안그려지네요..
터치이벤트가 실행될때마다 카운트가 1씩 증가하면서 홀수일때 흑돌 짝수일때 백돌을 그리는 방식인데 onDraw()메소드에 넣어도 안되고 터치이벤트에 넣어도 안됩니다...
public class OmokView extends View {
private int LINE_WIDTH = getWidth() / 10; // 오목판 줄 간격
private int STONE_SIZE = (int) (LINE_WIDTH * 0.8); // 돌의 크기
private int X0; // 바둑판을 그리기 시작할 x좌표의 위치
private int Y0; // 바둑판을 그리기 시작할 y좌표의 위치
int STONE_COUNT = 0;
String STONE_COLOR = null;
int STONE_X = 0;
int STONE_Y = 0;
public OmokView(Context context) {
super(context);
}
public void onDraw(Canvas canvas) { // 바둑판과 돌들을 그리기 위한 메소드
X0 = getWidth() / 10;
Y0 = getWidth() / 10;
Paint background = new Paint();
background.setColor(getResources().getColor(R.color.puzzle_background)); // 바둑판
canvas.drawRect(0, 0, getWidth(), getHeight(), background);
// 바둑판 줄 긋기
for (int i = 1; i <= NewGame.LINE_NUM; i++) {
canvas.drawLine(X0, i * Y0, X0 * NewGame.LINE_NUM, i * Y0,
new Paint());
canvas.drawLine(i * X0, Y0, i * X0, Y0 * NewGame.LINE_NUM, new Paint());
}
Paint stone_paint = new Paint();
if (STONE_COUNT != 0 && STONE_COUNT % 2 == 1) {
stone_paint.setColor(Color.BLACK);
canvas.drawCircle(STONE_X, STONE_Y, STONE_SIZE / 2, stone_paint);
} else {
stone_paint.setColor(Color.WHITE);
canvas.drawCircle(STONE_X, STONE_Y, STONE_SIZE / 2, stone_paint);
}
}
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
// 1. x 또는 y의 값이 오목판의 밖을 벗어난 곳이면 메서드를 종료한다.
//if (x < X0 || x > X0 * NewGame.LINE_NUM)
//return false;
//if (y < Y0 || y > Y0 * NewGame.LINE_NUM)
//return false;
// 2. x와 y의 값을 클릭한 곳에서 가장 가까운 교차점으로 변경한다.(반올림)
if ((x % X0) >= LINE_WIDTH / 2) {
x = x - (x % X0) + X0;
STONE_X = x + X0;
} else {
STONE_X = x - (x % X0);
}
if ((y % Y0) >= LINE_WIDTH / 2) {
y = y - (y % Y0) + Y0;
STONE_Y = y + Y0;
} else
STONE_Y = y - (y % Y0);
// int ArrX = (x - X0) / LINE_WIDTH; // 돌배열에 저장할 row
// int ArrY = (y - Y0) / LINE_WIDTH; // 돌배열에 저장할 column
STONE_COUNT++;
invalidate();
return super.onTouchEvent(event);
}
}