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

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

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

Бредовый код - Программирование Android

20.02.2016, 04:12. Просмотров 210. Ответов 2
Метки нет (Все метки)

Доброго времени суток ребят.
нужен совет, иначе голова однажды просто лопнет.
цель наполнить массив объектами, с разными значениями полей объектов
в общем имеем следующее:

первый класс: обращаясь к методу moveY в котором должно всё происходить
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Player {
    public Player(){
        x = 150;
        y = 0;
        currentWorld = 1;
        thisPlanet = new Ore[150][300];
    }
    private int x;
    private int y;
    private int currentWorld;
    Initialize initialize;
    private Ore[][] thisWorld;
 
    public void moveY(int y){
        thisPlanet[x][y] = initialize.initialize(new Ore(),currentWorld,y);
        this.y = y;
    }
второй класс Ore,объекты которого создаются при обращении к методу initialize.initialize(new Ore(),currentWorld,y):
Java
1
2
3
4
5
6
7
public class Ore {
    public String name;
    public int id;
    public int rarity;
    public int count;
    public int density;
}
третий класс, к которому обращается метод при создании объекта Ore и добавлением его в массив, что-бы определить поля:
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
public abstract class Initialize {
 
    private int y;
    Ore ore;
    Planet1 planet;
 
    public Ore initialize(Ore ore, int planet, int y) {
        this.ore = ore;
        this.y = y;
        checkPlanet(planet);
        return ore;
    }
 
 
    private void checkPlanet(int planet) {
 
        switch (planet) {
            case 1:
                planet1();
                break;
        }
    }
 
    private void planet1() {
        planet = new Planet1();
        planet.check(ore,y);
    }
}
а четвёртый класс уже определяет поля объекта Ore:

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
public class Planet1 {
    private int rarity;
    Ore ore;
 
    public void check(Ore ore, int y) {
        this.ore = ore;
        rock(y);
 
    }
 
 
    private void rock(int y) {
        rarity = 20;
        if (y > 5 && y < 300) {
            if(rarity>Math.random()*100) {
                ore.name = String.valueOf(R.string.rock);
                ore.id = 1;
                ore.count = (int) (40 + (Math.random() * y+10));
                ore.density = 4;
                return;
            }
        }
        iron(y);
    }
 
    private void iron(int y) {
        rarity = 25;
        if (y > 10 && y < 300) {
            if(rarity>Math.random()*100) {
                ore.name = String.valueOf(R.string.iron);
                ore.id = 2;
                ore.count = (int) (70 + (Math.random() * y+10));
                ore.density = 1;
                return;
            }
        }
        silver(y);
    }
 
    private void silver(int y) {
        rarity = 20;
        if (y > 40 && y < 300) {
            if(rarity+(y/10)>Math.random()*100) {
                ore.name = String.valueOf(R.string.silver);
                ore.id = 3;
                ore.count = (int) (37 + (Math.random() * y+10));
                ore.density = 3;
                return;
            }
        }
        gold(y);
    }
}
несколько вопросов по этому коду визникло
1)Только мне кажется этот код с бесполезно большим количеством передач объекта от одново к другому методу?
2)Не понимаю зачем нужно наследование, интерфейсы и абстрактные классы, если работу ведёшь над проектом один и смысл от соблюдения контрактов уже не играет такой большой роли, направьте в нужном направлении, чувствую я сошел с пути
3)что скажите про архитектуру этого кода?

основная проблема такова... когда пишу код, каждый раз думаю как будет лучше, начинаю переделывать, потом опять думаю как-бы сделать по красивей, по компактней да по инкапсулированней) стараюсь делать классы ещё универсальнее, не знаю хорошо это или нет, или лучше много классов хоть и с пару строчкой кода но который будет выполнять только одну функцию?

буду очень благодарен если подскажите как сделать такую-же логику(выше пример), только с использованием интерфейсов или наследования, если они тут вообще имеют место быть.

Извиняюсь за много букв, если что-то не понятно, спрашивайте, попытаюсь объяснить как можно понятнее.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.02.2016, 04:12     Бредовый код
Посмотрите здесь:

Проверить "Бредовый" код - HTML, CSS
Здравствуйте т.к. я недавно стал изучать html+css часто сталкиваюсь с различными проблемами которые приходится решать методом проб и ошибок...

Почему такой бредовый вывод типов и как с этим быть? - F#
Если так let add (a:float) (b:float) (c:float) = b * b - a * c;; то всё нормально val add : a:float -&gt; b:float -&gt; c:float...

Написать код для игры НИМ. проверьте пожалуйста тот ли это код - C++
#include &lt;string&gt; using namespace std; int compChoose(int markers); int userChoose(int markers); int...

Как получить исходный код *.exe или отредактировать его исполняемый код? - C++
Собственно возможно ли декомпилить его так, чтобы можно было потом обратно скомпилировать? Или хотя-бы отредактировать код, только не...

Как перевести код с паскаля на Java. Пытался сам но код не хочет работать переведенный - Java SE
А сам код на паскале работает. Вот код на паскале var i,j,m,c,d: integer; A:array of integer; begin c:=1; ...

Подскажите дизассемблер, который переведет код ассемблера в машинный 8 битный код для КР580 - Assembler
Подскажите программу дизассемблер которая переведет код ассемблера в машинный 8 битный код для КР580

Преобразовать код на Java в код для ассемблера 3AA - Программирование
переделать Java программу в программу 3AA все данные типа int for(int i = 0; i &lt; 10; ++i) { if(a &lt; b){ a = a + 1; } else { b...

.NET 4.x ASCII-код в 16-ном виде и скан-код с клавы - C#
Так и не нашёл вразумительных решений.Или хотя бы пинков в нужную сторону куда копать. Нужно получать ASCII-код в 16-ном виде и скан-код...

Как превратить код .NET в код Win32(Native) - C#
Мне интересно как это сделать. N-gen'ом не получается.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
20.02.2016, 10:12     Бредовый код #2
Karat37, в java не принято поля public делать, обычно они private, иногда protected. А работа из вне с ними происходит через set\get.

Добавлено через 1 минуту
А по поводу структуры и переписывания по много раз - это нормально я считаю. Поначалу будете переписывать, потом уже сразу оптимально писать, думаю все через это проходят.
Karat37
0 / 0 / 0
Регистрация: 03.10.2015
Сообщений: 14
21.02.2016, 15:19  [ТС]     Бредовый код #3
а по поводу наследования и интерфейсов?

Добавлено через 26 минут
Подскажите как лучше реализовать генерацию, процедурную,т.е. по мере необходимости, или сразу всё? получается примерно 45000 объектов в массве, не слишком будет для телефона?

Добавлено через 13 часов 52 минуты
Закрыть тему.
Yandex
Объявления
21.02.2016, 15:19     Бредовый код
Ответ Создать тему
Опции темы

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