Холст исчезает после прикосновения к экрану - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь создать приложение для Android для игры Connect Four. Моя проблема здесь заключается в том, что всякий раз, когда я касаюсь экрана, мои четыре соединительных сетки исчезают, и вместо этого точка, которую я должен опустить, просто появляется в нижней части экрана. Я не могу определить проблему с моим кодом. Холст просто тупо исчезает, и точка, которую я должен уронить, не попадает в то место, куда он должен идти.

Основная деятельность:

    public class MainActivity extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(new CFGrid(this));
        }
    }

Подключите четыре класса:

    public class CFGrid extends View{

        private Paint paint = new Paint();
        private Paint red = new Paint();
        private Paint blue = new Paint();
        public CFGrid(Context context)
        {
            super(context);
            setWillNotDraw(false);
        }
        int w , h , cx = 0 , cy = 0 , i , j , c , p = 0;
        boolean game = false;
        int sx , sy;
        int[] count={6,6,6,6,6,6,6};
        @Override
        public boolean onTouchEvent(MotionEvent event)
        {
            float X = event.getX();
            float Y = event.getY();
            c = (int) Math.floor( 7 * X / w);
            c = Math.abs(c);
            if(event.getAction() == MotionEvent.ACTION_DOWN)
            {   if(X < = ( 40 + sx ) || Y < = ( 40 + sy ) )
                   {
                       game=true;
                       invalidate();
                   }

            }
            return true;
        }
        @Override
        protected void onDraw(Canvas canvas)
        {
            canvas.drawColor(Color.YELLOW);
            paint.setColor(Color.BLACK);
            w = Resources.getSystem().getDisplayMetrics().widthPixels;
            h = Resources.getSystem().getDisplayMetrics().heightPixels;
            sx = w / 14;
            sy = h / 16;
            for(i = sx ;  i < w && cx < 7 ; i = i + ( w/7 ) , cx++)
            {      cy = 0;
                for (j =  sy ; j < h && cy <6 ; j = j + ( h/8 ), cy++)
                {
                    canvas.drawCircle(i , j , 50 , paint);
                }
            }
            red.setColor(Color.RED);
            blue.setColor(Color.BLUE);
            if(game) {
                if (p == 0) {
                    canvas.drawCircle(sx + c * w / 7, sy + count[c] * h / 8, 50, red);
                    count[c] = count[c] - 1;
                    p = 1;
                } else if (p == 1) {
                    canvas.drawCircle(sx + c * w / 7, sy + count[c] * h / 8, 50 , blue);
                    count[c] = count[c] - 1;
                    p = 0;
                }
            }

        }

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...