Створення 2D гри, використовуючи можливості Java

Створення нескладної архітектури програми гри, яка зможе намалювати карту на екрані комп'ютера. Використання управління персонажем за допомогою клавіатури та миші. Аналіз застосування ізометричної проекції. Характеристика ботів та штучного інтелекту.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 22.11.2016
Размер файла 256,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Міністерство освіти і науки України

Чорноморський державний університет ім. П. Могили

Факультет комп'ютерних наук

Кафедра інтелектуальних інформаційних систем

Курсова робота

Дисципліна “Об'єктно-орієнтоване програмування“

Напрям “Комп'ютерні науки”

Cтудент

Меньков М.В.

Викладач

Боровльова С.Ю.

Миколаїв - 2016

ЗМІСТ

ВСТУП

1. СТВОРЕННЯ ПРОЕКТУ. РОБОТА З КЛАСОМ «MAIN»

1.1 Створення карти

2. РОБОТА З «PLAYER»

2.1 Створення персонажу

2.2 Перехід між рівнями, створення більшої карти

3. ЗАГАЛЬНА РОБОТА З ГРАФІКОЮ

4. УПРАВЛІННЯ ЗА ДОПОМОГОЮ МИШІ

4.1 Боти та штучний інтелект

4.2 Спрайти

ВИСНОВОК

ВИКОРИСТАНІ ДЖЕРЕЛА

ДОДАТОК

ВСТУП

Актуальність теми. На сучасному етапі актуальність даної теми є очевидною,

Оскільки ігри у наш час користуються популярністю, а Java - один з провідних мов програмування

Мета. Створення 2Д гри, використовуючи можливості Java.

Завдання проекту. Робота з середовищем програмування - «IntelliJ IDEA Community Edition 14.1.3», розробка графічного інтерфейсу, створення та обробка керування ігровим об'єктом, використання багато потокового програмування.

Структура роботи. Дана курсова робота складається з вступу, трьох розділів ( з підрозділами ), додатку, висновку та списку використаних джерел. Загальний обсяг роботи - 35 сторінки.

1. СТВОРЕННЯ ПРОЕКТУ. РОБОТА З КЛАСОМ «MAIN»

Завантажуємо NetBeans 8.1 (далі студія) та вибираємо в меню File (Файл) команду Create(Создать)->NewProject(Новый проект). В відкритому вікні діалогу NewProject обираємо тип проекту Java Application, а в текстовому полі Name в нижній частині вікна введіть назву проекту Kursova2016.

Коли ми створили проект, студія створила автоматично деякі файли:

Kursova2016.java та за замовчуванням підключено JDK 1.8.

Вони добавляються в вікно SolutionExplorer (Обозреватель решений) и по-замовчуванням зберігаються в папку /admin/NetBeansProjects/Kursova2016/ .

1.1 Створення карти

Початок роботи:

Я буду розробляти гру на тайлах(Tile -- плитка). В основі гри на тайлах є карта, усе що можна побачити у грі на карті -- гори, ріки, дерева, і т. п., складається з плиток. Плитки розподілені по карті у вигляді таблиці, повністю покриваючи її контур, можна сказати що сама карта і є таблицею заповненою плитками.Тому для початку я буду створювати карту. Самий простий спосіб створити карту -- це описати двухмерний числовий масив.

Це матриця координат, а значення це індефікатор плитки. Значення [0][0] -- це самий верхній і лівий куток, а значення [9][9] - це самий нижній і правий куток. Тепер потрібно створити нескладну архітектуру програми гри, яка зможа намалювати цю карту на екрані комп'ютера.

У центрі всього знаходится клас Game, що виконує роль “контроллера”. Він має у собі два методи, які можуть запускати ігровий процес(start) або зупиняти(stop). При запуску гри запускаєтся таймер, котрий раз в визначений період часу визиває метод update, який в свою чергу виконую деяку логіку гри і перемалює зображені компоненти.

