Факультет "Інформатика та системи управління"
Методичні вказівки до лабораторної роботи
за курсом "Розподілені системи обробки інформації"
Нить
Москва 2004 м.
Зміст
Мета роботи .. 3
Завдання для домашньої підготовки. 3
Завдання до лабораторної роботи. 3
Зміст звіту. 4
Контрольні питання. 4
Література. 6
Додаток 1. Графічні примітиви. 7
Методи класу Graphics. 7
Перетворення координат. 21
Малювання фігур засобами Java2D .. 25
Додаток 2. Маніпуляції з курсорами. 31
Клас Cursor 31
Додаток 3. Обробка дій миші і клавіатури. 35
Обробка дій миші. 35
Обробка дій клавіатури .. 36
Додаток 4. Нитки процесів. 38
Клас Thread і інтерфейс Runnable. 39
Додаток 5. Узгодження роботи декількох потоків. 43
Додаток 6. Приклад програми В«біжучий рядокВ». 44
Мета роботи
1. Освоїти пакет java.applet і клас java.applet.Applet.
2. Навчиться обробляти дії миші і клавіатури.
3. Познайомитися з можливостями пакетів java.awt.geom, java.awt і класів java.awt.Graphics і java.awt.Graphics2D.
4. Вивчити основні графічні примітиви.
5. Освоїти роботу з потоками.
6. Застосувати отримані знання на практиці
Завдання для домашньої підготовки
Ознайомитися з теоретичним матеріалом, представленим у додатках до даних методичних вказівок і прикладами програм. Ознайомитися з текстом завдання до лабораторної роботи, запропонувати тематику (сюжет) гри і функціональність, що задовольняє вимогам завдання до лабораторної роботи, і написати програму.
Завдання до лабораторної роботи
Розробити аплет, який реалізує гру, який повинен містити такі елементи:
o основа користувальницького інтерфейсу - графічні об'єкти, створені на основі пакетів java.awt, java.awt.geom і класів java.awt.Graphics і java.awt.Graphics2D.
o не менше двох рухомих об'єктів, створених на основі тих же пакетів і класів. Кожен об'єкт повинен керується своїм потоком, що повинно бути візуально помітно (наприклад, за допомогою завдання різних значень у відповідних методах Thread.sleep ()).
Управління грою повинно здійснюватися з клавіатури і/або мишею. Якщо використовується тільки миша, то не можна використовувати курсор, заданий за замовчуванням, (замість нього треба використовувати будь-який інший, відповідний за змістом, або створити свій).
o додатково (не обов'язково) - в грі може вестися підрахунок очок.
В якості можливого варіанти гри підійде, наприклад, В«тирВ» або В«футболВ».
Зміст звіту
Звіт повинен містити:
1. Постановку завдання, розв'язуваної налагодженої програмою.
2. Керівництво користувача налагодженої програми, що містить опис інтерфейсів всіх функцій програми.
3. Лістинг програми з необхідними коментарями.
Контрольні питання
1. У випадку, якщо програма - аплет складається з декількох класів і після компіляції Згенеровано декілька файлів *. class, як всередині контейнера html - файлу це необхідно вказати?
2. Скільки класів в пакеті java.applet?
3. Як отримати координати центру вікна?
4. Що таке інтерліньяж?
5. Як задати форму курсору?
6. Назвіть ім'я головного потоку в Java - програмою (головний потік - це потік, який запускає метод main ()).
7. За яким принципом присвоюються імена потокам, чиї імена не задаються програмістом явно?
8. Яким чином можна скласти композицію афінних перетворень, щоб надалі застосовувати її до об'єкта як єдине перетворення.
Література
Офіційні джерела:
1. Кен Арнольд, Джеймс Гослінг, Девід Холмс. Мова програмування Java в„ў.
2. Офіційний сайт Java - java.sun.com/ (є розділ російською мовою з підручником).
3. Java в„ў 2 SDK, Standard Edition Documentation - java.sun.com/products/jdk/1.5/index.html.
4. Джеймс Гослінг, Білл Джой, Гай Стіл. Специфікація мови Java (The Java Language Specification - .javasoft.com/docs/books/jls/). Переклад на російську мову - .uni-vologda.ac.ru/java/jls/index.html
5. Офіційний сайт проекту Eclipse - .eclipse.org/.
Інше:
1. Дмитро Рамодін. Починаємо програмувати на мові Java.
2. Микола Смирнов. Java 2: Навчальний посібник.
3. Картузов А. В. Програмування на мові Java.
4. Вязовік Н.А. Програмування на Java.
5. Олексій Литвинюк. Введення в інтегроване середовище розробки Eclipse - lib.juga.ru/article/articleview/174/1/69/.
Додаток 1. Графічні примітиви
При створенні компонента автоматично формується його графічний контекст. У контексті розміщується область малювання і виведення тексту і зображень. Контекст містить поточний і альтернативний колір малювання і колір фону - об'єкти класу Color, поточний шрифт для виведення тексту - Об'єкт класу Font.
У контексті визначена система координат, початок якої з координатами (0, 0) розташоване у верхньому лівому куті області малювання, вісь Ох направлена ​​вправо, вісь Оу - вниз. Координати вимірюються в пікселях.
Управляє контекстом клас Graphics або новий клас Graphics2D, введений в Java 2. Оскільки графічний контекст сильно залежить від конкретної графічної платформи, ці класи зроблені абстрактними. Тому не можна безпосередньо створити екземпляри класу Graphics або Graphics2D.
Однак кожна віртуальна машина Java реалізує методи цих класів, створює їх примірники для компонента і надає об'єкт класу Graphics методом getGraphics () класу Component або як аргумент методів paint () і update ().
Подивимося спочатку, які методи роботи з графікою і текстом надає клас Graphics.
Методи класу Graphics
При створенні контексту в ньому задається поточний колір для малювання, звичайно чорний, і колір фону області малювання - білий або сірий. Змінити поточний колір можна методом setColor (Color newColor), аргумент newColor якого - об'єкт класу Color.
Дізнатися поточний колір можна методом getColor (), Що повертає об'єкт класу Color.
Як задати колір
Колір, як і всі в Java, - об'єкт певного класу, а саме, класу Color. Основу класу складають сім конструкторів кольору. Найпростіший конструктор:
Color (int red, int green, int blue)
створює колір, получающийся як суміш червоної red, зеленої green і синьою blue складових. Ця колірна модель називається RGB. Кожна складова змінюється від 0 (відсутність складової) до 255 (повна інтенсивність цієї складової). Наприклад:
Color pureRed = New Color (255, 0, 0);
Color pureGreen = new Color (0, 255, 0);
визначають чистий яскраво-червоний pureRed і чистий яскраво-зелений pureGreen кольору.
У другому конструкторі інтенсивність складових можна змінювати більш гладко речовими числами від 0.0 (відсутність складової) до 1.0 (повна інтенсивність складової):
Color (float red, float green, float blue)
Наприклад, Color someColor = new Color (O.OSf, 0.4f, 0.95f);
Третій конструктор
Color (int rgb)
задає всі три складові в одному цілому числі. У бітах 16-23 записується червона складова, в бітах 8-15 - зелена, а в бітах 0-7 - синя складова кольору. Наприклад, Color з = new Color (OXFF8F48FF);
Тут червона складова задана з інтенсивністю 0x8F, зелена - 0x48, синя - 0xFF.
Наступні три конструктора
Color (int red, int green, int blue, int alpha)
Color (float red, float green, float blue, float alpha)
Color (int rgb, boolean hasAlpha)
вводять четверту складову кольору, так звану "альфу", визначальну прозорість кольору. Ц...