Май 17

Часть 2 — взаимодействие с пользователем, простейший интеллект, логика игры.

В очередном уроке по программированию игр на iPhone рассмотрим основы взаимодействия с пользователем, простейшей интеллект и логику игры. Мы научимся обнаруживать простые столкновения, чтобы знать, когда мяч соприкасается с ракеткой. Идя навстречу многочисленным пожеланиям, я добавляю к урокам раздел “Задачи”, где буду давать дополнительные советы по освоению программирования. Итак, приступим. Для начала откройте код из первой части урока.

Взаимодействие с пользователем.

Первым делом приступим к реализации взаимодействия с пользователем. Все, что нам нужно, — перемещать точку нахождения ракетки X в точку Х касания экрана пользователем. Это крайне простая реализация, которую можно серьезно усовершенствовать (подробнее об этом в “Задачах” в конце урока). Откройте файл “iTennisViewController.m” и добавьте следующий код:

screenshot_012 Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Комментариев: 4 »

Май 17

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

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

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

screenshot_011

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

Продолжить чтение »

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

Май 17

В этом уроке мы научимся создавать в редакторе Interface Builder интерфейс и привязывать его к собственному коду. Займемся мы этим на примере объектов “UITextField“, “UILabel” и “Button“. Сразу предупреждаю, что урок длинный, поскольку я буду подробно расписывать каждый шаг. При желании для начала просмотрите его, чтобы получить общее представление. Вот как будет работать приложение:

  1. Пользователь жмет на текстовое поле, вызывая клавиатуру iPhone.
  2. Пользователь вводит имя на клавиатуре.
  3. Пользователь нажимает кнопку.
  4. Появляется приветственная надпись с его именем (напр., “Hello Brandon!”)
  5. Если текст не набран, появляется предложение его ввести (напр., “Please Enter Your Name”)

В этом уроке мы научимся:

  • Создавать новое приложение на основе представления (view-based).
  • Создавать простой пользовательский интерфейс.
  • Писать код для привязки к интерфейсу.
  • Устанавливать связи между интерфейсом и кодом.
  • Обновлять интерфейс в зависимости от действий пользователя. Продолжить чтение »
    1 звезда2 звезд3 звезд4 звезд5 звезд (5 голосов, средний: 5.00 из 5)
    Загрузка ... Загрузка ...
    Комментариев: 9 »

Май 16

bickboxx-1Думаю, все знакомы с эмуляторами ударных установок. Сделать такое приложение довольно просто. В этой статье мы создадим Bickboxx — реальное приложение из iTunes App Store.
Если хотите получить представление о том, чем мы займемся, скачайте Bickboxx из iTunes App Store (бесплатно). Исходный код можно скачать [здесь]. Его можно свободно загружать, сообщать о найденных проблемах — вплоть до создания собственных версий с изменениями, которые считаете целесообразными.

Примечание: для работы с уроком исходный код скачивать необязательно.

Начинаем.

Создайте в XCode новый проект на основе представления (View-based) и присвойте ему имя “Bickboxx“. Продолжить чтение »

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

Май 15

Вот мы и добрались до второй части урока по настройкам приложения. В этот раз нам предстоит разобраться со значениями для него по умолчанию. Сделаем мы это по методу applicationDidFinishLoading. Те, кто еще не прочел первую часть урока, могут сделать это [здесь] (все рассматриваемые ниже файлы были созданы на первом этапе).

Для начала откроем файл Root.plist и укажем для Title значение “RootPList” (в противном случае предложенный ниже код может не работать — по крайней мере, у меня дело обстояло именно так).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
FileName: ApplicationPreferencesTutorialAppDelegate.m
//Здесь мы указываем значения по умолчанию
NSString *textValue = [[NSUserDefaults standardUserDefaults] stringForKey:@"textEntry_Key"];

