Создание игры Spider2

Об игре Spider2 и начало ее разработки. Схема работы приложения, представление в виде блок схемы. Изучение операционной системы Android. Разработка класса Graph, рисование с помощью android.graph. Класс GameLogic и техника разработка логики игры.

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

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

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

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

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

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНСТИТУТ МАТЕМАТИКИ И КОМПЬЮТЕРНЫХ НАУК

КАФЕДРА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ

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

по дисциплине «Технологии программирования»

на тему Создание игры Spider2

Выполнил: Студент гр. 134-1

Самарин Никита Максимович

Проверил: Старший преподаватель

Павлова Елена Александровна

Тюмень 2014

Содержание

  • Введение
  • 1. Об игре Spider2
  • 2. Начало разработки
  • 3. Схема работы приложения. Представление в виде блок схемы
  • 4. Изучение операционной системы Android
  • 5. Разработка класса Graph. Рисование с помощью android.graph
  • 6. Класс GameLogic. Разработка логики игры
    • Список литературы

Введение

Рынок компьютерных игр сегодня активно развивается и позволяет получать большую прибыль. Тот скачок в развитии, который был произошел в этой области за последнее время, просто впечатляет! Стратегии создания и продвижения игр, отличная графика, качественный звук, возможность скачать игры и даже устраивать турниры - все это делает их очень популярными у людей разных возрастов.

В связи с этим, разработка игр сейчас является очень перспективным направлением. Конечно, при разработке игры программист должен понимать, что большую часть рынка занимают `компании-гиганты' такие как Nintendo EAD, Rockstar North, Valve, Blizzard Entertainment и никакой начинающий разработчик не сможет конкурировать с ними. Хотя многие популярные игры создавались разработчиками энтузиастами, а впоследствии их продукт замечали, могли перекупить и нанять разработчика продолжения разработки под их началом. Так что, для того что бы достичь успеха в этой области, вам необходимо иметь навык разработки и хорошую идею для реализации

Успех вашего проекта во многом будет зависеть от выбранной вами платформой под которую будет вестись разработка, жанра игры и аудитории на которую рассчитана эта игра. Проект, процесс разработки которого, я бы хотел описать в этой курсовой работе я начал разрабатывать, потому что мне это нравится и я хотел получить опыт разработки под платформу Android, а так же опыт работы с OpenGL ES и различными игровыми движками.

В мире программирования есть очень много материала для изучения, сотни различных языков программирования, разные операционные системы, фреймворки, IDE. Язык программирования Java, IDE Eclipse, платформу Android, я выбрал не случайно. Меня направлял человек, который, когда я был ещё школьником, набирал группу заинтересованных в программировании детей. В данный момент он является аспирантом в ТюмГУ. Время от времени он давал нам некоторые задания, после сдачи, которых следовали новые. В результате чего он предложил нам разработать основы геймплея некоторой игры. Процесс разработки этой игры я буду описывать в данной курсовой работе.

приложение операционный android игра

1. Об игре Spider2

Вы управляете паучком, который может создавать паутину. Для этого вам необходимо пройти от стены до стены, оставив за собой ниточку. Как только паучок сближается со стенкой, образуется паутина, в которую он уже не может наступать, но может создавать другую паутину, взаимодействуя с уже созданной ранее паутиной. Таким образом, пространство доступное для передвижения постепенно сокращается. На данный момент я не ставил никакой цели перед игроком. Так что пользователь может наслаждаться процессом заполнения экрана паутиной.

Играм -- вид осмысленной непродуктивной деятельности, где мотив лежит не в результате её, а в самом процессе.

В планах: разработать противников, которых паучок будет ловить в свою паутину, ресурс «ниточка», что бы нельзя было сразу же превратить в паутину половину экрана, пересекая его, например, по диагонали, интерфейс, мультиплеер, звуковое сопровождение, поддержку слабых устройств, повышение производительности, устранение багов и вылетов, улучшенная обработка нажатий, разнообразные карты для повторного прохождения и размещение игры в Google Play. Так же в планах перевести игры на какой либо игровой движок.

2. Начало разработки

Для начала необходимо было в общих чертах представить, какой объем работы придется выполнить и какие средства для разработки, я могу использовать. Самой подходящей IDE я посчитал Eclipse. Отличие игры от консольных приложений, которые я должен был сдавать в течении года, очевидно. В любой игре есть графика. Трудно представить себе игру, которая будет состоять лишь из диалогов пользователя с консольным приложением. Значит, нужно будет реализовать графику. Для этих целей я выбрал OpenGL ES, хотя в процессе разработки пришлось заменить способ отрисовки на другой, более производительный. Главное в любой игре это её геймплейная часть. Поэтому следующим, что нужно было сделать, это было разработка логики игры.

То есть, если вы собрались разрабатывать игру, под новую для вас платформу, не имея понятия о том, как реализовать графику в этой игре, то разработка этой игры будет выглядеть примерно так.

· Изучение платформы, под которую вы ведёте разработку.

· Изучение графических библиотек, которые помогут вам реализовать графику в этой игре.

· Создание логики программы.

В конце разработки вам будет необходимо `подружить' операционную систему, графику, и геймплей. Связать три эти части воедино.

