Я пытаюсь создать приложение для 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;
}
}
}
}