2013-12-05 3 views
-2

(Я новичок в Java (или вообще программировании) и пытаюсь выяснить, как работает эта игра. Я знаю, что игровое поле разделено на 3 области: область выбора цвета, область оценки и область рисования. Но какая переменная определяет, в каких пределах? - Каковы относительные и абсолютные размеры области выбора цвета и области управления игрой? Что это делает? - Почему программист разделил TILE_SIZE только для его повторного умножения? ? - Как и для чего они инициализировать 2D myTiles массива в методе государственной статической силы initColorGame())JAVA Game - как это работает?

+0

Это много вопросов, есть ли что-нибудь, что вы действительно поняли о коде? –

+0

Ваш код не компилируется из-за части в конце, которая говорит «введите код здесь». Кроме того, ваш класс говорит, что он реализует 'MouseListener', но у него нет реализаций для любого из методов' MouseListener'. – RustyTheBoyRobot

+0

Спасибо за ответ. @ RossDrew: Нет, я не понимаю, как это работает. На самом деле у меня больше вопросов, но это то, что я хочу узнать больше всего. @ Rusty: Вся программа была длинной, поэтому я просто оставил части с вопросами. – Zaii

ответ

0

Но какая переменная определить, какие диапазоны, каким образом?

Я не совсем понимаю, что вы здесь просите.


Каковы относительные и абсолютные компоненты размера цвета области выбора и управления игрой области? Что оно делает?

Относительный размер? Относительно чего? Я не понимаю, что это такое, когда вы спрашиваете: «Что он делает?»

Код выглядит он создает макет так: enter image description here

Там, кажется, прокладка 5 пикселей вокруг каждого элемента.

Я не чувствую, что могу рассказать вам точные цифры, потому что макет имеет тенденцию основываться на предпочтительных размерах. Много раз менеджеры макетов Swing будут принимать ваши значения высоты/ширины в качестве предложений, позволяющих изящно изменять размер. Самый простой способ - запустить программу.


Почему программист разделил TILE_SIZE просто умножить его снова?

Если width - 10 не делится на TILE_SIZE, дележ -> умножить процесс будет округлять значение до значения, которое является делится на TILE_SIZE. Вот код, чтобы доказать, что:

public static void main(String[] args) { 
    int value = 40; 
    int divisor = 5; 
    int result = (value/divisor) * divisor; 
    System.out.println("Exact: " + result); // outputs 40 

    value = 43; 
    result = (value/divisor) * divisor; 
    System.out.println("Inexact: " + result); // outputs 40 
} 

Лично я думаю, что это хак и трудно читать. Я предпочитаю находить лишнее с помощью мод оператора:

int excess = (width - 10) % TILE_SIZE; 
drawWidth = (width - 10) - excess; 

Как и для чего они инициализировать myTiles массива 2D в методе государственной статической силы initColorGame()?

Давайте посмотрим на код, по крупицам:

myTiles[x][y] = (int)(Math.random()*colors.length); 

Math.random() генерирует двойной, который случайным образом распределены между 0.0 и 1.0 (вы можете прочитать в особенности the javadoc).

colors.length - количество возможных вариантов цвета.

Путем умножения их вместе мы получаем случайное число в диапазоне возможных цветовых индексов. Единственная проблема заключается в том, что результат повышается до double. Возвращаясь к int, десятичная часть удаляется, и у нас есть случайный индекс для массива colors. Я предпочитаю использовать Math.round(), потому что я думаю, что это более семантически правильно и легче читать, но это только мое мнение.

+0

А, прости, я не привык к английскому. Думаю, теперь я это понимаю. Спасибо, что ответили. – Zaii

+0

Не требуется никаких извинений; вы не сделали ничего плохого. Мне просто нужно было уточнить. Рад помочь. – RustyTheBoyRobot