Далее я расскажу подробнее о каждом этапе разработки.

3. Схема работы приложения. Представление в виде блок схемы

В моём приложении всего две основных процедуры, которые вызываются при создании приложения. Они исполняются параллельно друг другу. Одна отвечает за activity, которое пользователь видит, вторая за логику игры. Ключевым объектом связующим логику и графику я сделал массив map, в котором я храню положение всех объектов на экране. Заполняет этот массив, методы класса GameLogic. А отрисовывается он с помощью методов класса Graph. Для примера вот как выглядит массив map и как он рисуется в приложении.

1-персонаж.

2-стенка.

3-ниточка.

Массив map на экране.

Массив map

map[][]={

2,2,2,2,2,2,2,2,2,2,2,2,2,2,

2,2,3,0,0,0,0,0,0,0,0,0,0,2,

2,2,3,3,3,3,3,3,0,0,0,0,0,2,

2,2,2,2,2,2,2,3,0,0,0,0,0,2,

2,2,2,2,2,2,2,3,0,0,0,0,0,2,

2,2,2,2,2,2,2,3,0,0,0,0,0,2,

2,2,2,2,2,2,2,3,3,1,0,0,0,2,

2,2,2,2,2,2,2,3,0,0,0,0,0,2,

2,2,2,2,2,2,2,2,2,2,2,2,2,2};

Представление кода в виде блок схемы в общем виде:

MainActivity.java

GameLogic.java

Graph.java

4. Изучение операционной системы Android

В ходе разработки мне не пришлось подробно исследовать систему андроид, лишь некоторые классы для создания графики, многопоточности и взаимодействия с touchscreen'ом.

Для начала, нужно было понять, как работает простейшее приложение, которое я смогу запустить у себя на телефоне. При создании приложения нужно указать класс, методы которого будут исполняться при определенных воздействиях пользователя и программы. Первое, что сделает пользователь с вашим приложением - это запуск. Для этого мы переопределим метод onCreate, который принимает от системы один аргумент.

Следующий код позволяет нам увидеть белый экран на вашем аппарате при запуске приложения. В нём мы не переопределяли метод onCreate и данная программа ничего не делает.

package com.example.sdasdas;

import android.app.Activity;

public class MainActivity extends Activity {

}

Теперь попробуем переопределить метод onCreate и заставить его показать нам наш activity_main.xml, который добавляется автоматически при создании проекта, но нам он не понадобится.

