Резистивні сенсорні екрани
Резистивний екран складається з скляної панелі і гнучкої пластикової мембрани, на які нанесено спеціальне покриття. Простір між склом і мембраною заповнений діелектриком, який рівномірно розподілений по активній області екрану і надійно ізолює поверхні провідників. Коли на екран натискають, панель і мембрана замикаються, а контролер з допомогою аналого-цифрового перетворювача реєструє зміну опору і перетворює його в координати дотику. Існують різні варіації резистивних дисплеїв: 4, 5 і 8 - провідникові, в залежності від кількості електродів, що використовуються, напруг що на них подаються.
Ємнісні сенсорні екрани
Ємнісний екран являє собою скляну панель, покриту прозорим матеріалом. Електроди розміщені по кутах екрану, подають на провідний шар невелику постійну напругу, однакову для всіх кутів. При дотику до екрану пальцем, або іншим предметом з відповідною провідністю, виникає відтік електрики. При цьому чим ближче палець до електроду, тим менший опір екрану, а значить сильніша сила струму. Сила струму у всіх чотирьох кутах реєструється датчиками, які передають інформацію в контролер, що вираховує координати точки дотику.
Точність ємнісних екранів досягає точності резистивних. Меша кількість шарів, робить їх більш прозорими (до 90%). Відсутність рухомих елементів, що піддаються деформації збільшує надійність - вони витримують до 200 мільйонів натискань в одну точку, що становить близько шести з половиною років натискань з інтервалом в одну секунду, також вони стійкі до низьких температур. Проте недоліками таких екранів є: необхідність торкатися тільки предметами з певними електропровідними властивостями (палець, або спеціальний стилус), крім того користувач повинен мати досить хороший контакт з "землею", інакше він набуде потенціал екрану, що спричинятиме збої. Екрани такого типу не допускають натискання в двох точках одночасно.
Другий вид ємнісних екранів, позбавлений більшості перелічених недоліків. Проекційно-ємнісні екрани відрізняються тим, що в них на внутрішній стороні нанесена сітка електродів. Кожен електрод разом з тілом людини утворює конденсатор, ємність якого вимірюється, методом подавання імпульсу струму і вимірювання його напруги. Всі електроди мають однакові розміри, форму і провідність, тому за відсутності сторонніх предметів їх ємності рівні. Контролер почергово подає імпульс на кожен електрод, той з них, що матиме і максимальну ємність і відповідатиме точці дотику.
Такі екрани витримують більший діапазон температур, і не настільки вимогливі до провідності людини і землі. Статичні провідні забруднення можна легко ігнорувати програмним шляхом. Важливою властивістю таких екранів є також можливість реєстрації кількох точок дотику одночасно. Щоправда їм властива менша роздільна здатність в порівнянні з традиційними ємнісними дисплеями.
Інфра-червоні сенсорні екрани
Принцип роботи полягає в тому, що сітка, сформована горизонтальними і вертикальними інфра-червоними променями, переривається при дотику до монітора будь-яким предметом. Контролер визначає місце, в якому промінь був перерваний.
Інфра-червоні екрани чутливі до забруднень і тому використовуються там, де важлива якість зображення. Також з їх допомогою дуже просто перетворити звичайний екран на сенсорний. Такий тип екранів використовується в телефонах шведської компанії Neonode. [4]
На даний момент найпопулярнішою стала технологія
ємнісних сенсорних екранів, хоча значну частину ринку все ще займають
резистивні. Оскільки стилуси для ємнісних екранів, в силу складності їх
виробництва, не надто розповсюджені, розробникам програм потрібно орієнтуватися
на керування з допомогою пальців, а значить збільшення розмірів елементів
графічних інтерфейсів.
Мова програмування Java, створена Sun Microsystems, зіграла важливу роль в розвитку ігор. Будучи мовою, в якій нема вказівників і складних операцій з пам'яттю, вона також є об'єктно-орієнтованою, безпечною і може працювати на базі більшості платформ, таким чином з її появою, розробники програм, раптом відкрили для себе те, що ніколи не здавалося, можливо раніше. Java дозволила мільйонам програмістів створювати якісні програми в рекордні строки та кількості.Platform, Micro Edition (Java ME), [5] була спробою взяти Все найкраще від Java SE і пристосувати, для невеликих пристроїв, таких як мобільні телефони, телевізійні приставки, пейджери, органайзерів і кишенькові комп’ютерів (КПК), а також вбудовані чіпи, які є в таких пристроях, як холодильники, мікрохвильові печі, "Розумні"кредитні картки, і автомобілі.
Більшість основних виробників мобільних телефонів відразу зрозуміли потенціал J2ME: якщо прилад підтримує Java то, сотні тисяч розробників зможуть без проблем створювати програмки для нього, що збільшує його цінність. Крім того, що оскільки програма написана на Java, розроблена для одного пристрою, вона зможе працювати і на іншому пристрої зазнавши мінімальних модифікацій, або взагалі без них. Це, безумовно, набагато краще, ніж змушувати розробників, вивчати рідні мови і API кожної моделі телефону для створення відповідних програм. [2]
Мова програмування Java незалежна від архітектури, в силу того, що використовує інтерпретатор, який перекладає байт-код, згенерований компілятором в машино - незалежний код. Інтерпретація коду здійснюється під керуванням системи виконання, так званої віртуальної Java машини. Цей механізм створює середовище виконання пристосунків. Середовище виконання в свою чергу, висуває певні вимоги до властивостей мови програмування Java, побудовані на основі специфікації Java Language Specification, розробленої компанією Sun Microsystems. При написанні програм на Java активно використовується бібліотеки Java API, без яких написати реальну програму майже не можливо. Ці бібліотеки містять велику кількість наперед визначених інтерфейсів, класів, методів, констант, що допомагають програмісту створювати робочі додатки, за мінімальні терміни. [3]
Невеликі розміри портативних приладів накладають значні обмеження на процесор, пам’ять, дисплей, пристрій вводу, але платформа Java ME розроблена спеціально для того, щоб створювати програми, орієнтовані саме на такі портативні пристрої.
Середовище виконання програм Java, повинне знаходитись всередині портативних пристроїв, за це відповідає їх виробник, це і характеризує конкретний пристрій, як пристрій, що підтримує технологію Java.
Існує велика кількість портативних пристроїв, що підтримують Java, але потужність, і відповідно, їх можливості різні. Тому платформа Java ME розроблена у вигляді блочної моделі модулів, конфігурацій і профілів.
Конфігурація визначає властивості мови Java і віртуальної Java машини, а також набір доступних бібліотек Java API. Профіль, в свою чергу, висуває вимоги до апаратної частини приладу і може містити раяд додаткових бібліотек Java, спрямованих на роботу з конкретним пристроєм.
Платформа Java ME складається з двох конфігурацій CDC (Connected Device Configuration - кофігурація пристроїв, що підключаються) і CLDC (Connected Limited Device Configuration - кофігурація пристроїв, що підключаються з обмеженнями). Кожна з конфігурацій визначає своє сімейство пристроїв. При програмуванні для мобільних телефонів використовується конфігурація CLDC. Кожна з конфігурацій містить свої профілі, які надбудовуються над своєю конфігурацією. Коли програміст створює програмне забезпечення для портативних пристроїв, він повинен знати під який профіль і конфігурацію пише програму, а виробник пристрою повинен здійснювати підтримку того чи іншого профілю в зв’язці зі своєю конфігурацією.
Конфігурація CDC об’єднує ряд пристроїв, що мають постійне мережне підключення, наприклад телевізійні приставки, автомобільні системи навігації тощо. Конфігурація CLDC розрахована на сімейство мобільних пристроїв, таких як телефони, органайзери, КПК. Для таких пристроїв характерні 16 або 32 розрядні процесори, 160-521 Кб пам’яті для платформи Java ME, бездротове мережеве підключення, живлення від акумулятора. Конфігурації СDC і CLDC незалежні одне від одного і не можуть використовуватись разом.
Існують дві версії конфігурації: CLDC 1.0 i CLDC 1.1 Конфігурація 1.1 має більше можливостей, наприклад, підтримку чисел з плаваючою точкою, що в свою чергу робить серйознішими вимоги до апаратної частини.
Єдиний доступний профіль в конфігурації CLDC називається MIDP (Mobile Information Device Profile - інформаційний профіль мобільних пристроїв). Цей профіль має три версії 1.0, 2.0, 2.1 Всі телефони, що підтримують Java, сумісні з профілем MIDP 1.0, який був сформований при початковому створенні платформи Java ME і містить в собі певний набір API. З виходом MIDP 2.0 було додано ряд нових бібліотек, що покращили процес створення програм для мобільних телефонів. Профіль MIDP 2.1 не значним чином відрізняється від 2.0. в ньому були посилені вимоги до специфікацій і безпеки, що практично не вплинуло API. [1]
Отож, програмний продукт, створений розробниками
орієнтований на конкретний профіль, який є специфікацією, що встановлює певні
вимоги до апаратної частини телефону, а також містить додаткові бібліотеки.
Кожен конкретний профіль надбудовується над своєю, тільки йому доступною
конфігурацією. Конфігурація висуває вимоги до віртуальної Java машини і
властивостей мови Java. Далі йде тісна взаємодія з апаратним забезпеченням
телефону, через наявні сервіси, які надаються операційною системою або
прошивкою телефону. Даний рисунок ілюструє цей ланцюжок взаємодії. Така
модульність в побудові Java ME дає необмежені можливості в модернізації усієї
платформи і написанні справді апаратно-незалежного коду програми.
Запропонувати програмну реалізацію гри жанру Tower Defence, на базі платформи Java Platform Micro Edition, для мобільних пристроїв з сенсорним екраном. Програма повинна бути розрахована на керування з допомогою пальця або стилуса.
Гра відбувається на карті, що складається з клітинок. Клітинки бувають чотирьох типів: місця придатні для розміщення вежі, точка появи монстрів, дорога по якій вони можуть рухатись і ціль, куди вони прямують. Мета гравця - не дозволити монстрам добратися до їх цілі, для цього він розміщує оборонні вежі вздовж дороги. Доступні кілька видів веж з різними показниками сили, скорострільності, радіусу дії, і, відповідно, ціни. Гравець може змонтувати вежу на придатній клітинці, якщо у нього достатньо для цього ресурсу. Також вежа може бути розмонтована, при цьому ресурс витрачений на неї повернеться. Монстри також бувають різних видів в залежності від показників їх швидкості, живучості, і кількості ресурсу, яку отримує гравець за знищення монстра.
Гра може проводитись у кількох варіантах: проходження компанії раунд за раундом, чи в режимі гри на виживання. Раунд гри закінчується перемогою, коли гравець знищить певну задану кількість монстрів, тоді він переходить в наступний раунд, який може відбуватися вже на інакшій карті, або поразкою, якщо кілька монстрів зможуть пройти карту. В режимі на виживання, гравець повинен захищатися від безкінечної послідовності монстрів, що постійно генеруватимуться. В такому варіанті гра триває до програшу, або поки гравець її не зупинить, як результат - враховується кількість знищених монстрів.
інтерактивний ігровий мобільний сенсорний
В процесі гри відбувається постійний рух монстрів по спеціальних шляхах. Для цього потрібно перш за все проаналізувати карту гри на прохідність, і згенерувати усі можливі маршрути. Ігрове поле розглядається як неорієнтований граф, вершинами якого є клітинки придатні для пересування, а ребрами зв’язані сусідні клітинки, між якими можливі переходи. На такому графі виконується пошук в глибину з урахуванням того, що згенеровані шляхи не повинні містити циклів. Одержані шляхи конвертуються в набір точок на площині, які повинен пройти монстр. В залежності від його швидкості він поступово переміщається між ними.
Для організації руху і взаємодії ігрових об’єктів програма в своїй основі повинна містити цикл, що постійно повторюється. В тілі циклу проводиться звернення до всіх активних елементів і їх перемалювання. Кожна вежа перевіряє наявність монстрів в радіусі своєї дії і атакує їх відповідно до свого типу. При цьому повинна враховуватись скорострільність, а саме: вежа, час перезарядки якої ще не пройшов - не повинна взаємодіяти з монстрами.
Кожна вежа повинна автоматично вдосконалюватися. За кожне враження монстра додається один бал досвіду, при набиранні певної кількості балів, в залежності від виду вежі, може збільшуватись її сила, скорострільність чи радіус дії.
Також, в процесі гри повинна бути можливість додавання нових веж і ліквідації не потрібних. Ці можливості надає користувачу бокове меню, в якому можна обрати нову вежу для побудови. Також на ньому відображаються запас ресурсу, і інформація про обрану вежу. При виборі уже побудованої вежі в боковому меню активізується кнопка для знищення вежі. При побудові нової вежі необхідно враховувати наявність достатньої кількості ресурсу, і зменшувати його кількість відповідно до ціни.
Готова програма являє собою Java мідлет, на базі конфігурації CLDC - 1.1, профілю MIDP - 2.1.
В процесі програмної реалізації було створено набір класів:, Menu, MenuCanvas, Monster, MonsterFactory, Monster, Monsters, SimpleFactory, SimpleTower, SpeedTower, SplashTower, TDGame, TDCanvs, Tower, Towers, Trek, TrekBuilder, point.
Програмний код класів наведений в додатку.
Ієрархію створених класів демонструє наступна діаграма.
Детальніше про кожен клас і його призначення:- основний клас - Midlet, що є оболонкою для всієї гри.- організовує головне меню ігри.- клас наслідник GameCanvas, реалізує графіку власне ігрового процесу, взаємодіє з користувачем, обробляючи дотики до екрану.- містить у собі інформацію про поточне ігрове поле.- забезпечує бокове меню в ігровому процесі.- містить у собі інформацію про монстра, його характеристики, зображення, шлях прямування. Забезпечує малювання і участь в ігровому процесі одного монстра.- інтерфейс, що описує генератор послідовностей монстрів. Містить тільки один метод Monster genNext (), що генерує наступного монстра. У різних ігрових рівнях можуть використовуватись різні реалізації цього інтерфейсу.- реалізує інтерфейс MonsterFactory, генеруючи послідовність монстрів з характеристиками заданими випадковим чином в певних рамках.- клас, що містить в собі масив усіх об’єктів класу Monster, і почергово опитує на кожній ітерації, для того щоб здійснити рух, і промальовування.- абстрактний клас, що описує одну вежу. Містить її характеристики, зображення, методи встановлення і ліквідації вежі. Два абстрактні методи attack (Monster [] m) і upgrade () - дають можливість описувати різні схеми поведінки: атаки і вдосконалення, в залежності від типу вежі.- наслідує Tower, представляє звичайну вишку, що атакує одночасно тільки одного ворога.- наслідує Tower, представляє вишку, що зменшує швидкість одного ворога.- наслідує Tower, представляє звичайну вишку, що атакує одночасно всіх ворогів в радіусі своєї дії.- містить посилання на всі присутні на карті вежі. Активує їх на кожній ітерації. Забезпечує можливість додавання нових і видалення старих веж.- містить шлях прямування конкретного монстра у вигляді послідовності контрольних точок.- генерує всі можливі шляхи слідування монстрів, на основі заданого поля.- клас, що представляє точку, містить координати х,y.