Как обратиться к объекту класса из другого класса?

121
16 августа 2019, 00:10

Стоит задача создать игру: есть поле 100х100, на котором рандомно появляются 2 мыши и начинают бежать по диагонали. Также на поле появляются 18 кустов. Когда мышь (любая) встречает на пути куст (раньше другой мыши) - она выигрывает. Я создал 3 Класса: В первом описал мышь и создал её метод: бег.

package hardcore;
import java.util.Random;
public class Mouse {
    private int startX;
    private int startY;
    private String mouseName;
    private String mouseColour;
    private int veter;
    public int count = 1;
    public Mouse(String mouseName) {
        Random rand = new Random();
        startY = rand.nextInt(100);
        startX = rand.nextInt(100);
        this.mouseName = this.mouseName;
        this.mouseColour = "white";
    }
    public void run() {
        while (count > 0) {
            a:
            for (int i = 0; i < 99; i++) {
                Random rand = new Random();
                startX++;
                startY++;
                veter = rand.nextInt(1);
                if (veter > 0) {
                    startY += veter;
                    startX += veter;
                }
                System.out.println(startX + " " + startY);
                if (startY == 99 || startX == 99) {
                    break a;
                }
            }
            if (startY == 99) {
                Random rand = new Random();
                b:
                for (int i = 0; i < 99; i++) {
                    startX++;
                    startY--;
                    veter = rand.nextInt(1);
                    if (veter > 0) {
                        startY -= veter;
                        startX += veter;
                    }
                    System.out.println(startX + " " + startY);
                    if (startX == 99) {
                        break b;
                    }
                }
                if (startX == 99) {
                    c:
                    for (int i = 0; i < 99; i++) {
                        startX--;
                        startY--;
                        veter = rand.nextInt(1);
                        if (veter > 0) {
                            startY -= veter;
                            startX -= veter;
                        }
                        System.out.println(startX + " " + startY);
                        if (startY == 0) {
                            break c;
                        }
                    }
                }
                if (startY == 0) {
                    d:
                    for (int i = 0; i < 99; i++) {
                        startX--;
                        startY++;
                        veter = rand.nextInt(1);
                        if (veter > 0) {
                            startY += veter;
                            startX -= veter;
                        }
                        System.out.println(startX + " " + startY);
                        if (startX == 0) {
                            break d;
                        }
                    }
                }
            } else {
                Random rand = new Random();
                if (startX == 99) {
                    e:
                    for (int i = 0; i < 99; i++) {
                        startX--;
                        startY++;
                        veter = rand.nextInt(1);
                        if (veter > 0) {
                            startY += veter;
                            startX -= veter;
                        }
                        System.out.println(startX + " " + startY);
                        if (startY == 99) {
                            break e;
                        }
                    }
                    if (startY == 99) {
                        f:
                        for (int i = 0; i < 99; i++) {
                            startX--;
                            startY--;
                            veter = rand.nextInt(1);
                            if (veter > 0) {
                                startY -= veter;
                                startX -= veter;
                            }
                            System.out.println(startX + " " + startY);
                            if (startX == 0) {
                                break f;
                            }
                        }
                        if (startX == 0) {
                            g:
                            for (int i = 0; i < 99; i++) {
                                startX++;
                                startY--;
                                veter = rand.nextInt(1);
                                if (veter > 0) {
                                    startY -= veter;
                                    startX += veter;
                                }
                                System.out.println(startX + " " + startY);
                                if (startX == 0) {
                                    break g;
                                }
                            }
                        }
                    }
                }
            }
            count++;
        }
    }
}

Во втором классе описал куст, создал конструктор и написал метод появления кустов

