在线程中的可运行方法内使用BoxSelect类(java)

在线程中的可运行方法内使用BoxSelect类(java),java,android,multithreading,Java,Android,Multithreading,这就是我试图执行代码的方式 private final class BoxSelect implements View.OnTouchListener { public boolean onTouch(View view, MotionEvent motionEvent) { setView(view); setMotionEvent(motionEvent); if (t1.getState() == Thread.State.N

这就是我试图执行代码的方式

private final class BoxSelect implements View.OnTouchListener
{
    public boolean onTouch(View view, MotionEvent motionEvent)
    {
        setView(view);
        setMotionEvent(motionEvent);
        if (t1.getState() == Thread.State.NEW)
        {
            t1.start();
            if (getHit() == false) {
                t2.start();
            }
        }
        return false;
    }
}
我创建了两个名为t1和t2的线程,它们将两个可运行方法r1和r1作为参数:

Thread t1 = new Thread(r1);
Thread t2 = new Thread(r2);
R1定义为:

Runnable r1 = new Runnable() {
    public void run() {
        System.out.println("ENTERING RUN t1");
        class BoxSelect implements View.OnTouchListener {

            Drawable hitTarget = getResources().getDrawable(R.drawable.hit);
            Drawable missTarget = getResources().getDrawable(R.drawable.miss);

            View view1 = getView();
            MotionEvent motionEvent1 = getMotionEvent();

            public void whenCreate()
            {
                System.out.println("HERE t1");
                hit = false;
                boolean goToElse = true;
                boolean hit2 = false;
                boolean goToElse2 = true;
                if (motionEvent1.getAction() == MotionEvent.ACTION_DOWN) {
                    for (int i = 0; i < ids.length; i++) {
                        for (int j = 0; j < ids.length; j++) {
                            String coord = b.getBoard()[i][j];
                            if (view == ids[i][j]) {
                                System.out.println("ATTACKING " + b.getCompTempBoard()[i][j]);
                                player.basicAttack(b.getBoard(), coord, ai);
                            }
                            if (view == ids[i][j] && b.getCompTempBoard()[i][j].equalsIgnoreCase("HIT")) {
                                System.out.println("Hit GUI");
                                if (ids[i][j].getBackground().equals(hitTarget)) {
                                    hit = true;
                                    goToElse = false;
                                } else {
                                    ids[i][j].setBackgroundDrawable(hitTarget);
                                    System.out.println("ert 1 " + b.getCompTempBoard()[i][j]);
                                    playerCount++;
                                    if (playerCount == 10) {
                                        player.endGame();
                                        b.incrementPlayerCount();
                                        AlertDialog.Builder builder1 = new AlertDialog.Builder(context);
                                        builder1.setMessage("YOU WIN :)\nScore is:\nPlayer: " + b.getPlayerWinCount() + "\nComputer: " + b.getCompWinCount());
                                        builder1.setCancelable(true);
                                        builder1.setNegativeButton("OK",
                                                new DialogInterface.OnClickListener() {
                                                    public void onClick(DialogInterface dialog, int id) {
                                                        dialog.cancel();
                                                        Intent intent = new Intent(AttackShips6.this, MainMenu.class);
                                                        startActivity(intent);
                                                    }
                                                });

                                        AlertDialog alert11 = builder1.create();
                                        alert11.show();
                                        for (int k = 0; k < ids2.length; k++) {
                                            for (int r = 0; r < ids2.length; r++) {
                                                if (b.getCompTempBoard()[k][r].equalsIgnoreCase("HIT") || b.getCompTempBoard()[k][r].equalsIgnoreCase("NULL NOT HIT")) {
                                                    ids[k][r].setBackgroundDrawable(hitTarget);
                                                }
                                                if (b.getCompTempBoard()[k][r].equalsIgnoreCase("MISS") || b.getCompTempBoard()[k][r].equalsIgnoreCase(b.getBoard()[k][r])) {
                                                    ids[k][r].setBackgroundDrawable(missTarget);
                                                }
                                                if (b.getTempBoard()[k][r].equalsIgnoreCase("HIT") || b.getTempBoard()[k][r].equalsIgnoreCase("NULL NOT HIT")) {
                                                    ids2[k][r].setBackgroundDrawable(hitTarget);
                                                }
                                                if (b.getTempBoard()[k][r].equalsIgnoreCase("MISS") || b.getTempBoard()[k][r].equalsIgnoreCase(b.getBoard()[k][r])) {
                                                    ids2[k][r].setBackgroundDrawable(missTarget);
                                                }
                                            }
                                        }
                                    }
                                    hit = true;
                                    goToElse = false;
                                }
                            } else if (view == ids[i][j] && b.getCompTempBoard()[i][j].equalsIgnoreCase("MISS")) {
                                System.out.println("MISS GUI 1");
                                if (ids[i][j].getBackground().equals(missTarget)) {
                                    hit = true;
                                    goToElse = false;
                                } else {
                                    System.out.println("MISS GUI");
                                    ids[i][j].setBackgroundDrawable(missTarget);
                                    System.out.println("ert 2 " + b.getCompTempBoard()[i][j]);
                                    hit = true;
                                    goToElse = true;
                                }

                            }
                            if (goToElse == true) {
                                hit = false;
                                System.out.println("MISS PLAYER GUI");
                                view.setBackgroundDrawable(missTarget);
                            }
                        }
                    }
                }
            }
            public boolean onTouch(View view, MotionEvent motionEvent) {
                return false;
            }
        }
    }
};
Runnable r1=new Runnable(){
公开募捐{
System.out.println(“进入运行t1”);
类BoxSelect实现View.OnTouchListener{
Drawable hitTarget=getResources().getDrawable(R.Drawable.hit);
Drawable missTarget=getResources().getDrawable(R.Drawable.miss);
View view1=getView();
MotionEvent motionEvent1=getMotionEvent();
创建()时公共无效
{
System.out.println(“此处t1”);
命中=错误;
布尔goToElse=true;
布尔hit2=假;
布尔gotoels2=true;
如果(motionEvent1.getAction()==MotionEvent.ACTION\u向下){
for(int i=0;iRunnable r2 = new Runnable() {
        public void run() {
            System.out.println("ENTERING RUN t2");
            try {
                TimeUnit.NANOSECONDS.sleep(1);
                System.out.println("HERE 2");
                class BoxSelect implements View.OnTouchListener {
                    Drawable hitTarget = getResources().getDrawable(R.drawable.hit);
                    Drawable missTarget = getResources().getDrawable(R.drawable.miss);
                public boolean onTouch(View view, MotionEvent motionEvent) {
                    System.out.println("HERE t2");

                    if (hit == false) {

                        System.out.println("SLEEPING 2");
                        try {
                            TimeUnit.SECONDS.sleep(1);
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }

                        System.out.println("COMPUTERS TURN");
                        ai.advancedAttack(b.getBoard(), ai.getRandomCoordinate_For_Attacking_6x6(), player);
                        System.out.println("First attack: " + ai.getFirstCoord());
                        boolean goAgain = true;
                        while (goAgain == true) {
                            for (int w = 0; w < ids2.length; w++) {
                                for (int y = 0; y < ids2.length; y++) {
                                    if (b.getBoard()[w][y].equalsIgnoreCase(ai.getFirstCoord()) && b.getTempBoard()[w][y].equalsIgnoreCase("HIT")) {
                                        System.out.println("DR 1");
                                        ids2[w][y].setBackgroundDrawable(hitTarget);
                                        ai.setFirstCoord(ai.getNextCoordToAttack());
                                        System.out.println("Next: " + ai.getFirstCoord());
                                        ai.advancedAttack(b.getBoard(), ai.getFirstCoord(), player);
                                        System.out.println("After attack in loop");
                                        goAgain = true;
                                        CompCount++;
                                        if (CompCount == 10) {
                                            b.incrementCompCount();
                                            AlertDialog.Builder builder1 = new AlertDialog.Builder(context);
                                            builder1.setMessage("YOU LOSE :(\n" + "Score is:\n" + "Player: \n" + b.getPlayerWinCount() + "\nComputer: " + b.getCompWinCount());
                                            builder1.setCancelable(true);
                                            builder1.setNegativeButton("OK",
                                                    new DialogInterface.OnClickListener() {
                                                        public void onClick(DialogInterface dialog, int id) {
                                                            dialog.cancel();
                                                            Intent intent = new Intent(AttackShips6.this, MainMenu.class);
                                                            startActivity(intent);
                                                        }
                                                    });

                                            AlertDialog alert11 = builder1.create();
                                            alert11.show();
                                            for (int k = 0; k < ids2.length; k++) {
                                                for (int r = 0; r < ids2.length; r++) {
                                                    if (b.getCompTempBoard()[k][r].equalsIgnoreCase("HIT") || b.getCompTempBoard()[k][r].equalsIgnoreCase("NULL NOT HIT")) {
                                                        ids[k][r].setBackgroundDrawable(hitTarget);
                                                    }
                                                    if (b.getCompTempBoard()[k][r].equalsIgnoreCase("MISS") || b.getCompTempBoard()[k][r].equalsIgnoreCase(b.getBoard()[k][r])) {
                                                        ids[k][r].setBackgroundDrawable(missTarget);
                                                    }
                                                    if (b.getTempBoard()[k][r].equalsIgnoreCase("HIT") || b.getTempBoard()[k][r].equalsIgnoreCase("NULL NOT HIT")) {
                                                        ids2[k][r].setBackgroundDrawable(hitTarget);
                                                    }
                                                    if (b.getTempBoard()[k][r].equalsIgnoreCase("MISS") || b.getTempBoard()[k][r].equalsIgnoreCase(b.getBoard()[k][r])) {
                                                        ids2[k][r].setBackgroundDrawable(missTarget);
                                                    }
                                                }
                                            }
                                        }
                                    } else if (b.getBoard()[w][y].equalsIgnoreCase(ai.getFirstCoord()) && b.getTempBoard()[w][y].equalsIgnoreCase("MISS")) {
                                        System.out.println("DR 2");
                                        ids2[w][y].setBackgroundDrawable(missTarget);
                                        ai.setFirstCoord(ai.getNextCoordToAttack());
                                        goAgain = false;
                                    }
                                }
                            }
                        }
                    }
                    return hit;
                }
            }
        } catch (InterruptedException ex) {
            Thread.currentThread().interrupt();
            System.out.println("IN CATCH");
        }
        System.out.println("END");
    }
};`