public class MainActivity extends Activity {

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

Теперь мы передали управление программой нашей xml форме. На этом, казалось бы, можно закончить этап работы с ОС потому что осталось всего лишь передать управление нашего приложения классу отвечающему за инициацию графики и логики.

Для этого заменим строку

setContentView( new Graph(this));

Далее можно переходить к реализации класса Graph.

5. Разработка класса Graph. Рисование с помощью android.graph

Я организовал работу приложения следующим образом

На данный момент в игре присутствуют три типа объектов:

1. Стена

2. Ниточка

3. Главный герой

В плане разработать объекты Враг-1, Враг-2…Враг-n, Бонус-1,Бонус2..Бонус-n.

В классе Graph я создал массив map массивов размерностью [320][180] в который я записывал номера объектов. 0-пустота,1-персонаж,2-стена,3-ниточка. Метод вычисляющий в каких ячейках массива map расположены те или иные объекты я разместил в классе GameLogic, а метод отвечающий за графику разместил в Graph.

Допустим у нас в массиве map уже есть некоторые данные и нам нужно их отрисовывать. Для этого создан метод myRun() который рисует на нашем экране объекты в зависимости от их расположений в ячейках массива map. Говоря: “рисуя объекты”, я имею в виду рисование прямоугольников различных размеров и цветов. Для примера, функция, рисующая на экране “паучка”, выглядит так

canvas.drawRect(shirina*x/320,visota*y/180,shirina*(x+10)/320,visota*(y+10)/180,paint);

Где shirina- ширина экрана устройства исполняющего данную программу, а visota- высота экрана устройства исполняющего данную программу. Для каждого из объектов подойдет такой способ отрисовки, надо всего лишь изменить цвет и размер прямоугольника.

Запустив такую функцию в конструкторе нашего класса Graph, она отрисуется всего лишь один раз. Поэтому запустим её в цикле в отдельном потоке, параллельно функции изменяющей элементы массива map.

6. Разработка логики игры. Вычисление площадей

Из класса Graph в отдельном потоке запускается метод класса GameLogic под названием Start. В нём мы добавляем на нашу карту map персонажа, стенки и путь от персонажа до стенки. Далее в цикле мы передвигаем персонажа функцией moveCharacter. Она проверяет, была ли вызвана функция onTouchEvent из класса Graph. Если нет, тогда поток засыпает на 33мс и снова вызывается функция moveCharacter. В случае нажатия пользователем на экран происходит следующее. Вычисляется в каком направлении было произведено касание экрана. Персонаж передвигается в этом направлении, на расстояние равное его скорости, оставляя за собой ниточку.

Формально, паучок не может столкнуться со стенкой, потому что у нашего паучка есть некоторые размеры, а в массиве map он размерностью в один элемент. Поэтому при приближении к стенке на определённое расстояние от игрока вызывается функция fillMap2. Эта функция вычисляет площади образовавшихся двух фигур по хитрому алгоритму, реализованному в функции squareCount. После сравнения двух площадей закрашивается фигура, имеющая наименьшую площадь.

Первоначальный, не эффективный алгоритм, который я применил для вычисления площади, работал слишком долго. Была заметна пауза во время столкновения со стенкой, когда и запускался этот алгоритм. С альтернативным алгоритмом, в котором я учел некоторые особенности построения фигур, такой паузы не возникает и работает он в сотни раз быстрее.

С помощью рисунков и блок схем я продемонстрирую работу двух алгоритмов.

В следующей ситуации, нам нужно подсчитать площадь двух фигур.

В функцию для подсчета площади передаются координаты X,Y точки, которая расположена внутри фигуры. Для первой площадь это координаты точки помеченной красным крестиком, для второй фигуры такая точка помечена, синим крестиком. Алгоритм который проходится по всем пустым клеткам внутри фигуры очень компактный и простой. Он принимает точку, увеличивает площадь на 1 и вызывает себя для соседних клеток.

int map[N, N];

boolean visited[N, N];

int calc( int x, int y )

{

if (visited[x][y] || a[x][y] != 0) return 0;

visited[x][y] = true;

int num = 1;

num += calc(x, y - 1);

num += calc(x, y + 1);

num += calc(x + 1 ,y);

num += calc(x - 1 ,y);

return num;

}

Работа алгоритма на рисунке

Красная точка- начальная позиция внутри фигуры. Оранжевые точки это рекурсивно считываемые точки после второго, третьего вызова. Ярко розовые - четвертый, пятый, шестой вызовы. Бледно розовые - седьмой, восьмой, девятый, десятый вызовы.

Что бы не попадать в клетки повторно, я создал массив visited, которых хранит информацию о посещённых клетках. При попадании в такую клетку функция завершается.

Такой алгоритм весьма неплохо работает, когда нужно пройтись по всем клеткам внутри фигуры. Но для подсчета площади намного более эффективно будет пройтись по периметру и вычислить площадь фигуры.

Список литературы

1) stackoverflow.com

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

