마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 오목 구현 관련 질문입니다

0 추천
안녕하세요 지금 안드로이드 공부하고있는 학생입니다 안드로이드 스튜디오로 오목게임을 만들고싶어 만들고있는데
구현한 내용이 흑 백 돌이 번갈아 나오게하는거 까지 구현한것인데요
구현한 내용말고 직사각형을 화면에 한개 한개씩 화면에 바둑판처럼 그려서 클릭시 흑백이 번갈아가며 그안에 돌들이 들어가게 하고싶은데 어떻게 구현해야될지 잘모르겠습니다 
배열을 쓰고는 싶은데 어떻게 구현을 할지도 감이 안잡히네요.. 
혹시 되신다면 설명 해주실때 예시같은것도 써주시면 정말 감사하겠습니다.
 
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
    }
}
익명사용자 님이 2017년 5월 29일 질문

1개의 답변

0 추천
익명사용자 님이 2017년 5월 30일 답변
...