1

ゲームを開発しています。私のゲームでは、2 つのジェスチャー ラインが交差するとゲーム オーバーになります。2 つのジェスチャ ラインの交点を特定するにはどうすればよいですか?

私のコードは以下です

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;
    }



}

しかし、すべてのピクセル(xy座標)を取得できません。そのため、2 つのジェスチャ ラインが交差するたびに交点を特定できませんでした。
描かれた2本の線の共通点を特定するための解決策または他の方法を教えてください

4

0 に答える 0