...

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

  • Средства разработки развивающих и обучающих игр и используемой программы. Среда выполнения и Dalvik. Разработка приложения для платформы Android. Графический интерфейс и обработка касаний экрана. Разработка экранов приложения и их взаимодействия.

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

  • Характеристика работы операционной системы Android, используемой для мобильных телефонов. Создание Android проекта в среда разработки Eclipse. Общая структура и функции файла манифест. Компоненты Android приложения. Способы осуществления разметки.

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

  • Архитектура и история создания операционной системы Android. Язык программирования Java. Выбор средства для реализации Android приложения. Программная реализация Android приложения. Проведение тестирования разработанного программного обеспечения.

    курсовая работа [167,8 K], добавлен 18.01.2017

  • Общие характеристики операционной системы Android. Разработка приложения на основе создания менеджера файлов. Получение с помощью приложения доступа к файлам, хранящимся в "облачном хранилище" в сети Интернет. Расчет стоимости программного обеспечения.

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

  • Архитектура операционной системы Android. Инструменты Android-разработчика. Установка Java Development Kit, Eclipse IDE, Android SDK. Настройка Android Development Tools. Разработка программы для работы с документами и для осуществления оперативной связи.

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

  • Разработка клиент-серверного игрового приложения на примере игры в шашки для мобильных устройств на базе операционной системы Android. Обзор мобильных платформ. Экраны приложения и их взаимодействие. Графический интерфейс, руководство пользователя.

    курсовая работа [2,6 M], добавлен 15.06.2013

  • Общая схема работы приложения Android. Разработка обучающего приложения для операционной системы Android, назначение которого - развитие речи посредством произнесения скороговорок. Описание компонентов разработанного приложения, его тестирование.

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

  • Архитектура операционной системы Android, набор библиотек для обеспечения базового функционала приложений и виртуальная машина Dalvik. Объектно-ориентированный язык программирования Java как инструмент разработки мобильных приложений для ОС Android.

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

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

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

  • Структура и архитектура платформы Android. Основные достоинства и недостатки операционной системы Android. Среда разработки Eclipse, платформа Java. Подготовка среды разработки. Вкладка "Погода", "Курс валют", "Новости". Просмотр полной новости.

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

  • Разработка программного обеспечения для платформы Android версии 2.3: информационное приложения для поклонников футбольной команды, с возможностью просмотра событий, статистики и иной информации о команде и ее успехах. Листинг JsonDataManager.java.

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

  • Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.

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

  • Система помощи водителю на базе регистратора. Установка операционной системы Debian. Настройка системных служб и разработка серверного приложения. Создание локальной Wi-Fi сети. Распознавание знаков и библиотека OpenCV. Потоковое видео в Android.

    дипломная работа [3,9 M], добавлен 13.09.2017

  • Разработка приложений для смартфонов на ОС Android для сети аптек "Фармация". Архитектура операционной системы Android. Архитектура и реализация приложения. Его функциональность. Описание работы мобильного приложения. Расчет затрат на создание продукта.

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

  • Знакомство с особенностями и этапами разработки приложения для платформы Android. Рассмотрение функций персонажа: бег, прыжок, взаимодействие с объектами. Анализ блок-схемы алгоритма генерации платформ. Способы настройки функционала рабочей области.

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

  • Анализ деятельности группы компаний "Инрэко ЛАН". Общая характеристика, основы проектирования и разработка операционной системы Android. Этапы разработки программного игрового приложения с использованием физики. Скриншоты, отображающие игровой процесс.

    отчет по практике [2,7 M], добавлен 19.07.2012

  • Изучение общих понятий операционной системы Android, разработанной для коммуникаторов, планшетных компьютеров, основанной на ядре Linux. Разработка программного обеспечения Android. Преимущества и недостатки мобильной операционной системы Windows Mobile.

    реферат [60,6 K], добавлен 16.04.2012

  • Обзор существующих популярных программ для просмотра погоды на ОС Android. Операционные системы современных смартфонов. Ключевые особенности Android, технология Java. Разработка программной части, выбор языка, описание алгоритма, ее логической структуры.

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

  • Современное состояние рынка мобильных приложений. Основные подходы к разработке мобильных приложений. Обоснование выбора целевой группы потребителей приложения. Этапы проектирования и разработки мобильного приложения для операционной системы Android.

    курсовая работа [987,1 K], добавлен 27.06.2019

  • Представление о системе Arduino. Структура платформы Android. Выбор средств разработки. Разработка структур данных и алгоритмов. Характеристика Bluetooth модуля, блок реле, резисторов, диодов. Графический интерфейс приложения. Написание кода программы.

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

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