在Java中使用线程进行兔子狩猎

时间:2019-05-26 13:40:48

标签: java

我必须用Java编写Rabbit hunt程序,它有4个输入,我已经编程了3个输入:兔子数量,列数和行数。问题出在我尝试使用线程并让兔子使用重绘移动,什么也没发生。

我根据用户的输入创建新的道路对象

rara = new Road(numofcol, numofrow, numofrabb);
        frame.add(rara, BorderLayout.CENTER);
        frame.getContentPane().validate();
        frame.getContentPane().repaint();

然后创建线程,并执行run():

public void run(){
    while (true==true) {
        rara.step();
        rara.bigstep();
        frame.repaint();
    }

其中step()和bigstep是我用于更改野兔和狼所在区域的函数:

public void step(){
            for(int a=0;a<rabits.size();a++){
                Field the_field= rabits.get(a).field;
                int rand_number= the_field.move(the_field, wolfs.get(0));
                if(Field.selectField(rand_number).moose==true){
                    //nic nie robi
                }
                else {
                    rabits.get(a).changeField(Field.selectField(rand_number));
                    for (int c = 0; c < rabits.size(); c++) {
                        Field the_second_field= rabits.get(c).getField();
                        repaint();
                    }
                }


            }

    }
public void bigstep(){
        wolf big_bad_wolf= wolfs.get(0);
        Field the_third_field= big_bad_wolf.getfield_wolf();
        int xw = the_third_field.getX();
        int yw = the_third_field.getY();
        double england=0;
        ArrayList<Field> english= new ArrayList<Field>();

        for(int d=0;d<rabits.size();d++){
            Field eng= rabits.get(d).getField();
            int xm = eng.getX();
            int ym = eng.getY();
            double score = Math.sqrt((xw-xm)^2+(yw-ym)^2);
            if(score>england){
                england=score;
                english.clear();
                english.add(eng);
            }
            else if(score==england){
                english.add(eng);
            }
        }
        Field the_forth_field= english.get(ra.nextInt(english.size()));
        wolfs.get(0).changeField(the_forth_field);
        this.repaint();
    }

0 个答案:

没有答案