안녕하세요 지금 안드로이드 공부하고있는 학생입니다 안드로이드 스튜디오로 오목게임을 만들고싶어 만들고있는데
구현한 내용이 흑 백 돌이 번갈아 나오게하는거 까지 구현한것인데요
구현한 내용말고 직사각형을 화면에 한개 한개씩 화면에 바둑판처럼 그려서 클릭시 흑백이 번갈아가며 그안에 돌들이 들어가게 하고싶은데 어떻게 구현해야될지 잘모르겠습니다
배열을 쓰고는 싶은데 어떻게 구현을 할지도 감이 안잡히네요..
혹시 되신다면 설명 해주실때 예시같은것도 써주시면 정말 감사하겠습니다.
public class MainActivity extends AppCompatActivity {
private myView mDrawView;
public static int mCircleColor = Color.BLACK;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDrawView = new myView(this);
if (savedInstanceState != null) {
mDrawView.points =
(ArrayList<MainActivity.myView.Point>) savedInstanceState.getSerializable("circle");
}
setContentView(mDrawView);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("circle", mDrawView.points);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.omok_menu, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item_clear:
mDrawView.points.clear();
mDrawView.invalidate();
case R.id.close:
finish();
}
return super.onOptionsItemSelected(item);
}
private static class myView extends View implements View.OnTouchListener {
float x;
float y;
public ArrayList<Point> points = new ArrayList<MainActivity.myView.Point>();
public myView(Context context) {
super(context);
setOnTouchListener(this);
setFocusableInTouchMode(true); // 이벤트가 계속해서 발생하기 위해
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = new Paint();
for (int ii = 0; ii < points.size(); ii++) {
if (points.get(ii).mCircleColor == Color.WHITE) {
mCircleColor = Color.BLACK;
paint.setColor(points.get(ii).mCircleColor);
canvas.drawCircle(points.get(ii).x, points.get(ii).y, 30, paint);
}
else {
mCircleColor = Color.WHITE;
paint.setColor(points.get(ii).mCircleColor);
canvas.drawCircle(points.get(ii).x, points.get(ii).y, 30, paint);
}
}
super.onDraw(canvas);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
x = (int) event.getX();
y = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
points.add(new Point(x, y,mCircleColor));
invalidate();
return true;
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
default:
}
return false;
}//end class myView
static class Point implements Serializable {
float x, y;
int mCircleColor;
public Point(float x, float y, int mCircleColor) {
this.x = x;
this.y = y;
this.mCircleColor = mCircleColor;
}
}//end class Point
}
}