Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 46 47 48 49 50 [51] 52 53 54 55 .. 121   вперед  Ctrl
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
asv79
mayton
Я не буду делать имплементацию. Я дам тебе макет. А ты подумай.


    private static List<Figure> initRowDesk(int row, String chessNotationRow) {
        // TODO:
        return Collections.EMPTY_LIST;
    }

    public static void main(String[] args) {
        Field field = Field.getInstance();

        List<Figure> list = new ArrayList<>();
        list.addAll(initRowDesk(0, "RKBQkBKR", ChessColor.WHITE));
        list.addAll(initRowDesk(1, "PPPPPPPP", ChessColor.WHITE));
        list.addAll(initRowDesk(6, "PPPPPPPP", ChessColor.BLACK));
        list.addAll(initRowDesk(7, "RKBQkBKR", ChessColor.BLACK));

теже яйца ,виду сбоку+ количество кода больше в два раза
list.addAll(initRowDesk(1, "PPPPPPPP", ChessColor.WHITE));
list.addAll(initRowDesk(6, "PPPPPPPP", ChessColor.BLACK)); вот это уже дубляж ,который добавляет зачем то 2 лишних строчки кода ,при том что пешки дабавляются одним циклом фор,который ты все равно будешь писать в методе ,где эти пешки физически создаются

(пожимая плечами)

Давай свой вариант.
14 май 19, 22:30    [21884828]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
mayton
asv79
пропущено...

теже яйца ,виду сбоку+ количество кода больше в два раза
list.addAll(initRowDesk(1, "PPPPPPPP", ChessColor.WHITE));
list.addAll(initRowDesk(6, "PPPPPPPP", ChessColor.BLACK)); вот это уже дубляж ,который добавляет зачем то 2 лишних строчки кода ,при том что пешки дабавляются одним циклом фор,который ты все равно будешь писать в методе ,где эти пешки физически создаются

(пожимая плечами)

Давай свой вариант.

https://github.com/apb12/CheckMate/blob/master/src/main/java/com/stas/game/Main.java
14 май 19, 22:31    [21884829]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
Ты - покритиковал. А я следую такой традиции. Критикуя - предлагай. А потом ... по Сталински... отвечай.
14 май 19, 22:34    [21884830]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
mayton
asv79
пропущено...

теже яйца ,виду сбоку+ количество кода больше в два раза
list.addAll(initRowDesk(1, "PPPPPPPP", ChessColor.WHITE));
list.addAll(initRowDesk(6, "PPPPPPPP", ChessColor.BLACK)); вот это уже дубляж ,который добавляет зачем то 2 лишних строчки кода ,при том что пешки дабавляются одним циклом фор,который ты все равно будешь писать в методе ,где эти пешки физически создаются

(пожимая плечами)

Давай свой вариант.

тут как не крути ,но физически нужно создавать 32 обьекта ,тоесть можно циклом создать однотипные фигуры(пешки)
но все остальные то разные
коней 4 например- тоесть грубо говоря можно циклом каким то хитрым дабавит их-но этот цикл займет больше стррочек кода,чем просто 4 строчки - добавить вручную
без имен было бы проще согласен- можно было коней создать в две строчки и также с остальными фигурами ,сократив код еще на 5-6 строчек,но у нас имена лефт конь и райт конь ,стоят они не зеркально,поэтому ну такое себе вообщем изголение получится,да я думаю оно и не
14 май 19, 22:37    [21884831]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
Ну.. код давай. Этож слова.... А слова они дешёвые.

Talk is cheap. Show me code...
14 май 19, 22:38    [21884832]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
mayton
Ты - покритиковал. А я следую такой традиции. Критикуя - предлагай. А потом ... по Сталински... отвечай.

я не покритиковал я не понимаю как ты хочешь создать 16 разных фигур не прописывая это вручную.
добавить на поле их не проблема,метод автоматически считывает позицию и добавляет по позиции,а вот создать 16 уникальных объектов ,в пару строчек можно если они одинаковы,а если они разные,то ты как не крути будешь руками набивать
14 май 19, 22:47    [21884837]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
Ну ты смотрел в мой код. Вот попробуй вслух прокомментировать что там происходить.

Чтение чужого кода - это офигенно важный экспириенс. Программист вообще 90% времени
не пишет код. А читает. И очень много. И чем крупнее проект тем он меньше пишет код
и больше анализирует то что написано.

Тебе выпал шанс понять мою идею.
14 май 19, 23:04    [21884840]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
mayton
Ну ты смотрел в мой код. Вот попробуй вслух прокомментировать что там происходить.

Чтение чужого кода - это офигенно важный экспириенс. Программист вообще 90% времени
не пишет код. А читает. И очень много. И чем крупнее проект тем он меньше пишет код
и больше анализирует то что написано.

Тебе выпал шанс понять мою идею.

идея твоя проста
построить лист фигур с 1 рядом фигур и второй лист с пешками,затем все это добавить в общий лист,присвоив им нужный цвет.
но ты не учел один нюанс ,что если ты построишь две линии они так и останутся двумя линиями,а две другие будут ссылками на две первые и любое изменение одних повлечем за свобой изменение других фигур,можешь проверить.
я такой вариант уже пробовал неоднократно.
невозможно сдедать много уникальных объектов класса без оператора new
как ты понимаешь первый будет уникальным,а все остальное лишь ссылки на него же
15 май 19, 00:20    [21884851]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
andreykaT
Member

Откуда:
Сообщений: 2246
asv79
mayton
Ты - покритиковал. А я следую такой традиции. Критикуя - предлагай. А потом ... по Сталински... отвечай.

я не покритиковал я не понимаю как ты хочешь создать 16 разных фигур не прописывая это вручную.
добавить на поле их не проблема,метод автоматически считывает позицию и добавляет по позиции,а вот создать 16 уникальных объектов ,в пару строчек можно если они одинаковы,а если они разные,то ты как не крути будешь руками набивать

он тебе предлагает сделать фабрику в которую будет попадать последовательно перебранные буквы из строки которую ты разложишь флэтмэпом.
15 май 19, 00:21    [21884852]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
тоесть если грубо говоря в реале ты пытаешься играть белыми фигурами против воображаемых черных-но так не бывает
чтобы взять в руки черную фигуру ,ее нужно сначало создать,а не смотреть на нее в зеркало грубо говоря))
15 май 19, 00:24    [21884853]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
andreykaT
asv79
пропущено...