Класи BaseTile та Player з базовою реалізацєю інтерфейсу IRenderToConvas. Перший дозволяє намалювати зображення плитки, другий малює персонажа. Звістно, їх реалізація примітивна, оба класи отримують координати X, Y та посилання на внутрішній ресурс зобрадення, яке створюєтся у методі render.

2. РОБОТА З «PLAYER»

У цьому розділі я частково розповім про функціонал коду, та буду приводити для прикладу деякі фрагменти коду.

2.1 Створення персонажу

У данній частині я буду описувати управління в грі. Управляти персонажем будемо за допомогою клавіатури, стрілок вверх, вниз, вправо, вліво. Для цього потрібно додати декілька полів в клас Player:

Далі змінемо метод render:

g.drawImage(imageSrc, posX, posY, width, height, null);

Ця зміна потрібна, щоб наш персонаж був у масштабі плиток карти. Також я додам до класу Game два нові методи setListener(викликає в start та встановлює прослуховування подій гри) та метод unSetListener(викликаєтся в стоп та зупиняє прослуховування подій ).

Також я визначив статичний метод getTileById у класі BaseTile, він отримує індефікатор плитки і якщо вона є повертає її.

Також у клас Game я додав реалізацю відстежування подій клавіатури. Основна задача відстежувати натиснуті кнопки і задавати у класі персонажу напрямок руху.

Також необхідно додати метод update до класу Game, що буду перемальовувати елементи, що знаходятся на холсті, тобто в області:

Але, щоб персонаж не проходив через лабіринт, потрібно в методі update класу Game додати зміни, потрібно додати перевірку на можливість проходження персонажем по плитці з врахуванням напрямку його руху:

Визначаємо метод accessMove, який буде вказувати, чи є можливим рух у заданому напрямку персонажа чи ні.

Також завдяки статті з журналу JavaGameDev[1], я додав ще одну допоміжну функцію, яка повинна вказувати на можливість проходження по плитці персонажем.

2.2 Перехід між рівнями, створення більшої карти

Спершу, я збільшу кулькість елементів двумірного масиву у класу GameMap, але тільки цього не достатньо, тому що виникає проблема. Карта дійсно стала більше, але виходить за межі видимості.(ст.60[3]) Тому потрібно зробити так щоб при пересуванні персонажу рухалась сама карта, а персонаж залишився на одному місті, і тим самим буде досягнена іллюзія руху персонажу.

Для початку я додав до класу ігрока Player для поля, що відповідають за його положення при малюванні.

Поля posY і posY як і раніше зберігають реальний стан персонажа, а posRenderX і posRenderY положення, видиме на ігровому екрані. Наступні зміни торкнуться класу Game, конкретно методу update. Для початку ми визначимо розміри, які будуть відповідати за відображення на нашому ігровому екрані - widthTile і heightTile, вони будуть зберігати значення, скільки плиток по ширині і висоті можна намалювати за раз. Поля cWidthTile і cHeightTile визначають центральне положення в нашій ігровий рамці. Поля startTileX, startTileY, endTileX, endTileY визначають координати, які потрібно взяти з об'єкта карти і намалювати на екрані. Змінні offsetX і offsetY це поправка, яка виникає через нерівномірність переміщення персонажа, тобто швидкість руху персонажа не дорівнює розміру плитки, тому залишається залишок, на який потрібно зрушити карту для плавного руху. І нарешті, movePlayerX і movePlayerY визначають потрібно рухати карту або самого персонажа. Якщо персонаж підійшов надто близько до краю, то картка не зміщується, а пересувається сам персонаж, якщо ж він знаходиться в центрі, то рухаємо саму карту.

До методу start додаємо:

//устанавливаем позицию

1. player.posRenderX =BaseTile.SIZE;

2. player.posRenderY =BaseTile.SIZE;

