Розробка ігрової програми для мобільних пристроїв з сенсорним екраном

Класифікація комп'ютерних ігор відповідно до інтерактивних ігрових дій гравця. Мобільні пристрої з сенсорними екранами. Програмна реалізація гри жанру Tower Defence на базі платформи Java Platform Micro Edition для мобільних пристроїв з сенсорним екраном.

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

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

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

import javax. microedition. lcdui. Graphics;

import javax. microedition. lcdui. Image;

import javax. microedition. lcdui. game. Sprite;

public abstract class Tower {

abstract public boolean attack (Monster [] m);

abstract protected void upgrade ();

Sprite sp;

int xp;

int dmg;

int range;

int gold;

int cooldown;

long lastactiontime = 0;

String info;

Image img;

public Tower (int xp, int dmg, int range, int gold, int cooldown, Image img,String info) {

this. xp = xp;

this. dmg = dmg;

this. range = range;

this. gold = gold;

this. cooldown = cooldown;

this. img = Image. createImage (img, 0, 0, 36, 36, Sprite. TRANS_NONE);

sp = new Sprite (img, 36, 36);

this. info = info;

}

public void setXY (int x, int y) {

sp. setPosition (x, y);

}

public void paint (Graphics g) {

sp. paint (g);

}

public void paintInfo (Graphics g, int x, int y) {

g. drawImage (img, x, y, Graphics. TOP|Graphics. LEFT);

paint (g);

point tp = getCentPosition ();

int color = g. getColor ();

g. setColor (255, 0, 0);

g. drawRect (tp. x - range, tp. y - range, range*2, range*2);

g. drawString ("Dmg: \n"+ dmg, x+37, y, Graphics. TOP|Graphics. LEFT);

g. setColor (0, 30, 200);

g. drawString ("Range: "+ range, x, y+36, Graphics. TOP|Graphics. LEFT);

g. setColor (255, 245, 48);

g. drawString ("Gold: "+ gold, x, y+51, Graphics. TOP|Graphics. LEFT);

g. setColor (200, 200, 200);

g. drawString ("Cldn: "+ cooldown, x, y+66, Graphics. TOP|Graphics. LEFT);

g. setColor (0, 0, 0);

g. drawString (info, x-1, y-28, Graphics. TOP|Graphics. LEFT);

g. setColor (color);

}

protected boolean isCooledDown () {

long time = System. currentTimeMillis ();

return (time - lastactiontime > cooldown*100);

}

protected boolean isInRange (Monster m) {

point p = m. getCentPosition ();

point tp = getCentPosition ();

return ( (p. x <= tp. x + range && p. x >= tp. x - range) &&

(p. y <= tp. y + range) && (p. y >= tp. y - range));

}

public void act (Monster [] m) {

if (isCooledDown ()) {

if (attack (m)) {

xp ++;

upgrade ();

xp = (xp > 1000)? xp%1000: xp;

}

lastactiontime = System. currentTimeMillis ();

}

}

public point getCentPosition () {

return new point (sp. getX () +sp. getWidth () /2,sp. getY () +sp. getHeight () /2);

}

public point getPosition () {

return new point (sp. getX (),sp. getY ());

}

public int getPrice () {

return gold;

}

}

// Towers. java

import javax. microedition. lcdui. Graphics;

public class Towers {

Tower [] arr;

Tower ntw = null;

boolean sell;

public Towers () {

arr = new Tower [148];

}

public void act (Monster [] mar) {

for (int i=0; i<arr. length; i++) {

if (arr [i]! = null) {

arr [i]. act (mar);

}

}

}

public void tryNew (Tower ntw) {

this. ntw = ntw;

ntw. setXY (-100, - 100);

}

public void cancelNew () {

ntw = null;

}

public void moveNew (int x, int y) {

if (ntw! = null) ntw. setXY (x, y);

}

public void paint (Graphics g) {

for (int i=0; i<arr. length; i++) {

if (arr [i]! = null) arr [i]. paint (g);

}

if (! sell && ntw! = null) ntw. paintInfo (g, 7,101);

}

public void paintInfo (Graphics g, int x, int y, int ind) {

if (arr [ind]! = null) arr [ind]. paintInfo (g,x,y);

}

public int put (GameField gf, int gold) {

if (ntw! = null) {

if (gold < ntw. getPrice ()) return - 1;

point p = ntw. getCentPosition ();

p = gf. getCellij (p. x, p. y);

if (! gf. isCellAvailable (p. x, p. y)) return - 1;

p = gf. getCellXY (p);

if (! isFree (p)) return - 1;

ntw. setXY (p. x, p. y);

for (int i=0; i<arr. length; i++) {

if (arr [i] == null) {

arr [i] = ntw;

cancelNew ();

return gold - arr [i]. gold;

}

}

}

return - 1;

}

private boolean isFree (point p) {

for (int i=0; i<arr. length; i++) {

if (arr [i]! = null) {

if (p. equals (arr [i]. getPosition ())) return false;

}

}

return true;

}

public int check (point p) {

for (int i=0; i<arr. length; i++) {

if (arr [i]! = null) {

point cur = arr [i]. getPosition ();

if (p. x > cur. x && p. x < cur. x + arr [i]. sp. getWidth () &&

p. y > cur. y && p. y < cur. y + arr [i]. sp. getHeight ()) return i;

}

}

return - 1;

}

public int remove (int i) {

int gold = arr [i]. gold;

arr [i] =null;

sell = false;

return gold;

}

public void changeState (boolean sell) {

this. sell = sell;

}

}

// Trek. java

import java. util. Stack;

public class Trek {

Stack st;

public Trek (Stack st) {

this. st = st;

}

public point getNext () {

return (point) st. peek ();

}

public boolean isEmty () {

return st. isEmpty ();

}

public void delNext () {

st. pop ();

}

public Trek copy () {

Stack st1 = new Stack ();

st1. setSize (st. size ());

for (int i=0; i<st. size (); i++)

st1. setElementAt (st. elementAt (i), i);

return new Trek (st1);

}

}

// TrekBuilder. java

import java. util. Random;

import java. util. Stack;

import java. util. Vector;

public class TrekBuilder {

Trek [] treks = null;

int [] [] map = null;

int h,w,x0,y0;

public TrekBuilder (int h, int w, int x0, int y0) {

this. h = h;

this. w = w;

this. x0 = x0;

this. y0 = y0;

}

public Stack convertToXY (Stack st) {

for (int i=0; i<st. size (); i++) {

int x = ( (point) st. elementAt (i)). x;

int y = ( (point) st. elementAt (i)). y;

( (point) st. elementAt (i)). x = y*w + x0;

( (point) st. elementAt (i)). y = x*h + y0;

}

System. out. println ();

return st;

}

public boolean buildTreks (int [] [] map, int si, int sj) {

this. map = map;

Stack from = new Stack ();

from. push (new point (si, sj));

Vector v = findTrek (from);

if (v. isEmpty ()) return false;

treks = new Trek [v. size ()];

for (int i =0; i<v. size (); i++) {

Stack s = (Stack) v. elementAt (i);

s. addElement (new point (si,sj));

treks [i] = new Trek (convertToXY (s));

}

return true;

}

private boolean ok (int i, int j) {

return (map [i] [j] == GameField. ROAD);

}

private boolean finish (int i, int j) {

return (map [i] [j] == GameField. HOME);

}

// повертає вектор стеків шляху (шлях в клітинках, а не координатах)

private Vector findTrek (Stack from) {

Vector ret = new Vector ();

point [] neib = new point [4];

point f = (point) from. peek ();

neib [0] = new point (f. x,f. y-1);

neib [1] = new point (f. x,f. y+1);

neib [2] = new point (f. x-1,f. y);

neib [3] = new point (f. x+1,f. y);

for (int i=0; i<4; i++) {

if (neib [i]. x < map. length && neib [i]. y < map [0]. length && neib [i]. x>=0 && neib [i]. y>=0) {

if (finish (neib [i]. x,neib [i]. y)) {

Stack st = new Stack ();

st. push (neib [i]. copy ());

ret. addElement (st);

}

if (ok (neib [i]. x,neib [i]. y) &&! from. contains (neib [i])) {

from. push (neib [i]);

Vector v = findTrek (from);

from. pop ();

for (int j = 0; j<v. size (); j++) {

Stack cur = (Stack) v. elementAt (j);

cur. push (neib [i]. copy ());

ret. addElement (cur);

}

}

}

}

return ret;

}

public Trek randTrek () {

if (treks == null) return null;

else{

Random r = new Random ();

int i = r. nextInt (treks. length);

return treks [i]. copy ();

}

}

public Trek [] getTreks () {

return treks;

}

}

// point. java

public class point {

public int x;

public int y;

public point (int x, int y) {

this. x = x;

this. y = y;

}

public boolean equals (Object obj) {

if (obj instanceof point) {

point p = (point) obj;

return (x == p. x && y == p. y);

}

return super. equals (obj);

public point copy () {

return new point (x,y);

}

}

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


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

  • Ескізний проект програмного забезпечення для 3D-навігації для мобільних пристроїв під управління ОС Android. Розробка прототипу інтерфейсу. Технічний проект програмного забезпечення. Створення діаграми класів, аналізу, розгортання та кооперацій.

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

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

    дипломная работа [418,2 K], добавлен 12.07.2013

  • Створення комп'ютерної програми на мові програмування С++ для ведення обліку мобільних телефонів на складі-магазині. Вимоги до апаратного та програмного забезпечення. Схема зв'язку між складовими частинами програми. Інструкція користувача, тестування.

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

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

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

  • Мобільність. Міграційні програми (migratory applications). Теорія агентної взаємодії. Переваги мобільних агентів. Структура управління мобільного агента. Мобільні обчислення – Obliq. Новий жанр в індустрії програмного забезпечення.

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

  • Android, iOS та Windows як основні платформи для розробки додатків для мобільних пристроїв. Перелік вимог до програмної системи. Основні вимоги, які є критичними для працездатності мобільного додатку. Аналіз основних напрямків розвитку системи.

    курсовая работа [1,1 M], добавлен 19.08.2016

  • Огляд суті гри "Доміно", характеристика її існуючих програмних реалізацій. Розробка евристичного алгоритму для розв’язання ігрової ситуації "Доміно". Програмна реалізація алгоритму мовою програмування високого рівня C#. Отладка оціночної функції.

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

  • Основні концепції компонентної розробки прикладних задач: com/dcom, Java Beans, corba, .net. Розробка стратегії гри для кожної категорії учасників, компонентів. Програмна реалізація спроектованої системи, обґрунтування вибору використовуваних засобів.

    курсовая работа [1,0 M], добавлен 11.11.2014

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

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

  • Огляд та конфігурація комп’ютерних мереж - двох або більше комп’ютерів, об’єднаних кабелем таким чином, щоб вони могли обмінюватись інформацією. Характеристика мереживих пристроїв иа середовища передачі даних. Під’єднання до мережі NetWare та Internet.

    дипломная работа [1,5 M], добавлен 15.02.2010

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