[ [[tutorial-ru-001 | Введение]] | [[tutorial-ru-002 | Основы]] |
[[tutorial-ru-003 | if/else]] | [[tutorial-ru-004 | Циклы]] |
[[tutorial-ru-005 | Массивы]] | [[tutorial-ru-006 | Графика]] |
[[tutorial-ru-007 | Анимация]] | [[tutorial-ru-008 | Мышь]] |
[[tutorial-ru-009 | Клавиатура]] | [[tutorial-ru-010 | Математика]] |
[[tutorial-ru-011 | Методы]] | [[tutorial-ru-012 | Текст]] |
[[tutorial-ru-013 | Задачи]] ]
----
== Java для школьников: урок 6 ==
====== Графика ======
Первый шаг при отрисовке графических фигур - выбор цвета.
После этого можно нарисовать фигуру. Потом взять другой цвет,
нарисовать другую фигуру, и так далее.
Основные виды фигур - это прямоугольник и круг.
===== Выбор цвета =====
Цвет выбирается с помощью метода setColor. Вот таким образом:
setColor(цвет);
Полный список названий цветов можно посмотреть [[color-values-ru | здесь]].
Вот некоторые из них:
red | |
orange | |
yellow | |
green | |
cyan | |
blue | |
purple | |
black | |
white |
setBackgroundColor(цвет);
Давайте попробуем!
void main() {
setBackgroundColor(black);
}
===== Рисование фигур =====
Чтобы нарисовать фигуру, надо задать её размеры и координаты x, y
относительно верхнего левого угла окна. Координата x отсчитывается
вправо, а координата y - вниз.
{{java001.gif}}
Для прямоугольника надо указать координаты x, y верхнего левого угла,
а такжн ширину и высоту. Вот так:
drawRectangle(x, y, width, height);
Все значения должны быть целыми (int).
Нарисуем квадрат в позиции (100,100), шириной 200 и высотой 200 точек:
{{java002.gif}}
Пусть он будет желтым на зеленом фоне:
void main() {
setBackgroundColor(green);
setColor(yellow);
drawRectangle(100, 100, 200, 200);
}
Вот что должно у Вас получиться. Замечательно!
{{square.gif}}
Теперь попробуйте круг. Вот пример, где x, y задают координаты
верхнего левого угла объемлющего квадрата, а radius определяет радиус круга.
drawCircle(x, y, radius);
** Упражнение: **
Нарисуйте желтый круг с левой верхней точкой (100, 200) и радиусом 50.
Какой код нужен для этого?
Ответ:
setColor(yellow);
drawCircle(100, 200, 50);
Заметим, что фигуры, которые мы рисовали, имели только контур
и не были закрашены.
Для рисования закрашенных фигур применяйте:
fillRectangle(x, y, width, height);
fillCircle(x, y, radius);
fillOval(x, y, width, height);
Нарисуем автопортрет!
void main() {
setBackgroundColor(yellow);
// Тело
setColor(red);
fillRectangle(100, 100, 50, 50);
// Руки
setColor(green);
fillRectangle(25, 100, 75, 10);
fillRectangle(150, 100, 75, 10);
// Ноги
fillRectangle(100, 150, 10, 75);
fillRectangle(140, 150, 10, 75);
// Голова
setColor(blue);
fillCircle(100, 50, 25);
}
Вот так. Ура!
{{java004.gif}}
** Упражнения: **
- Дорисуйте человечику глаза, нос и рот. Можно добавить ботинки... творите на свой вкус...
- Вызовите JUDO / Помощь / Справка по методам. В разделе "Графика" прочитайте описание методов drawLine и drawString.
- Нарисуйте домик и звезду.
{{java005.gif}}
{{java006.gif}}
===== Метод drawString =====
Метод drawString() рисует строку текста с указанной точки.
Вот шаблон, где Строка задает текст для отрисовки, а числа x, y определяют
координаты левого верхнего угла текста:
drawString(Строка, x, y);
Пример #1
String name = "Steve";
drawString(name, 35, 25);
Пример #2
drawString("This is text", 15, 35);
Итак, давайте нарисуем эмблему Judo:
void main() {
setBackgroundColor(white);
setColor(black);
fillRectangle(100, 100, 140, 140);
setColor(white);
drawString("Java для школьников", 110, 172);
setColor(red);
drawRectangle(100, 100, 140, 140);
}
Упражнение: нарисовать ряд кружочков. Используйте цикл.
Для вычисления размера окна примените методы:
| getDrawingHeight() | Возвращает высоту области рисования |
| getDrawingWidth() | Возвращает ширину области рисования |
Вот пример алгоритма, с которого я бы начал:
// Объявляем переменные для ширины и высоты окна.
// Объявляем количество кругов в ряду и задаем желаемое значение.
// Получаем значения ширины и высоты окна.
// Делим ширину на количество кругов, это диаметр круга.
// Цикл по количеству кругов.
// Рисуем круг в позиции счетчик * диаметр.
// Конец цикла.
Скопируйте этот алгоритм в JUDO и используйте его как план для написания
Вашей программы.
Допишите нужный код после каждой строчки комментария.
А если бы требовалось заполнить //всё// окно кругами?
Что для этого надо добавить в программе?
Подсказка: используйте цикл for внутри другого цикла for. Попробуйте!
Еще задачи:
- Нарисуйте несколько окружностей уменьшающегося радиуса с общим центром.
- Нарисуйте несколько квадратов уменьшающегося размера с общим центром.
===== Некоторые ответы =====
Домик.
void main() {
setBackgroundColor(black);
setColor(white);
// Стена
fillRectangle(100, 100, 300, 100);
// Крыша
drawLine(100, 100, 250, 25);
drawLine(250, 25, 400, 100);
// Окна
setColor(blue);
fillRectangle(125, 125, 20, 20);
fillRectangle(355, 125, 20, 20);
// Дверь
setColor(red);
fillRectangle(240, 150, 30, 50);
}
Ряд кругов.
void main() {
// Объявляем переменные для ширины и высоты окна.
int width;
int height;
// Объявляем количество кругов в ряду и задаем желаемое значение.
int cnum = 16;
// Получаем значения ширины и высоты окна.
width = getDrawingWidth();
height = getDrawingHeight();
// Делим ширину на количество кругов, это диаметр круга.
int diameter = width / cnum;
// Цикл по количеству кругов.
for (int counter = 0; counter < cnum; counter++)
{
// Рисуем красный круг в позиции счетчик * диаметр.
setColor(red);
fillCircle(counter * diameter, 0, diameter / 2);
// Конец цикла.
}
}
----
[[tutorial-ru-007 | Перейдем к следующему уроку]].