я не покритиковал я не понимаю как ты хочешь создать 16 разных фигур не прописывая это вручную.
добавить на поле их не проблема,метод автоматически считывает позицию и добавляет по позиции,а вот создать 16 уникальных объектов ,в пару строчек можно если они одинаковы,а если они разные,то ты как не крути будешь руками набивать

он тебе предлагает сделать фабрику в которую будет попадать последовательно перебранные буквы из строки которую ты разложишь флэтмэпом.

)))) сколько строчек кода это займет и как реализовать название фигур уникальными именами?например knightLeftBlack
напишем парсер ,который вычесляет позицию фигуры и присваевает ей имя в зависимости от цвета или как ?
я просто уже чисто из спортирвного интереса хочу увидеть как выглядит этот код,который должен быть короче чем мои 16 строчек
и знаете -я его не увижу ,потому что это невозможно сделать короче чем просто добавить руками эти уникальные обьекты
я забыл как эта теория называется ,которую вы пытаетесь оповергнуть сейчас
15 май 19, 00:31    [21884855]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
asv79, ты уже уселся на диван и занял позу скептика? Ты серъезно думаешь что я буду тебе что-то доказывать?

Дружище. Это твоя война. Твоя учеба. Ты должен быть проактивен. Это я могу сидеть нога-на-ногу.

Будь проактивен. Придумай чем заполнить секцию "TODO:" чтобы этот код взлетел.
15 май 19, 09:03    [21884952]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
Tsyklop
Member

Откуда: Украина
Сообщений: 1018
mayton, а чем отличаются его критика от твоих просто слов? ты говоришь что такое можно сделать, даже кусочек когда привел. Договаривай тогда если начал. иначе зачем тогда было это все? смех просто.
15 май 19, 09:25    [21884966]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
Я подожду Стаса.
15 май 19, 09:39    [21884984]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
mayton
Я подожду Стаса.

