В копилку Игрока
Поскольку мы имеем дело с мобильными телефонами – персональными устройствами, в списке рекордов в большинстве случаев будете присутствовать только вы. Поэтому ввод имени рекордсмена не столь необходим.
Поскольку нет необходимости сортировать имена, вам придется сортировать лишь счет игры. Если вы вспомните, то в игре Space Out счет– это четырехразрядное число (то есть меньше 10000), что означает, переменная типа int хорошо подходит для его хранения. Однако вы знаете, что данные в хранилище записей хранятся как массивы байтов. Следовательно, необходимо конвертировать данные в массив байтов и обратно.
Давайте рассмотрим конвертирование целых чисел в байтовый массив с точки зрения создания одной записи. Идея заключается в том, чтобы одно целое число преобразовать в массив типа byte. Ниже приведен код, выполняющий это:
byte[] recordData = Integer.toString(hiScore).getBytes();
В этом примере рекорд хранится в переменной hiScore, которая сначала преобразуется в строку, для чего вызывается метод Integer.toString(). Затем эта строка преобразуется в массив байтов методом getBytes(). Все, что необходимо, – это одна строка кода, и целое число преобразовано в массив байтов. На рис. 19.2 представлена графическая иллюстрация этого процесса.
Преобразование данных о рекордах в нужный формат – это важная задача, которая решается обратным конвертированием. Используя тип string как промежуточный тип, массив байтов преобразуется в целое число. Приведенный ниже код выполняет это:
hiScore = (Integer.parseInt(new String(recordData, 0, len)));
Конструктор String(), используемый в этом коде, принимает массив байтов, смещение и число конвертируемых байтов. Переменная len, которая хранит число конвертируемых данных, содержит число, возвращенное методом getRecord(), считывающим запись. Затем строка передается в статический метод Integer.parseInt(), преобразующий строку в целое число. Рисунок 19.3 иллюстрирует процесс обратного конвертирования (массива байтов в целое число).
Когда вы не работаете с хранилищем записей, рекорды – это обычные целые числа. Иначе говоря, все эти сложности необходимы лишь для преобразования данных при работе с хранилищем записей. Еще один случай, в котором необходимо конвертировать числа в строку, – вывод рекордов на экран, для чего необходимо использовать метод drawString().
Помните, что предыдущая строка кода считывает лишь одну запись из хранилища. В реальных мобильных играх список рекордов состоит из нескольких записей. Поэтому чтение и запись данных в хранилище должны выполняться в цикле. В этом случае вы сможете с легкостью выполнить все необходимые задачи, написав минимум кода.
Создание игры Space Out 2
Игра Space Out, созданная в предыдущей главе, идеально подходит для того, чтобы добавить в нее список рекордов. Оставшаяся часть главы будет посвящена добавлению списка рекордов в игру, и не только. Список рекордов будет выводиться на экран вместе с названием игры – растровым изображением.