При компіляції ми отримаємо лабіринт, в якому буде рухатися наш персонаж. При знаходженні персонажа в центрі змінюється позиція карти, при наближенні їм краю, він переміщається сам. Працювати з дуже великим масивом незручно, та й справа витратна в плані ресурсів. Але є рішення - створити дві карти і об'єднати їх дверима. Свого роду магічні портали, перетинаючи які, персонаж виявляється на іншій карті. Інакше кажучи, ми зробимо, так що б персонаж, встаючи на певну плитку, переміщався на іншу карту. Для реалізації цього ми зробимо з GemaMap абстрактний клас, і визначимо від нього ще два Map1 і Map2.

Звичайно, карта 2 виглядає маленькою кімнатою, але нам для прикладу цього буде достатньо. Далі в класі BaseTile ми визначимо поле door - це числове поле які буде зберігати номер карти, на який вона посилається, якщо «0» то це звичайна клітина. І зробимо спеціальну плитку з номером 3 і 4 - вони будуть посилатися на карти, нехай їх кольору будуть червоного кольору.

До класу Game додамо новий метод, відповідаючий за встановлення карти:

/**

1. * Метод отвечает за установку карты.

2. * @param mapId Номер карты.

3. */

4. public void setMap(int mapId) {

5. if(mapId == 2) {

6. map = new Map2();

7. } else {

8. map = new Map1();

9. }

Та додамо метод checkingChangeMap, котрий буде викликатися з початку update.

За таким принципом можна будувати багатовимірні простору і практично нічим не обмежені карти.

3. ЗАГАЛЬНА РОБОТА З ГРАФІКОЮ

Двомірні гри це добре, але з них можна вичавити більше застосувавши изометрическую проекцію, тим самим створивши ілюзію тривимірного простору. Треба відразу сказати, що в іграх використовується спрощена формула розрахунку, докладно про ізометрію варто дивитися в спеціальних довідниках.

Весь фокус складається з трьох честей - графіки створеної особливим чином, розрахунку координат позиціонування графічних об'єктів і розрахунку глибини позиціонування об'єктів.

Намалювати самостійно якісні плитки лабіринту може бути складним завданням. За це, я просто скачав графіком з сайту http://opengameart.org де вона надана безкоштовно.

Моїм завданням буде за допомогою цих маленьких зображень плиток побудувати ландшафт. Ширина однієї плитки 64 пікселя, а висота 32. Так само видно, що всі плитки як би розгорнуті на 45 градусів і нагадують приплющена ромб (за таким принципом можна створити і власні плитки).

Графіка є, тепер потрібно звернутися до коду. Для початку внесемо деякі зміни в клас Game, це дві глобальні настройки які знадобляться далі.

1. * Указание на использование изометрической проекции при рисовании объектов.

2. */

3. final public static boolean USE_ISO = true;

4. /**

5. * Отступ при рисовании справа.

6. */

7. final public static int OFFSET_MAP_X = 320;//10 клеток 32 * 10

Так як працювати потрібно не з одним конкретним зображенням, а з декількома в одному файлі (це нада sprite - один файл таблиця на яких розміщено безліч зображень) потрібно зробити спеціальний клас який буде працювати з цим файлом зображення.

Клас SpriteTile успадковує BaseTile і містить свої властивості і перевизначені методи. гра комп'ютер клавіатура бот

1. * Класс для отображения плитки на карте,

2. * изображение плитки берется как кусок из большого изображения.

3. */

4. public class SpriteTile extends BaseTile {

5. /**

6. * Ширина изображения на изображении.

7. */

8. public int width;

9. /**

10. * Высота изображения на изображении.

11. */

12. public int height;

13. /**

14. * Отступ в изображении по оси X.

15. */

16. public int offsetX;

17. /**

18. * Отступ в изображении по оси Y.

19. */

20. public int offsetY;

Розрахунок координат в изометрическую проекцію здійснюється за такою формулою.

isoY = (x + y) / 2; isoX = (x -- y);

Форм. 6.1

Цю формулу потрібно визначити у всіх методах які розмальовують елементи на карті, інакше реалізують інтерфейс IRenderToConvas.

Нарешті, для реалізації поняття глибини, т. Е. Що б програма «розуміла» який об'єкт повинен перекривати інший, потрібно розширити інтерфейс IrenderToConvas методом getDeep, який буде повертати значення глибини, чим більше значення, тим пізніше буде намальований об'єкт на мапі і тим самим буде ілюзія, що він знаходиться на задньому плані. За замовчуванням такі елементи як плитка можуть мати фіксоване значення 1, і тим самим завжди буде знаходиться під іншими елементами, а для інших об'єктів варто використовувати формулу: Y * DEEP + X, де DEEP - це може бути довільне значення, його зручно застосовувати при поділі простору на шари. Припустимо для об'єктів на землі значення глибини може бути рано 100, а для повітряних об'єктів дорівнює 1000, тоді все літаючі об'єкти будуть над наземними.

В клас Unit Доба метод getDeep:

public int getDeep() {

1. return posY * Canvas.LAYER_DEEP1 + posX;

2. }

І останні зміни торкнуться клас Canvas, в якому додамо сортування по по глибині об'єктів перед малюванням.

/**

1. * Сортировка объектов по глубине.

2. */

3. public static Comparator comparatorDeep = new Comparator() {

4. @Override

5. public int compare(IRenderToConvas o1, IRenderToConvas o2) {

6. return (o1.getDeep() < o2.getDeep()) ? -1 : 1;

7. }

8. };

9. /**

10. * Отвечает за вывод графики на компоненте.

11. * @param g

12. */

13. public void paintWorld(Graphics g) {

14. g.clearRect(0, 0, getWidth(), getHeight());

15. g.setColor(backGround);

16. g.fillRect(0, 0, getWidth(), getHeight());

17. //сортируем список перед рисованием

18. Collections.sort(renders, comparatorDeep);

19. for(IRenderToConvas render : renders) {

20. render.render(g);

21. }

22. }

Тепер я отримав результат, на масив було наложено плитки з зображенням, також використав зображення персонажу та ботів стандартним безкоштовним набором:

Але, щоб зберегти можливість управління мишею, нам потрібно застосувати зворотню формулу розрахунку ізометрії.(див.додаток).

Цю інформацію я знайшов у книжці «zetcode-javagamestutorial» - Кристиан Нейгел, на шляху написання коду я зіткнувся з багатьма проблемами які були описані та вирішенні у цій книжці.

Тепер цей код здатний адаптувати координати миші з ізометричних, які ми бачимо на екрані і передавати їх для подальших перерахунків в програму.

4. УПРАВЛІННЯ ЗА ДОПОМОГОЮ МИШІ

Наше завдання складається з двох підзадач: визначення точки на карті куди було вказано йти персонажу; знайти найкоротший шлях персонажу від поточної його точки до заданої.

Для початку створимо обробник подій миші, в ньому ми і будемо визначати кінцеву точку шляху. Додамо в клас Game, вже відомим способом, новий обробник./**

1. * Реализация класса обработчика событий мыши.

2. * Получает координаты щелчка по карте и определяет путь движения персонажа.

3. */

4. protected MouseAdapter mouseListener = new MouseAdapter(){

5. @Override

6. public void mouseClicked(MouseEvent e) {

7. //получаем начальные координаты плиток

8. int startTileX = (int)Math.floor( (Math.abs(player.posX - player.posRenderX) + e.getX()) / BaseTile.SIZE),

9. startTileY = (int)Math.floor( (Math.abs(player.posY - player.posRenderY) + e.getY()) / BaseTile.SIZE);

10. //создаем путь

11. if(tileIsWalkable(startTileX, startTileY)) {

12. MapPath mapPath = makePath(player.posX / BaseTile.SIZE, player.posY / BaseTile.SIZE, startTileX, startTileY);

13. player.mapPath = mapPath;

14. }

15. }

16. };

Оброблювач обчислює координати startTileX і startTileY покажчика, далі ми робимо перевірку можливості проходження по плитці; в випадки можливості викликаємо метод makePath, який створює шлях (цей метод буде описаний трохи нижче). Якщо шлях був створений, ми встановлюємо його нашого персонажу.

Додамо установку і зняття слухача в методи setListener і unSetListener.

Змінимо клас Player, додавши в нього поле mapPath яке буде зберігати шлях руху. Визначимо захищений метод update, який буде оновлювати рух нашого персонажа.

Таким чином якщо раніше в залежності від натиснутої клавіші клавіатури ми визначали в якому напрямку піде наш персонаж (directionX, directionY), то тепер це управління відбувається автоматично на основі даних про поточний і подальшому положенні. Новий клас MapPath хранитель інформації про шляхи.

Таким чином у нас є все для визначення початкової і кінцевої точки, є логіка обробки шляху проходження по карті персонажа, є клас, який відповідає за зберігання шляху, але немає головного - алгоритму пошуку шляху між двома точками. У теорії нам потрібно перевірити всі точки на можливість доставити нас з точки А в точку Б, і вибрати з усіх можливих варіантів найкоротший шлях. Офіційно це називається «Завдання комівояжера».

Для цього завдання був обраний так званий «бульбашковий» алгоритм. Суть його полягає в тому, що ми переглядаємо від початкової струми все сусідні і перевіряємо чи є вони кінцевими, якщо «так», то шлях знайдений, якщо немає то вже для сусідньої точки переглядаємо всі сусідні ... і так до кінця. Звичайно такий алгоритм буде працювати повільно, і так само не дасть нам гарантію, що ми вибрали найкоротший шлях. Для вирішення цієї підзадачі ми вводимо для кожної переглядається точки параметр її вартості (т. Е. Коефіцієнт наскільки ця точка віддалена від кінцевої), ніж ця точка далі від шуканої, тим пізніше ми будемо її переглядати і її сусідів, і навпаки, чим вона ближче , тим швидше її ми будемо розглядати. Таким чином ми рухаємося найбільш ближньому маршрутом і скорочуємо кількість перегляду непотрібних плиток. Повний код класу MapFindingPath відповідає за пошук шляху між двох точок на карті.

Для визначення пошуку шляху з урахуванням лабіринту карти, був введений інтерфейс ImapCheckPoint з єдиним методом перевірки проходження check.

У нашому випадки інтерфейс реалізуємо клас Game встановлюючи його в методі makePath як обгортку.

На виході ми отримаєте знайомого персонажа керованого кліком миші.

4.1 Боти та штучний інтелект

Перш ніж створити клас самого бота, ми введемо якусь абстракцію, клас Unit. Цей абстрактний клас Unit візьме на себе весь функціонал який зараз закладено в класі Player, а класи Bot і Player успадкують його.

Внесемо зміни до класу Player:

/**

1. * Класс персонажа игры.

2. */

3. public class Player extends Unit {

4. public Player() {

5. String name = "/data/player.png";

6. init(name);

7. }

8. }

Вихідний клас Bot буде відрізняться від гравця лише методом updateTarget, який отримує нове положення на карті переслідуваного об'єкта і якщо його становище змінилося оновлює його.

Далі все зміни стосуються класу Game. Для початку встановимо список, який буде зберігати всіх ботів-зомбі.

/**

1. * Список ботов.

2. */

3. protected ArrayList bots;

Далі його потрібно буде заповнити методом start. У методі makePath, при перевірці точки на прохідність міняємо логіку, так, щоб боти не могли ходити один на одному.

1. //запрещаем проходить между зомби

2. for(Bot bot : bots) {

3. if(bot.posX / BaseTile.SIZE == x && bot.posY / BaseTile.SIZE == y) {

4. return false;

5. }

Далі внесемо зміни в метод update. Рядки відповідаючі за управління ботами.

Додаємо метод game Over, він буде викликаний в момент коли бот досягне нашого персонажа.

Ви побачите персонажа і трьох ботів-зомбі які переслідують нашого героя. При зміні положення персонажа, буде змінюватися і шлях прямування спамерських пошукових роботів. Коли боти досягнутий героя гра буде закінчена.

4.2 Спрайти

Для того щоб оживити гру і додати в неї динаміки можна використовувати по кадрову анімацію. Така анімація заснована на спрайт, вони в свою чергу являють собою анімацію розбиту на кадри і розміщену в вигляді таблиці, в кожному осередку по картинці (кадру). У програмі з таймером відбувається зміщення з одного кадру на інший, що в результаті створює ілюзію руху.

Графіка спрайтів буде взята з сайту opengameart.org. Про графіку малювання спрайтів треба сказати справа не з легких, але як правило створюється тривимірна модель і створюються її анімація, а потім по кадрова візуалізація в спрайт (в повноцінних тривимірних іграх використовуються звичайні тривимірні моделі). Для початку створимо клас SpriteUnit, основне його завдання «зацикливать» анімацію в об'єктах відображення.

У методі update відбувається зміщення по кадру, а в методі render малювання певного квадрата з вихідного зображення. Клас SpriteUnit хороший, він досить простий і гнучкий, з допомогою нього можна зробити цикл будь-спрайт. Але для обраних мною зображень спрайтів можна зробити ще одну абстракцію, яка буде володіти набором конкретних рухів.

Спрайт зроблені за одним шаблоном, і це великий плюс, для них є єдиний шаблонний клас реалізує управління перемикання між діями і поворотами об'єктів.Можна запустити компіляцію і отримати на виході наступне.

ВИСНОВОК

Виконавши даний проект я закріпив знання з використання JDK та ізометричної проекції для створення графічної оболчки, багато потокового програмування.

Запрограмував можливість керувати ігровим об'єктом за допомогою стрілок клавіатури. Використав такий елемент колекцій Java як List, та використовував його у процесі відображення об'єктів на екрані.

При написанні курсової роботи я переглянув та вивчав спеціальну літературу, переглядав відео матеріали пов'язані з темою моєї праці, також були використані матеріали з наукових статей…

Під час виконання роботи я зіткнувся з проблемою управління мишкою при наложенні зображень на тайтли. Цю проблему я спробував вирішити за допомогою зворотнього розрахунки ізометрії, цю проблему я знайшов у науковій статті з програмування, і знайшов її вирішення через використання зворотньої формули розрахунку ізометрії.

ВИКОРИСТАНІ ДЖЕРЕЛА

1. «zetcode-javagamestutorial» - Кристиан Нейгел - ООО «И. Д. Вильямс», 2013 г.

2. «Программирование игр под Android» - Марио Цехнер - СПб.: БХВ-Петербург, 2012 г.

3. «Библия Java 2-е издание» - Флемов М.Е. - СПб.: БХВ-Петербург, 2011 г.

4. «Изучаем Java. 2-е издание» - Э. Стиллмен, Дж. Грин - СПб.: Питер, 2012 г.

5. «Самоучитель С#» - СПб.: БХВ-Петербург, 2001 г.

6. «Язык программирования Java 2008 и платформа .NET 3.5» - Э. Троелсен - ООО «И. Д. Вильямс», 2011 г.

ДОДАТОК

Реализация класса обработчика событий мыши.

1. * Получает координаты щелчка по карте и определяет путь движения персонажа.

2. */

3. protected MouseAdapter mouseListener = new MouseAdapter(){

4. @Override

5. public void mouseClicked(MouseEvent e) {

6. //получаем начальные координаты плиток

7. int startTileX,startTileY;

8. if(USE_ISO) {

9. //обратная функция рассчета изометрический координат

10. int _offX = (e.getX() - Game.OFFSET_MAP_X),

11. _y = (2 * e.getY() - _offX) / 2,

12. isoX = Math.round((_offX + _y ) / BaseTile.SIZE) + 0 - 0 - 0,

13. isoY = Math.round( (_y + BaseTile.SIZE / 2) / BaseTile.SIZE) + 0 - 0;

14. startTileX = isoX + Math.round( (Math.abs(player.posX - player.posRenderX)) / BaseTile.SIZE);

15. startTileY = isoY + Math.round( (Math.abs(player.posY - player.posRenderY)) / BaseTile.SIZE);

16. } else {

17. startTileX = (int)Math.floor( (Math.abs(player.posX - player.posRenderX) + e.getX()) / BaseTile.SIZE);

18. startTileY = (int)Math.floor( (Math.abs(player.posY - player.posRenderY) + e.getY()) / BaseTile.SIZE);

19. }

20. //создаем путь

21. if(tileIsWalkable(startTileX, startTileY)) {

22. MapPath mapPath = makePath(player.posX / BaseTile.SIZE, player.posY / BaseTile.SIZE, startTileX, startTileY);

23. player.mapPath = mapPath;

24. }

25. }

26. };

Размещено на Allbest.ru


Подобные документы

  • Види списків, особливості їх створення, застосування та можливості удосконалення роботи користувача персонального комп’ютера. Керування та аналіз груп споріднених даних у середовищі програми MS Excel 2010. Опрацювання спискiв за допомогою форми даних.

    дипломная работа [2,7 M], добавлен 18.06.2014

  • Логічний, структурний, еволюційний та імітаційний підходи до побудови системи штучного інтелекту. Використання формально-логічних структур, що обумовлено їх алгоритмічним характером. Методи реалізації системи штучного інтелекту, інтелектуальні програми.

    реферат [34,5 K], добавлен 14.04.2014

  • Клавіатура як один з найважливіших пристроїв комп’ютера, її призначення та конфігурація. Основні види клавіатури, їх характеристика та відмінні риси, порядок і правила діагностування. Методика пошуку несправностей і ремонту. Побудова миші та трекболів.

    курсовая работа [182,2 K], добавлен 24.05.2009

  • Поняття штучного інтелекту, його порівняння з природним. Коротка характеристика особливостей використання штучного інтелекту в медицині, військовій справі та комп'ютерних іграх. Проблема взаємодії носіїв універсального штучного інтелекту та суспільства.

    контрольная работа [29,6 K], добавлен 07.01.2014

  • Програми, які виводять на екран характеристики комп'ютера. Розробка програми "Монітор використання ресурсів комп’ютера" на мові програмування ASM-86. Алгоритм програми та її реалізація. Системні вимоги, інструкція для користувача, лістинг програми.

    курсовая работа [22,2 K], добавлен 08.08.2009

  • Сутність поняття "контроль". Оцінювання результатів навчально-пізнавальної діяльності учнів. Особливості комп’ютерного контролю знань. Підходи до зіставлення комп’ютерних програм контролю. Створення тесту з математики за допомогою програми MyTest.

    курсовая работа [278,4 K], добавлен 24.04.2012

  • Призначення програми BurnInTest та її функціональні можливості. Конфігурація тестового стенду. Тестування жорсткого диску комп’ютера з використанням програми HD TunePro. Рекомендації по підвищенню продуктивності та оптимізації комп’ютера, що тестується.

    курсовая работа [4,8 M], добавлен 27.02.2013

  • Створення програми для роботи зі зв'язаними списками засобами Delphi. Причини використання динамічної пам'яті комп’ютера. Розробка технічного завдання. Аналіз вимог та визначення специфікації. Етап реалізації та розробка документації користувача.

    курсовая работа [487,5 K], добавлен 08.08.2011

  • Алгоритм побудови лінії та використання графічної бібліотеки DirectX. Способи побудови довільної кількості довільного розміру точок на поверхні форми. Можливості комп'ютера виконувати мультимедійні програми під управлінням операційної системи Windows.

    контрольная работа [416,9 K], добавлен 22.10.2009

  • Принципи створення WEB-сторінок. Правила і програми для створення електронних публікацій. Гіперпосилання. Використання JAVA-скриптів при створенні HTML документу. Графіка у HTML-документах. Утворення та відправлення повідомлень електронної пошти.

    реферат [177,1 K], добавлен 19.10.2007

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.