Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Biostasis
0 / 0 / 0
Регистрация: 23.08.2016
Сообщений: 1
#1

Обновление элементов интерфейса через промежутки времени - Программирование Android

23.08.2016, 10:53. Просмотров 166. Ответов 0

Итак, решил я написать свою игру по типу шариков (просто для самообразования). Есть поле 9х9, каждая клетка кнопка (знаю, не продуктивно, может подскажете как умнее реализовать?), есть методы для генерирования математической модели поля и метод для применения математической модели на кнопочках (обновление Drawable). Сейчас я воюю с A* алгоритмом. Решил в нем сразу запилить обновление кнопок, чтобы путь показывался в реальном времени. Использовал компонент Timer, но он работает совсем не так как задумано изначально. Я понимаю в чем проблема, но совсем не понимаю как можно её решить... Никаких идей.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
private void assignPathfinder(Logic logic, final CellType startCell, CellType endCell) {
        class PathCell extends CellType {
            private CellType parent;
            private CellType end;
            private int g;
            private int h;
            private int f;
 
            public PathCell(int x, int y, int type, CellType p, CellType e, int c) {
                super(x, y, type);
                parent = p;
                end = e;
 
                switch (c) {
                    case 1:
                        g = 10;
                        break;
                    case 2:
                        g = 14;
                        break;
                }
                h = (Math.abs(this.x - e.getX()) + Math.abs(this.y - e.getY())) * 10;
                f = g + h;
            }
 
            public void setByParent(CellType parent) {
                x = parent.getX();
                y = parent.getY();
            }
 
            public int getF() {
                return f;
            }
 
            public void setParent(CellType parent) {
                this.parent = parent;
                h = (Math.abs(this.x - end.getX()) + Math.abs(this.y - end.getY())) * 10;
                f = g + h;
            }
 
            public CellType getParent() {
                return parent;
            }
 
            public CellType getEnd() {
                return end;
            }
        }
        int price = 1000;
        int back = -1;
        gameLogics.setCell(startCell.getX(), startCell.getY(), startCell.getType());
        x = startCell.getX();
        y = startCell.getY();
        type = startCell.getType();
 
        gameTime.schedule(new TimerTask() {
            @Override
            public void run() {
                TimerMethod();
                System.out.println("I'm done");
            }
        }, 5000); //Задолбался. Фурычить не изволит...
 
        ArrayList<PathCell> open = new ArrayList<PathCell>();
        final PathCell critical = new PathCell(startCell.getX(), startCell.getY(), startCell.getType(), startCell, endCell, 0);
        open.add(critical);
        Cell backup = new Cell();
        boolean r = true;
        while(r) {
            for(int i = critical.getX()-1; i < critical.getX()+2; i++) {
                for(int j = critical.getY()-1; j < critical.getY()+2; j++) {
                    if(logic.getCell(i, j) == 0) {
                        PathCell c = new PathCell(i, j, logic.getCell(i, j), critical.getParent(), critical.getEnd(), 1);
                        if((i == critical.getX()-1 && (j == critical.getY()-1 || j == critical.getY()+1)) || (i == critical.getX()+1 && (j == critical.getY()-1 || j == critical.getY()+1))) {
                            c = new PathCell(i, j, logic.getCell(i, j), critical.getParent(), critical.getEnd(), 2);
                        }
                        open.add(c);
                    }
                }
            }
            for (int i = 0; i < open.size(); i++) {
                if (open.get(i).getF() < price) {
                    price = open.get(i).getF();
                    back = i;
                }
            }
            time.schedule(new TimerTask() {
                @Override
                public void run() {
                    TimerMethod();
                    System.out.println("I'm done");
                }
            }, 5100); //Ну и чего тебе надо, удотище?
 
            backup.setX(critical.getX());
            backup.setY(critical.getY());
 
            critical.setParent(open.get(back));
            critical.setByParent(open.get(back));
            gameLogics.setCell(backup.getX(), backup.getY(), 0);
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    TimerMethod();
                    System.out.println("I'm done");
                }
            }, 5200); //Сжечь в костре святой Инквизиции!
 
            price = 1000;
            back = -1;
            open.clear();
            gameLogics.setCell(critical.getX(), critical.getY(), critical.getType());
 
            x = critical.getX();
            y = critical.getY();
            type = critical.getType();
            gtime.schedule(new TimerTask() {
                @Override
                public void run() {
                    TimerMethod();
                    System.out.println("I'm done");
                }
            }, 5300); //Не изволит запускаться-с
 
            if(critical.getX() == critical.getEnd().getX() && (critical.getY() == critical.getEnd().getY() || critical.getY() == critical.getEnd().getY()+1)) {
                r = false;
            }
        }
    }
Мне нужно, чтобы цикл while словно "приостанавливался" и терпеливо ждал пока приложение не применит метод assignLogics(). Но по мере загугливания проблемы, я понял, что это скорее всего невозможно. А как реализовать это по умному - пока не знаю...
Заранее благодарю за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2016, 10:53     Обновление элементов интерфейса через промежутки времени
Посмотрите здесь:

Наложение элементов интерфейса - Программирование Android
Вопрос вот в чем: можно ли расположить элементы интерфейса, чтобы их области пересекались? Например можно ли расположить пару кнопок...

Динамическое создание элементов интерфейса - Программирование Android
Здравствуйте. Есть небольшая проблема с динамическим созданием элементов интерфейса. Не понимаю как это сделать в теории: есть 2 кнопки, по...

Динамическое создание элементов интерфейса - Программирование Android
Здравствуйте. Мне интересно знать, как динамически создавать элементы интерфейса. Например, в цикле вызывается метод, который создает...

Таймер и изменение элементов интерфейса - Программирование Android
Необходимо, чтобы через определенный промежуток времени после клика на ImageView происходила смена изображения для данного элемента....

Создание элементов интерфейса в Java коде - Программирование Android
Здравствуйте! У меня есть класс PuzzleView, реализующий собственный View. В верхней части экрана рисуется квадрат, а под этим квадратом мне...

Обновление элементов списка - Программирование Android
Всем привет, вот с чем столкнулся, использую RecyclerView, и в какой-то момент мне нужно скрыть часть элемента, казалось бы ...

Верстка интерфейса - Программирование Android
Привет всем! Помогите пожалуйста разобраться Мне нужно чтобы текст показывался в &quot;определенном квадрате&quot; т.е. чтобы текст не выходил...

Создание интерфейса - Программирование Android
Привет всем. Я совсем недавно решил заняться разработкой под android. С одной стороны очень легко далась java, с учетом того, что на...

дизайн интерфейса - Программирование Android
Доброго времени изучая андроид основное внимание уделял кодингу, но совсем забыл об интерфейсе. и вот столкнулся с проблеммами адаптации...

Верстка красивого интерфейса - Программирование Android
Уважаемые, подскажите пожалуйста книги, или хорошие статьи про создание, версику красивого интерфейса под android.

Программное создание интерфейса - Программирование Android
Вобщем мне нужно создавать програмным способом интерфейс приложения. Обьекты будут создаватся динамически, поэтому через xml разметку не...

Вопросы по настройке интерфейса - Программирование Android
Почему конструкция типа textTitle.setBackgroundColor(Color.rgb(100,100,100)); обрабатывается корректно, а ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru