Пятница, 22 Ноября 2024, 20:32

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Вопрос - Ответ (Java)
FadeBakerДата: Среда, 22 Апреля 2015, 00:04 | Сообщение # 1
JavaSE Game Developer
Сейчас нет на сайте
Сюда задаем узконаправленные и не очень вопросы. Здесь можно быстрее получить ответ на волнующий вопрос и сэкономить время на создание и оформление темы.
Также по возможности буду стараться отвечать на вопросы и оказывать помощь по Java в рамках моих возможностей.

P.S. Примерно летом, когда появится свободное время, закончу академ. дела и освобожусь от некоторых обязанностей в жизни, планирую писать статьи по геймдеву на Java. Статьи будут рассчитаны на тех, кто знает язык на среднем уровне, поэтому сам язык рассматриваться не будет.


Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
Animan2010Дата: Среда, 22 Апреля 2015, 01:18 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Почему
byte n = 10 * 2;
выдает ошибку?


Anima Games
Animan Publishing
FadeBakerДата: Среда, 22 Апреля 2015, 01:25 | Сообщение # 3
JavaSE Game Developer
Сейчас нет на сайте
Цитата Animan2010 ()
Почему
byte n = 10 * 2;
выдает ошибку?

Если не ошибаюсь, выражение 10 * 2 воспринимается за тип int. Попробуй написать byte b = (byte) (10 * 2);. Таким образом мы преобразовываем выражение в нужный нам тип.


Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
PoidetLiДата: Среда, 06 Мая 2015, 06:08 | Сообщение # 4
участник
Сейчас нет на сайте
Код
тут был говнокод


Добавлено (06 мая 2015, 06:08)
---------------------------------------------
исправил ошибку, странно что стразу её не заметил


в еюдуго прсхлуренц
http://gcup.ru/forum/9-44187-1 мой Project 96


Сообщение отредактировал PoidetLi - Среда, 06 Мая 2015, 06:52
FadeBakerДата: Среда, 06 Мая 2015, 11:27 | Сообщение # 5
JavaSE Game Developer
Сейчас нет на сайте
Цитата PoidetLi ()
исправил ошибку, странно что стразу её не заметил

Другим с такой же ошибкой было бы полезно узнать, как ее исправить.


Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
PoidetLiДата: Среда, 06 Мая 2015, 12:24 | Сообщение # 6
участник
Сейчас нет на сайте
Цитата FadeBaker ()

Другим с такой же ошибкой было бы полезно узнать, как ее исправить.

ты про говнокод или что, если что то другое то там ошибка просто в внимательности и то что я 4 день не сплю ?


в еюдуго прсхлуренц
http://gcup.ru/forum/9-44187-1 мой Project 96
FadeBakerДата: Среда, 06 Мая 2015, 12:42 | Сообщение # 7
JavaSE Game Developer
Сейчас нет на сайте
Цитата PoidetLi ()
там ошибка просто в внимательности

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


Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
PoidetLiДата: Среда, 06 Мая 2015, 12:45 | Сообщение # 8
участник
Сейчас нет на сайте
Цитата FadeBaker ()
Большая часть ошибок вытекает из невнимательности, и не всегда можно быстро найти корень. А твой ответ ускорил бы это.
Ну да ладно, твое дело

ошибка в том что мне было лень снова писать функцию с другими условиями и я с копипастил, всё изменил кроме <= на >


в еюдуго прсхлуренц
http://gcup.ru/forum/9-44187-1 мой Project 96
kol9mboДата: Вторник, 16 Июня 2015, 23:45 | Сообщение # 9
был не раз
Сейчас нет на сайте

как сделать поле1 поле2 глобальными(чтоб работали в слушателе внизу кода)?... если сую прямо в класс листенер, то выдает ошибку (главный класс не найден).
PS.я чайник, только начал изучать java,надеюсь объясните доступно. Читаю смотрю, но до всего сразу не могу дойти.


Сообщение отредактировал kol9mbo - Вторник, 16 Июня 2015, 23:46
FadeBakerДата: Среда, 17 Июня 2015, 00:19 | Сообщение # 10
JavaSE Game Developer
Сейчас нет на сайте
Цитата kol9mbo ()
как сделать поле1 поле2 глобальными

Можно вынести их за пределы main и сделать статическими, приписав вначале слово static.
А можно прибегнуть к анонимным классам, добавив слушатель таким образом:
Код
ok.addActionListener(new ActionEvent() {
     public void actionPerformed(ActionEvent event){   
        pole2.setText(pole1.getText());   
     }
});

Только pole1 и pole2 сделай финальными (final).

Выбирай наиболее подходящий тебе вариант.


Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
kol9mboДата: Среда, 17 Июня 2015, 09:26 | Сообщение # 11
был не раз
Сейчас нет на сайте

не находит главный класс...
PS.даже без Static писать, но в классе, а не в воид, то находит внизу переменные.pole1 pole2.


как точно это поставить и что у себя убрать... всяко пробовал чтот не выходит.

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


Сообщение отредактировал kol9mbo - Среда, 17 Июня 2015, 09:28
Edison6Дата: Среда, 17 Июня 2015, 09:48 | Сообщение # 12
TRUE Programmer
Сейчас нет на сайте
Так попробуй:
LINK
и можно так
LINK


Берил сбрей усы

Сообщение отредактировал Edison6 - Среда, 17 Июня 2015, 10:00
kol9mboДата: Среда, 17 Июня 2015, 10:25 | Сообщение # 13
был не раз
Сейчас нет на сайте
Edison6, на первый линк выдает такое в консоли :


а это на второй:


может надо унаследовать класс? тогда все данные будут доступны. только что куда я хз_))


Сообщение отредактировал kol9mbo - Среда, 17 Июня 2015, 10:50
RemmintanДата: Среда, 17 Июня 2015, 12:23 | Сообщение # 14
почетный гость
Сейчас нет на сайте
kol9mbo, не очень ясно... ты скопировал код Edison6? Потому что его код по ссылкам абсолютно рабочий. У тебя же не статичен метод main (на что, собственно и ругается компилятор). Ключевое слово static перед main'ом есть?

Добавлено (17 июня 2015, 12:23)
---------------------------------------------
Я просто скопировал код Edison'a и скомпилировал его в командной строке, все прекрасно работает:


Сообщение отредактировал Remmintan - Среда, 17 Июня 2015, 12:14
kol9mboДата: Среда, 17 Июня 2015, 13:14 | Сообщение # 15
был не раз
Сейчас нет на сайте
Установил Эклипс.

все сделал-работает, большое спасибо.Сижу читаю про static и final
Static - переменная стала глобальной, верно понял? а до этого она использовалась,только внутри класса(думал это делает public/private);

final- говорится мол, не может иметь подклассов, и используется ,когда спецификация класса заморожена.Ничего толком не ясно_))))

Можно расписать ,то что он(Edison6) сделал каждым исправлением?Простыми словами=)


Сообщение отредактировал kol9mbo - Среда, 17 Июня 2015, 15:51
FadeBakerДата: Среда, 17 Июня 2015, 16:43 | Сообщение # 16
JavaSE Game Developer
Сейчас нет на сайте
kol9mbo,
Простыми словами, статические поля/методы/классы и т.п. принадлежат самому классу и существуют в одном экземпляре во всей программе, в то время как не статические элементы принадлежат экземпляру класса и существуют в каждом из них независимо друг от друга.
Код
public class TestClass {
     public static final int TEST = 12;

     public int var;
}
int v = TestClass.TEST; // так осуществляется доступ к статическим полям;
TestClass tc = new TestClass();
int v = tc.var; // доступ к не статическим полям;

Цитата kol9mbo ()
Можно расписать ,то что он(Edison6) сделал каждым исправлением?

Он написал то же, что и я, только в полном варианте.


Уроки по GM
Minecraft 2D на GM
— Мои проекты —
Blood Harvest [2D] — Original
Blood Harvest [2D]: Remastered Edition
Adventure Craft [2D] — Sandbox
Space Shock [2D] — Scroll Shooter
Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
kol9mboДата: Среда, 17 Июня 2015, 16:52 | Сообщение # 17
был не раз
Сейчас нет на сайте
FadeBaker, в полном это хорошо для меня=) Чтоб видеть картинку,что куда... тк только начинаю)
да и ошибку выдавал нет бинс всеравно...чтот обновилось там криво.

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

Чтот я один пишу=)


старый вопрос


новый вопрос


Сообщение отредактировал kol9mbo - Вторник, 23 Июня 2015, 23:16
JhonДата: Суббота, 25 Июля 2015, 13:48 | Сообщение # 18
частый гость
Сейчас нет на сайте
Как в Java запретить изменение объекта, переданного в качестве аргумента в метод?
Например, есть у меня такой интерфейс:
Код
public interface Collidable extends Spatial {
     ...
     public void onCollision(Collidable other); // process effect on this by other object
     ....
}

Я хочу в методе onCollision защитить объект other от изменения. В C++ все просто - передаешь его по константной ссылке и все. В Java технических средств кроме final нет для этого (но final защищает только ссылку, а не сам объект). Есть еще идиоматические средства. Например принцип immutable object - Collidable сейчас не содержит методов, изменяющих состояние, но это контролируется исключительно мной, нельзя запретить изменение с проверкой во время компиляции - вдруг, я захочу добавить в интерфейс еще чего-нибудь.
Или как-то можно это сделать? Какие есть устоявшиеся методики для решения таких проблем?
YellowAfterlifeДата: Суббота, 25 Июля 2015, 14:12 | Сообщение # 19
Сейчас нет на сайте
Цитата Jhon ()
Например принцип immutable object - Collidable сейчас не содержит методов, изменяющих состояние, но это контролируется исключительно мной, нельзя запретить изменение с проверкой во время компиляции - вдруг, я захочу добавить в интерфейс еще чего-нибудь.

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


JhonДата: Суббота, 25 Июля 2015, 14:35 | Сообщение # 20
частый гость
Сейчас нет на сайте
Цитата YellowAfterlife ()
CollidableReadOnly

И так делать для любого объекта, который я хочу защитить от изменения?
Тогда другой вопрос: это реально проблема Java, что там нет простого решения для этого, или это моя проблема, что я проецирую опыт C++ сюда, а в Java таких проблем нет вообще, и все решается на уровне проектирования интерфейсов?
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг