1

I am developing a game. In my game, when two gesture lines intersect, the game will be over. How can I identify the point intersection of two gesture lines?

My code is below

public class GameActivity extends Activity implements OnTouchListener 
{
    float temp=0,temp1=0;
    GestureOverlayView gstr;
    ArrayList<String> arr,prmt;
    View view;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gestureoverlay);


        prmt=new ArrayList<String>();
        arr=new ArrayList<String>();
        gstr=(GestureOverlayView) findViewById(R.id.GestureView);


        gstr.setOnTouchListener(this);


    }


    @Override
    public boolean onTouch(View v, MotionEvent event) {

        if(MotionEvent.ACTION_MOVE==event.getAction())
        {
        Log.i(" "+event.getX()+""+event.getY(),"state");
        if(temp!=0 && temp1!=0)
        {
            if(temp<event.getX() && temp1<event.getY())
            {
                if(event.getX()>=event.getY())
                {
                    for(float i=temp;i<=event.getX();i++)
                    {
                        if(temp1<=event.getY())
                        {
                            temp1++;
                        }
                        if(!arr.contains(i+"  "+temp1))
                        {
                            arr.add(i+"  "+temp1);
                        }
                    }
                }
                else
                {
                    for(float i=temp1;i<event.getY();i++)
                    {
                        if(temp<=event.getX())
                        {
                            temp++;
                        }
                    if(!arr.contains(temp+"  "+i))
                    {
                            arr.add(temp+"  "+i);
                        }
                        Toast.makeText(getApplicationContext(), "y is high",50).show(); 
                    }               }
            }
            else if(temp>event.getX() && temp1>event.getY())
            {
                if(event.getX()<=event.getY())
                {
                    for(float i=temp;i>=event.getX();i--)
                    {
                        if(temp1>=event.getY())
                        {
                            temp1--;
                        }
                        if(!arr.contains(i+"  "+temp1))
                        {
                            arr.add(i+"  "+temp1);
                        }
                    }
                }
                else
                {
                    for(float i=temp1;i>event.getY();i--)
                    {
                        if(temp>=event.getX())
                        {
                            temp--;
                        }
                        if(!arr.contains(temp+"  "+i))
                        {
                            arr.add(temp+"  "+i);
                        }
                        Toast.makeText(getApplicationContext(), "y is high",50).show(); 
                    }
                }
            }

            else
            {
                if(!arr.contains(event.getX()+"  "+event.getY()))
                {
                        arr.add(event.getX()+"  "+event.getY());
                    if(!arr.contains((event.getX()-1)+"  "+event.getY()))
                        arr.add((event.getX()-1)+"  "+(event.getY()));              
                    if(!arr.contains((event.getX()+1)+"  "+(event.getY())))
                        arr.add(((event.getX()+1))+"  "+(event.getY()));
                }
            }
        }

        temp=event.getX();
        temp1=event.getY();
        tv.setText("x="+event.getX()+"  "+event.getY()+"\n");
        Log.i("x and y="+event.getX()+"  "+event.getY()+" "+arr, " ");
        //Toast.makeText(getApplicationContext(),event.getX()+"  "+(event.getX()+1), 40).show();
        }
        if(MotionEvent.ACTION_UP==event.getAction())
        {

            for(int i=0;i<arr.size();i++)
            {
                if(!prmt.contains(arr.get(i)))
                {
                    prmt.add(arr.get(i));
                    //arr.remove(i);
                }
                else
                {
                    Toast.makeText(getApplicationContext(), "Game over",30).show();
                    Log.i("x and y=", "else");
                    Intent in=new Intent(getApplicationContext(),mainmenu.class);
                    startActivity(in);
                    finish();
                }
            }
            arr.clear();
            //Toast.makeText(getApplicationContext(), "action up",50).show();   
        }
        return false;
    }



}

But I can't get all pixel(xy coordinate). so that I could not identify intersection point every time when two gesture line cross each other.
please give me any solution or any other way for identifing common point of two drawn line

Chilledrat
  • 2,593
  • 3
  • 28
  • 38
Ketan Patel
  • 2,155
  • 19
  • 27

0 Answers0