Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Стартап проверить есть ли блоки над игроком

iceeee645745

Новичок
Баллы
6
Здравствуйте, у меня ноль знаний в джаве, и мне необходим основной алгоритм от которого я буду действовать. Можете написать небольшой код, начиная от начала до конца, который проверяет наличие любых блоков над игроком до 256 высоты, и в случае, если это так напишет в чат "true"? Заранее спасибо.
 
Ну как то так.
Код:
    public boolean isBlockUpTrue(Player player) {
        int high = player.getWorld().getHighestBlockAt(player.getLocation()).getLocation().getBlockY();
        if(high>player.getLocation().getBlockY()) {
            return true;
        }
        return false;
    }
 
Ну как то так.
Код:
    public boolean isBlockUpTrue(Player player) {
        int high = player.getWorld().getHighestBlockAt(player.getLocation()).getLocation().getBlockY();
        if(high>player.getLocation().getBlockY()) {
            return true;
        }
        return false;
    }
А зачем так много лишнего кода?

PHP:
public boolean isBlockUp (Player player) {
return player.getWorld().getHighestBlockAt (player.getLocation()).getLocation().getBlockY() > player.getLocation().getBlockY();
}
 
Не согласен. Всё правильно он пишет. Для новичков самое то.
Мало того, я бы ещё больше расписал.
Да, да, учи новичков писать большой код, да, да, ураааа.

Ну а кто такие ****ь комменты то? Зачем нужно делать огромный код если можно сделать огромный коммент с описанием как это работает? Более того, прежде чем учить новичка писать такое требуется чтобы у него было понимание как внутри этот код исполняется, а учить по принципу: "Не, епта, вот видишь там такой огромный кусок условия, вот я тебе 4 переменные создал, каждая за что-то отвечает" это бред априоре.
 
Да, да, учи новичков писать большой код, да, да, ураааа.

И чем плох большой код? Хотя бы одну уважительную причину?

Ну а кто такие ****ь комменты то? Зачем нужно делать огромный код если можно сделать огромный коммент с описанием как это работает?

Как оказалось, подробные комменты мало кто пишет. Попробуешь опровергнуть?

Более того, прежде чем учить новичка писать такое требуется чтобы у него было понимание как внутри этот код исполняется, а учить по принципу: "Не, епта, вот видишь там такой огромный кусок условия, вот я тебе 4 переменные создал, каждая за что-то отвечает" это бред априоре.

Вот именно поэтому я предпочитаю развёрнутый код ("большой", если угодно). Код, взглянув на который, сразу будет ясно, что именно делает та или иная часть. Даже если я посмотрел на него через пять лет. И даже, если код без комментариев.
И да, дополнительные переменные изрядно повышают читабельность кода.
 
Хрена вы срач раздули тут по поводу размера кода. Вы же понимаете, что компилятор это все оптимизирует?
 
И чем плох большой код? Хотя бы одну уважительную причину?
1. Читабельность (Гораздо проще посмотреть объяснение как этот код работает, чем разбирать говнокод)
2. Собственно сам говнокод. Таким образом ты создаёшь ненужные переменные которые будут на стеке, зачем это надо? Компилятор разберётся? Ну учим так учим, заебца.
Как оказалось, подробные комменты мало кто пишет. Попробуешь опровергнуть?
Статистика by shiza1337? Как это так оказалось? Откуда у тебя такие данные? Опять британские учёные приложили к этому руку?
Вот именно поэтому я предпочитаю развёрнутый код ("большой", если угодно). Код, взглянув на который, сразу будет ясно, что именно делает та или иная часть. Даже если я посмотрел на него через пять лет. И даже, если код без комментариев.
Компилятор & JVM: Спасибо мужик)
И да, дополнительные переменные изрядно повышают читабельность кода.
Найдите родителей этих переменных, переверните там все регистры, но накажите, накажите этот стек и кучу, это животные не достойные использовать malloc.
 
Хрена вы срач раздули тут по поводу размера кода. Вы же понимаете, что компилятор это все оптимизирует?
Тут уже больше разговор за то чтобы учить новичков писать огромный код и надеется что компилятор сделает всю работу. У компилятора лишь абстрактное понимание того что делает твой код, нельзя постоянно быть уверенным в нём.
 
Тут уже больше разговор за то чтобы учить новичков писать огромный код и надеется что компилятор сделает всю работу. У компилятора лишь абстрактное понимание того что делает твой код, нельзя постоянно быть уверенным в нём.
Жаль, что вы не поняли. Речь не про "огромный" код, а про понятный.

Вы, наверное, и переменные называете - a, b, c и т.д.? Так же короче, верно?
 
Вы, наверное, и переменные называете - a, b, c и т.д.? Так же короче, верно?
В данном случае речь идёт об дополнительном ненужном коде. Создавать отдельные переменные/ветвления не имеет смысла если можно коротко и ясно уместить в inline, а сверху написать небольшой коммент с разъяснениями и ссылками на JavaDocs. Хз что за глупые вопросы.

p.s В первом варианте виртуалка будет ставить локальное значение в стек, сверять его и прыгать по нужному ветвлению, и только после этого передавать результат. В моём же варианте она будет передавать результат проверки сразу в регистр.
Если компиляторы научились убирать ненужные ветвления и анализировать код до такого состояния чтобы понимать когда нужно убирать, а когда нет - тогда извиняюсь, ненужный срач вышел.
 
Последнее редактирование:

Поделиться этой страницей

Назад
Верх