Задать вопрос
  • Кто знает соревнования по разрабоке игр типа ludum Dare??

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    globalgamejam.org
    itch.io/jams
    7dfps.com
    7drl.org
    Ещё видел геймджемы на gcup.ru
    Ответ написан
    Комментировать
  • Javafx.scene.media.AudioClip; Как проиграть файл, имя которого содержит пробелы???

    Попробуй пойти через File:
    File file = new File("Путь к файлу с пробелами");
    String path = file.toURI().toASCIIString();
    Ответ написан
    1 комментарий
  • Какие игры можно делать на библеотеке libgdx?

    @mrsanders
    Работаю в Nelset interactive
    Любую игру, тут только навыки твои важны программирования и фантазия!
    Ответ написан
    Комментировать
  • LibGDX.Как правильно выводить текст?

    @Prosto_Bro
    Взято с этого сайта

    BitmapFont font;
    public static final String FONT_CHARACTERS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789][_!$%#@|\\/?-+=()*&.;,{}\"´`'<>";
    font = TrueTypeFontFactory.createBitmapFont(Gdx.files.internal("font.ttf"), FONT_CHARACTERS, 12.5f, 7.5f, 1.0f, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    font.setColor(1f, 0f, 0f, 1f);
    
    batch.begin();
    font.draw(font, "This is some text", 10, 10);
    batch.end();


    Здесь происходит загрузка шрифтов ttf, тобешь выбираете любой и грузите. Если нужно загрузить otf то можно воспользоваться этим или
    I think you'll have to create a BitmapFont (using Heiro, for example) from the OTF or find a TTF version.

    На счет функции createBitmapFont() и ее параметров, можете почитать в документации к libgdx.
    P.S На сколько я понял у проекта должна быть включена опция (при генерации) FreeType. Для созданых проектов нужно поместить библиотеку в проект.
    Ответ написан
    Комментировать
  • Как работает класс object в этом кода?

    EugeneP2
    @EugeneP2
    Java Dev
    Object clone = x.clone();

    Это клон(копия) объекта класса Date.

    Дальше его нужно привести к типу Date
    Date cloneDate = (Date) clone;

    Почему clone() возвращает Object ? - потому как этот метод наследуется от класса Object, а так как все типы в джаве наследуют класс Object, следовательно clone() должен возвращать общий для всех типов тип - Object

    UPDATE:

    Для начала нужно разобраться, почему же все таки нужно переопределять метод clone(), а не воспользоватся наследуемой нативной реализацией данного метода. Все дело в том, что базовый метод клонирование выполняет только поверхностное копирование. Будут скопированные только значения полей класса. Для примитивных типов (int, byte, char), все будет норм, но если это массивы, коллекции, объекты (например Date), или ваши типы, то будут скопированы только ссылки на них. В итогу клонирования у нас будет два объекта, у которых поля ссылаются на одни и те же поля, и через эти поля можно повлиять на все объекты которые клонировались:

    class TestClone implements Cloneable {
        		
        		private Date date = new Date();
    
    			public Date getDate() {
    				return date;
    			}
    
    			public void setDate(Date date) {
    				this.date = date;
    			}
    
    			@Override
    			protected Object clone() throws CloneNotSupportedException {
    				return super.clone();
    			}
        	}
        	
        	TestClone a = new TestClone();
        	TestClone b = (TestClone) a.clone();
        	System.out.println(a.getDate());
        	System.out.println(b.getDate());
        	b.getDate().setYear(0);
        	System.out.println(a.getDate());
        	System.out.println(b.getDate());
    
    
    
    // Fri Jul 10 23:13:47 EEST 2015
    // Fri Jul 10 23:13:47 EEST 2015
    // изменили один, а поменялось два
    // Tue Jul 10 23:13:47 EET 1900
    // Tue Jul 10 23:13:47 EET 1900


    Такое не пройдет, если будут неизменяемые (immutable) классы, тот же String. У него нет методов для изменения состояния.

    Потому то и нужно переопределять метод clone и выполнять глубокое копирование всех изменяемых объектов на который ссылаются поля (если есть такие).

    class TestClone implements Cloneable {
        		
        		private Date date = new Date();
        		private String s = "string"; // этот не нужно клонировать
        		
    			public Date getDate() {
    				return date;
    			}
    
    			public void setDate(Date date) {
    				this.date = date;
    			}
    
    			@Override
    			protected Object clone() throws CloneNotSupportedException {
    				TestClone clone = (TestClone) super.clone();
    				if (this.date != null) {
    					clone.date = (Date) this.date.clone();
    				}
    				return clone;
    			}
        	}
    
    
    Fri Jul 10 23:25:16 EEST 2015
    Fri Jul 10 23:25:16 EEST 2015
    // теперь это действительно клоны
    Fri Jul 10 23:25:16 EEST 2015
    Tue Jul 10 23:25:16 EET 1900


    Почему JVM само не может выполнить глубокое клонирование? - Потому как JVM не в курсе насколько клонирование должно быть глубоким:) И как правильно нужно копировать поля, со всеми нюансами, которые задумал программист:)

    ИМХО: интерфейс маркер Cloneable обязателен, чтоб можно было понять, переопределен ли метод clone в класса или нет.

    TestClone с = new TestClone();
        	
        	if (с instanceof Cloneable) {
        		System.out.println("ок, меня можно клонировать");
        	}


    PS
    Есть готовое решение от google для глубокого клонирование.
    Отличная статья: Глубокое клонирование в Java без велосипедов
    Ответ написан
    8 комментариев
  • Как реализовать алгоритм расстановки кораблей на поле?

    edli007
    @edli007
    full stack, team lead
    Требуется случайная генерация?

    1. определяешь случайным образом положение корабля
    2. исключаешь занятые клетки с массива, если места нет а корабли есть - обнуляешь поле.
    3. идешь к пункту 1, пока не расставишь все корабли.
    Ответ написан
    Комментировать
  • Что поделать в моём случае (iOS/Android/WP)?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    1) 2 месяца просто программирование на сях/плюсах под стационар для набора опыта программирования
    2) месяц на программирование под виндовс фон
    3) месяц под айос
    4) месяц под андроид
    5) месяц пинать фаллические предметы и иногда для забавы писать скриптики/маленькие программки
    6) решить что понравилось больше из пунктов 2-5 и сделать свой выбор
    7) ????
    8) PROFIT!
    Ответ написан
    2 комментария