×
Traktatov.net » Создание игр для мобильных телефонов » Читать онлайн
Страница 228 из 246 Настройки
...

В копилку Игрока

Поскольку мы имеем дело с мобильными телефонами – персональными устройствами, в списке рекордов в большинстве случаев будете присутствовать только вы. Поэтому ввод имени рекордсмена не столь необходим.

Поскольку нет необходимости сортировать имена, вам придется сортировать лишь счет игры. Если вы вспомните, то в игре Space Out счет– это четырехразрядное число (то есть меньше 10000), что означает, переменная типа int хорошо подходит для его хранения. Однако вы знаете, что данные в хранилище записей хранятся как массивы байтов. Следовательно, необходимо конвертировать данные в массив байтов и обратно.

Давайте рассмотрим конвертирование целых чисел в байтовый массив с точки зрения создания одной записи. Идея заключается в том, чтобы одно целое число преобразовать в массив типа byte. Ниже приведен код, выполняющий это:

byte[] recordData = Integer.toString(hiScore).getBytes();

В этом примере рекорд хранится в переменной hiScore, которая сначала преобразуется в строку, для чего вызывается метод Integer.toString(). Затем эта строка преобразуется в массив байтов методом getBytes(). Все, что необходимо, – это одна строка кода, и целое число преобразовано в массив байтов. На рис. 19.2 представлена графическая иллюстрация этого процесса.

Рис. 19.2. Чтобы преобразовать целое число в массив байтов, сначала необходимо конвертировать его в строку

Преобразование данных о рекордах в нужный формат – это важная задача, которая решается обратным конвертированием. Используя тип string как промежуточный тип, массив байтов преобразуется в целое число. Приведенный ниже код выполняет это:

hiScore = (Integer.parseInt(new String(recordData, 0, len)));

Конструктор String(), используемый в этом коде, принимает массив байтов, смещение и число конвертируемых байтов. Переменная len, которая хранит число конвертируемых данных, содержит число, возвращенное методом getRecord(), считывающим запись. Затем строка передается в статический метод Integer.parseInt(), преобразующий строку в целое число. Рисунок 19.3 иллюстрирует процесс обратного конвертирования (массива байтов в целое число).

Рис. 19.3. Чтение записи рекорда их хранилища записей требует обратного конвертирования

Когда вы не работаете с хранилищем записей, рекорды – это обычные целые числа. Иначе говоря, все эти сложности необходимы лишь для преобразования данных при работе с хранилищем записей. Еще один случай, в котором необходимо конвертировать числа в строку, – вывод рекордов на экран, для чего необходимо использовать метод drawString().

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

Создание игры Space Out 2

Игра Space Out, созданная в предыдущей главе, идеально подходит для того, чтобы добавить в нее список рекордов. Оставшаяся часть главы будет посвящена добавлению списка рекордов в игру, и не только. Список рекордов будет выводиться на экран вместе с названием игры – растровым изображением.