package hardcore;
import java.util.Random;
public class Kust {
    public int x;
    public int y;
    private String kustColour;
    public void born() {
        Random random = new Random();
        x = random.nextInt(100);
        y = random.nextInt(100);
        String[] rKustColour = {"red", "blue", "browm", "green", "orange"};
        int i = random.nextInt(rKustColour.length);
        kustColour = rKustColour[i];
        System.out.println("Цвет куста: " + kustColour + "\nКоординаты: " + x + ", " + y);
    }
}

В 3-ем классе, основном, я создал 18 кустов, объявил их появление, объявил начало "забега".

package hardcore;
public class Runner {
    public static void main(String args[]) {
       /* for (int i = 1; i <= 18; i++) {
            String name = "kust"+i;
            Kust name = new Kust();*/
        Kust kust1 = new Kust();
        Kust kust2 = new Kust();
        Kust kust3 = new Kust();
        Kust kust4 = new Kust();
        Kust kust5 = new Kust();
        Kust kust6 = new Kust();
        Kust kust7 = new Kust();
        Kust kust8 = new Kust();
        Kust kust9 = new Kust();
        Kust kust10 = new Kust();
        Kust kust11 = new Kust();
        Kust kust12 = new Kust();
        Kust kust13 = new Kust();
        Kust kust14 = new Kust();
        Kust kust15 = new Kust();
        Kust kust16 = new Kust();
        Kust kust17 = new Kust();
        Kust kust18 = new Kust();
        kust1.born();
        kust2.born();
        kust3.born();
        kust4.born();
        kust5.born();
        kust6.born();
        kust7.born();
        kust8.born();
        kust9.born();
        kust10.born();
        kust11.born();
        kust12.born();
        kust13.born();
        kust14.born();
        kust15.born();
        kust16.born();
        kust17.born();
        kust18.born();
        Mouse mouse1 = new Mouse("Klava");
        Mouse mouse2 = new Mouse("Lika");
        System.out.println("Бежит мышь 1");
        mouse1.run();
        System.out.println("Бежит мышь 2");
        mouse2.run();
        if (mouse1.count > mouse2.count) {
            System.out.println("Поебдила мышь 1");
        } else {
            if (mouse1.count < mouse2.count) {
                System.out.println("Поебдила мышь 2");
            } else {
                System.out.println("Мышки нашли куст одновременно");
            }
        }
    }
}

Теперь я не могу понять каким образом сравнить координаты мышей с координатами кустов. Каким образом их вытащить (координаты кустов) и вставить в мышиный метод с бегом?

Answer 1

Это неполный ответ на ваш вопрос, но вот ответ на вопрос о том, как создать массив кустов.

ArrayList<Kust> kustList = new ArrayList();
    for(int i = 0; i < number_of_kusts; i++) {
         kustList.add(new Kust("its name +" + i))
         kustList.get(i).born();
    }

Решение, с помощью массива

Kust[] kustArray = new Kust[your_number_was_18];
for(int i = 0 i < your_number_was_18; i++) {
    kustArray[i] = new Kust("your name" + i);
    kustArray[i].born();
}

Отличительная особенность листа от массива заключается в том, что у массива вам необходимо заранее указать его размер. В вашем случаи это 18. Массив можно расширять, но это делается с помощью инициализации другого массива, заполнения его, а затем присваивание ссылки нового замест старого.

READ ALSO
NavigationView android studio

NavigationView android studio

Как сделать так, как было раньше в вк? Те

124
Локальные переменные java [закрыт]

Локальные переменные java [закрыт]

Что будет со значением переменной, если объявить её в классе (те

100
Можно ли создать glow эффект в SVG?

Можно ли создать glow эффект в SVG?

Я изучаю SVG, и я хотел бы знать, возможно ли создать такой эффект свечения с SVG, в интерактивном режиме, как в следующем примере- наведение вызывает...

133
Что такое и для чего сделано &ldquo;var carElement = $(carHtml);&rdquo;?

Что такое и для чего сделано “var carElement = $(carHtml);”?

Я новичок в JS и jQueryЧитаю "JavaScript для детей"

118