полутра думал,ну честно я не знаю,как сделать 16 уникальных фигур,если не руками прописысавать
с пешками все понятно - фигуры идентичны и имя меняется лишь на цифру ,которую можно вытащить из цикла и в имя добавить и вместо 16 строчек получить 2
но как сделать из 16 уникальных фигур 2 строчки -я не знаю .
15 май 19, 12:17    [21885151]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
Смотри сюда внимательно. Я только что описал на эфемерном DSL расстановку доски.

0, "RKBQkBKR", WHITE
1, "PPPPPPPP", WHITE
6, "PPPPPPPP", BLACK
7, "RKBQkBKR", BLACK


Здесь есть вся инфа чтобы расставить фигуры. Здесь есть номер строки на доске. Здесь есть тип фигуры.
Я пошел на хитрость и ввел маленькую букву k чтобы различать короля и ладью. Но это просто пропозиция.
Ее можно обыграть и переделать как угодно. И здесь есть цвет фигуры.

И это описание не единственное. Коллеги в форуме предложат еще овер миллиард
способов как их расставить. Я-бы еще предложил горизонтально-вертикальное зеркало
которым можно расставить все фигуры кроме ферзя и короля. Их можно добавить отдельно.

Но из всех-всех способов ты в процедуре Main выбрал хм.... скажем так имеющий smell.
Запах. В нем пахнет избыточностью. Если например смотреть реляционным глазом то видно
что класс фигуры и комментарий связаны как 1:1. Ну может быть с суффиксом.

А после того как у нас есть полное и исчерпывающее описание наших данных. А расстановка - это и есть
данные - их можно преобразовать в код. Динамически. Или статически. Вобщем вариантов - тьма.
15 май 19, 12:53    [21885181]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
mayton
Смотри сюда внимательно. Я только что описал на эфемерном DSL расстановку доски.

0, "RKBQkBKR", WHITE
1, "PPPPPPPP", WHITE
6, "PPPPPPPP", BLACK
7, "RKBQkBKR", BLACK



А после того как у нас есть полное и исчерпывающее описание наших данных. А расстановка - это и есть
данные - их можно преобразовать в код. Динамически. Или статически. Вобщем вариантов - тьма.


посмотрел и ничего не пойму,прежде чем что то расставить -нужно иметь это что то.
а где ты это что возьмешь ?тебе нужны слоны,ладьи ,кони
расставить на поле уже имеющиеся фигуры не сложно и для этого не нужен никакой метод кроме
метода в классе Field.addfigure(),Который сам все расставит куда надо согласно позициям.
ты обьясни мне где ты берешь фигуры?
я понимаю что ты хочешь добавить по оси Х лист из фигур в определенном порядке,но вот тут вопрос - откуда в этом листе 8 фигур-как ты их создаешь?
мы же сейчас сокращаем не расстановку по полю,она занимает две строчки кода всего,а именно хотим сократить 16 строчек кода,в которых я создаю 16 уникальных фигур
15 май 19, 13:15    [21885197]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
я не знаю,может в других языка так можно,но в java как не крути чтобы иметь 32 обьекта ты должен создать 32 объекта.
в твоем примере я не вижу самого главного где и как создаются фигуры.

   for (int i = 0; i <8 ; i++) {
           list.add(FigureFactory.getInstance().createFigure(FigureList.PAWN, "pawn"+i, new Position(6, i), "White"));
           list.add(FigureFactory.getInstance().createFigure(FigureList.PAWN, "pawn"+i+"B", new Position(1, 7-i), "Black"));
        }

вот тут я создаю 16 пешек,так как с каждой итерацией я два раза делаю new Figure

а то о чем говоришь ты - не создание фигур,а способ их расстановки я так понимаю
15 май 19, 13:21    [21885204]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
Скажи честно. Тебе самому нравится твой код? Если нравится то отложим пока расстановку фигур.

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

Если у тебя сейчас затишье - то давай в новом проекте напишем тесты для ферзя. Зарефактирим его
по всем 100% кейсов. И изменим код.

Разумеется я не буду этого делать. Будешь делать сам. Я просто подскажу как.
15 май 19, 13:22    [21885206]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
mayton
Скажи честно. Тебе самому нравится твой код? Если нравится то отложим пока расстановку фигур.

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

Если у тебя сейчас затишье - то давай в новом проекте напишем тесты для ферзя. Зарефактирим его
по всем 100% кейсов. И изменим код.

