International Athletics - провал по всем статьям Уроки iPhone SDK: (Часть 2) Программирование игр на iPhone. “Пишем” игру iTennis.
Май 17

Это первая из серии статей о пошаговом создании игр для iPhone. Не для кого не секрет, что освоение OpenGL и Quartz требует солидной подготовки. В этом уроке мы упростим процесс разработки, не прибегая к данным технологиям. Для графики воспользуемся классом UIImageView.

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

Игра, которой мы займемся, называется iTennis (по правилам и механизму это аналог Pong). Я выбрал ее в качестве первого варианта, поскольку iTennis не требует особой анимации. Вот это как будет выглядеть на практике:

screenshot_011

Приступаем… Все необходимые для проекта изображения находятся [здесь].

Откройте XCode и создайте приложение на основе представления с именем “iTennis

screenshot_01

Распаковав архив с изображениями, перетащите их все в относящуюся к проекту папку “Resources“. После этого она должна выглядеть так:

screenshot_02

Мы готовы приступать к программированию. Для начала установим связи IBOutlet, чтобы взаимодействовать с изображениями через код. Еще одна задача — добавить к игре ряд переменных, которые понадобятся позже. Откройте “iTennisViewController.h” и внесите следующий код:

screenshot_05

Как видим, спецификаторов IBOutlet у нас порядочно. Это объясняется количеством объектов, с которыми необходимо взаимодействовать. Переменными “ballVelocity” и “gameState” пока можно пренебречь. Итак, мы готовы к созданию интерфейса. Дважды щелкнув на файле “iTennishViewController.xib“, откроем его в редакторе Interface Builder. На видео ниже я настраиваю интерфейс.

Видео. Создание интерфейса. Нажмите на ссылку чтобы проиграть. (13 мб)

Установив связи, закройте редактор IB и вернитесь в XCode. Теперь нужно настроить несколько постоянных величин. В принципе, можно их жестко запрограммировать, но в качестве констант значения проще редактировать, отлаживая механизм игры. Откройте файл “iTennisViewController.m” и добавьте следующий код:

screenshot_06

Остановлюсь подробнее на задаче констант. Две первые — состояния игры. С их помощью мы определяем, что отображается на экране — пауза, запущенная игра, название. Позже мы добавим к игре еще несколько состояний. Две следующие переменные — значения скорости полета мяча. Поскольку игра двухмерная, вектор скорости может складываться из значений X и Y. Следующая строка синтезирует переменные, с помощью которых мы автоматически создадим методы “getter” и “setter“. Теперь прописываем метод “viewDidLoad“. Добавьте следующий код:

screenshot_07

Для начала установим состояние игры на паузу — ведь она не запускается сразу же после загрузки интерфейса. Теперь создаем вектор скорости мяча. Откорректируйте заданные ранее константы, увеличив или уменьшив его скорость. Следующим шагом приступаем к созданию экземпляра класса “NSTimer“. Первый параметр — “timestep“. Временной шаг мы установили равным 0,05 с — редактирование данного значения будет менять скорость всей игры. Настраиваем параметр “target”, сообщающий таймеру о расположении функции обратного вызова “callback“. Теперь переходим непосредственно к ней. Предлагаем таймеру вызывать “self.gameLoop” каждые 0,05 с. Опция “userInfo” нас не интересует. Последний параметр сообщает таймеру о необходимости повтора.

Задав начальные значения, создадим цикл игры. Добавьте приведенный ниже метод:

screenshot_08

Для начала проверим, находится ли игра в запущенном состоянии (на паузе движение мяча нам ни к чему). Если игра не запущена, выводится заданная ранее метка “tapToBegin“, предлагающая пользователю нажать на экран для запуска игры.
Если игра запущена, начинаем перемещать мяч в соответствии с вектором скорости. Следующие несколько строк отвечают за проверку отскока. Если мяч попал в область экрана, значит, его вектор его движения нужно обратить, имитируя “отскок”. Без этого кода мяч просто улетит за пределы экрана.
Последним фрагментом пропишем метод “touchesBegan“. С его помощью мы будет запускать игру из состояния паузы. Добавьте следующий код:

screenshot_09

Сначала этот код проверяет, находится ли игра в состоянии паузы. В случае подтверждения метка “tapToBegin” скрывается — игра переходит в рабочее состояние. Позже мы напишем код, который в данной функции будет контролировать ручное управление пользователя игрой.
Будучи сознательными разработчиками приложений для iPhone, очистим все выделенные ранее ресурсы, добавив к методу “dealloc” следующий код:

screenshot_10

На этом первую часть урока по созданию игры можно считать завершенной. Исходный код можно загрузить отсюда. Не забываем комментировать. :)

Исходный код скачать можно [здесь]

Текст оригинальной статьи на английском языке [здесь]

Уважаемые читатели, данный материал был переведен и подготовлен к публикации проектом LookApp.ru, при публикации на другом сайте ссылка на LookApp.ru обязательна.

1 звезда2 звезд3 звезд4 звезд5 звезд (7 голосов, средний: 5.00 из 5)
Загрузка ... Загрузка ...


3 Responses to “Уроки iPhone SDK: (Часть 1) Программирование игр на iPhone. “Пишем” игру iTennis.”

  1. 1. BoлшэбникЪ Says:

    Хорошо написано. А это все на основе личного опыта? :)

  2. 2. SDK 4.2 Says:

    Все работает, проверенно на xCode 4.1

  3. 3. Boo Says:

    Я когда пытаюсь синтезировать рисунки XCode ругается, говорит “Type of property ‘ball’ (UIImageView) does not match type of ivar ‘ball’ (UIImage *_strong)”
    интересно что не так я сделал?

Оставьте комментарий