//Если первое значение равно нулю, значит, настройки по умолчанию не заданы.
if(textValue == nil)
{
//Получаем доступ к бандлу
NSString *bPath = [[NSBundle mainBundle] bundlePath];
NSString *settingsPath = [bPath stringByAppendingPathComponent:@"Settings.bundle"];
NSString *plistFile = [settingsPath stringByAppendingPathComponent:@"Root.plist"];

//Получаем из словаря массив настроек
NSDictionary *settingsDictionary = [NSDictionary dictionaryWithContentsOfFile:plistFile];
NSArray *preferencesArray = [settingsDictionary objectForKey:@"PreferenceSpecifiers"];

//Временные переменные
NSDictionary *item;
NSString *textEntry_Key;
NSString *readOnly_Key;
NSString *toogle_Key;
NSString *slider_Key;
NSString *colors_Key;

//Циклический поиск в массиве (элемента preferencesArray)
{
//Получение ключа элемента
NSString *keyValue = [item objectForKey:@"Key"];

//Получение значения по умолчанию из файла plist
id defaultValue = [item objectForKey:@"DefaultValue"];

if([keyValue isEqualToString:@"textEntry_key"])
textEntry_Key = defaultValue;

if([keyValue isEqualToString:@"readOnly_key"])
readOnly_Key = defaultValue;

if([keyValue isEqualToString:@"toogle_key"])
toogle_Key = defaultValue;

if([keyValue isEqualToString:@"slider_key"])
slider_Key = defaultValue;

if([keyValue isEqualToString:@"colors_key"])
colors_Key = defaultValue;
}

//Теперь, когда у нас есть все значения по умолчанию,
//Создаем его здесь.
NSDictionary *appPrerfs = [NSDictionary dictionaryWithObjectsAndKeys:
textEntry_Key, @"textEntry_key",
readOnly_Key, @"readOnly_key",
toogle_Key, @"toogle_key",
slider_Key, @"slider_key",
[NSNumber numberWithInt:1], @"slider_key",
[NSNumber numberWithInt:1], @"colors_key",
nil];

//Регистрируем и сохраняем файл на диск
[[NSUserDefaults standardUserDefaults] registerDefaults:appPrerfs];
[[NSUserDefaults standardUserDefaults] synchronize];

Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Комментариев: 2 »

Май 15

В этом уроке мы рассмотрим создание файла настроек (settings bundle), отображаемого в меню Settings. Вот что мы получим на выходе в окне Application Preferences:

finalapp

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

Выберите файл проекта в XCode (в проводнике файлов слева) и выполните File -> New File. Щелкнув на меню, выберите Settings Bundle, затем Next. Присвойте файлу имя и подтвердите кнопкой Finish. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Нет комментариев »

Май 15

В этом уроке мы создадим приложение на основе представления (view-based), работающее исключительно в альбомной ориентации (landscape-mode only) (экран по ширине больше, чем по высоте) вместо привычной книжной (где экран выше и уже).

Создаем новое view-based приложение.

Откройте Xcode.

Создайте новый проект iPhone OS Project, выполнив File -> New Project

picture-3

Убедитесь, что пункт “Application” (Приложение) относится к меню “iPhone OS“, затем выберите “View-Based Application“.

Щелкнув на кнопке “Choose...”, наберите в поле “Save As:” название “LandscapeOnlyViewBasedTutorial“, подтвердив его кнопкой “Save“. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (Оцените приложение)
Загрузка ... Загрузка ...
Нет комментариев »

Май 15

Предполагается, что читатель уже имеет определенное представление о среде разработки приложений iPhone SDK (при необходимости можно скачать ее бесплатно отсюда http://developer.apple.com/iphone/). В этот раз наша задача — создать программу для чтения простой RSS-ленты (разумеется, это будет The Apple Blog).

picture-26

Начинаем.

  1. Откройте Xcode, перейдите в меню “File” и щелкните на элементе “New Project…“.
  2. В списке слева под меню “iPhone OS” щелкните на “Application“.
  3. Справа выберите “Navigation-Based Application“, затем воспользуйтесь кнопкой “Choose…“. Теперь нужно выбрать имя и путь. Наберите название “TAB RSS reader“.
  4. Сохраните проект, куда сочтете нужным. Продолжить чтение »
    1 звезда2 звезд3 звезд4 звезд5 звезд (2 голосов, средний: 5.00 из 5)
    Загрузка ... Загрузка ...
    Комментариев: 9 »

Май 15

Введение.

В этом обучающем материале я дам Вам краткое введение о том, как начать писать своё первое iPhone приложение. Для начала Вам потребуется последняя версия iPhone SDK, которую можно загрузить отсюда. С SDK Вы получаете некоторые сервисные программы, такие как Xcode, Interface Builder (конструктор интерфейса), iPhone simulator (симулятор iPhone) и многие другие. Первое приложение обычно называют “Hello World”, но я назвал своё первое приложение “Hello Universe”, потому как революционное устройство требует смены имени.

Цель приложения “Hello Universe”.

Используя это приложение, пользователь сможет ввести его/ее полное имя и, нажав на соответствующую кнопку, увидеть появившееся сообщение вида “John Doe says Hello Universe!!!” (Джон До говорит Привет Вселенной!!!). Данное приложение даст Вам не только представление о некоторых сервисных программах, но также покажет, как можно использовать средства управления, отвечать на события и создавать новые визуальные объекты. Продолжить чтение »

1 звезда2 звезд3 звезд4 звезд5 звезд (5 голосов, средний: 3.60 из 5)
Загрузка ... Загрузка ...
Комментариев: 27 »

Май 14

Приветствую в четвертой, заключительной части урока, где мы освоим панорамирование — перемещение изображения влево–вправо. Здесь мы частично будем работать с подготовленным в предыдущих материалах кодом.
Наша задача — сделать так, чтобы изображение сдвигалось влево или вправо, когда пользователь, нажав на него, перемещает по экрану палец. Для этого воспользуемся методом touchesMoved, исходный код для которого будет выглядеть так:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

if([timer isValid])
[timer invalidate];

NSSet *allTouches = [event allTouches];

switch ([allTouches count])
{
case 1: {
//Изображение панорамируется (смещается влево/вправо)
UITouch *touch = [[allTouches allObjects] objectAtIndex:0];
CGPoint centerPoint = [touch locationInView:[self view]];

[imgView setCenter:centerPoint];

} break;
case 2: {
//Изображение увеличивается или уменьшается.

UITouch *touch1 = [[allTouches allObjects] objectAtIndex:0];
UITouch *touch2 = [[allTouches allObjects] objectAtIndex:1];

//Рассчитывается расстояние между двумя пальцами.
CGFloat finalDistance = [self distanceBetweenTwoPoints:[touch1 locationInView:[self view]]
toPoint:[touch2 locationInView:[self view]]];

//Проверка на увелечение/уменьшение.
if(initialDistance > finalDistance) {
NSLog(@"Zoom Out");
}
else {
NSLog(@"Zoom In");
}

} break;
}

}

Продолжить чтение »

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