Разумеется я не буду этого делать. Будешь делать сам. Я просто подскажу как.

код конечно не ок,я это понимаю,но лучше пока не в состоянии сделать,да и не пишет давно уже никто на голой джаве ничего,так что по большому счету я сейчас на месте букскую,вместо того чтобы спринг изучать.
я согласен с тобой,давай отложим расстановку- мы и так уменьшили там прилично код.
сейчас нужно попробовать изменить логику фигур и убрать не ненужные классы со статикой
15 май 19, 17:50    [21885640]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
Вообщем решил спросит на стаковерфлоу
в принципе неплохое решение

public void iterateMove(List<Position> positions, int mx, int my) {
        for (int i = 1; i <= 7; i++) {
            if (mx*(x + i) + my*(y + i) <= 7 &&mx*(x + i) + my*(y + i) >= 0&& f[x + i*mx][y + i*my] == null) {
                positions.add(new Position(x + i*mx, y + i*my));
            } else break;
        }
    }

 public List<Position> aviableMove() {
        List<Position> positionList = new ArrayList<>();
        iterateMove(positionList,  1,  0);
        iterateMove(positionList,  0,  1);
        iterateMove(positionList, -1,  0);
        iterateMove(positionList,  0, -1);
        return positionList;
    }

но к сожалению и этот вариант не рабочий,так как проверка убивает этот метод и если рассмотреть детально
вот эту строчку

f (mx*(x + i) + my*(y + i) <= 7 &&mx*(x + i) + my*(y + i) >= 0

в ней всегда будет фалсе ,либо в одном условии ,либо в другом
например имеем координаты ладьи х=7 y=0
при условии -1,0 у нас получается вторая часть выражения всегда меньше нуля и все ходы в этом направлении не запишутся
тоже самое и при условии 0,-1
если проверку на >=0 убрать ,то будем вываливаться за границы поля с индексом -1


а так конечно красиво ,но нужно как то проверку эту заставить нормально проверять а не багать метод
16 май 19, 01:42    [21885800]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
У тебя есть дежа-вю?
16 май 19, 10:26    [21885960]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
asv79
Member

Откуда: Тверь
Сообщений: 1556
mayton
У тебя есть дежа-вю?

Есть )
Нерабочий это подход к сожалению,так как в таком случае мы никогда не запишем ход,а если убрать любую из проверок мы вывалимся за пределы поля.именно поэтому никуда нк деться от 4х циклов for.
Вообщем избыточная повторяемость кода оказалась насущной необходимостью
16 май 19, 11:13    [21886029]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
забыл ник
Member

Откуда:
Сообщений: 2859
asv79
mayton
У тебя есть дежа-вю?

Есть )
Нерабочий это подход к сожалению,так как в таком случае мы никогда не запишем ход,а если убрать любую из проверок мы вывалимся за пределы поля.именно поэтому никуда нк деться от 4х циклов for.
Вообщем избыточная повторяемость кода оказалась насущной необходимостью



Купили как-то суровым сибирским лесорубам японскую бензопилу.
Собрались в кружок лесорубы, решили ее испытать.
Завели ее, подсунули ей деревце.
«Вжик» — сказала японская пила.
«У, б...» — сказали лесорубы.
Подсунули ей деревце потолще. «Вж-ж-жик!» — сказала пила.
«Ух, б..!» — сказали лесорубы.
Подсунули ей толстенный кедр. «ВЖ-Ж-Ж-Ж-Ж-Ж-Ж-ЖИК!!!» — сказала пила.
«Ух ты, б..!!» — сказали лесорубы.
Подсунули ей железный лом. «КРЯК!» — сказала пила.
«Ага, б..!!!» — укоризненно сказали суровые сибирские лесорубы! И ушли рубить лес топорами…
16 май 19, 11:35    [21886050]     Ответить | Цитировать Сообщить модератору
 Re: Где взять опыт?)  [new]
mayton
Member

Откуда: loopback
Сообщений: 41377
Подход который я предлагал для ладьи оставляет просто 1 цикл для checkEat. И 4 вспомогательных процедуры.
16 май 19, 11:36    [21886052]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 46 47 48 49 50 [51] 52 53 54 55 .. 121   вперед  Ctrl
Все форумы / Java Ответить