Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

В общем случае Activity (активность) — это потомок класса Activity, кото­рый отображает форму приложения и, как правило, занимает весь экран. Чтобы создать активность, ее нужно унаследовать от класса Activity и создать метод onCreate(). Более простыми словами, активность это одна страница браузера, которую в текущий момент просматривается в Интернете. С помощью такой конструкции можно получить пустой экран, который без layout-файла не пред­ставляет интереса.

Листинг 5.1 – Класс Activity

public class MainActivity extends Activity {

©Override

public void onCreate(Bundle savedInstanceState){ super. onCreate(savedInstanceState);

}

}

Layout — это компоновка, или макет отображаемой страницы, которая хранится в формате xml-файла. Такое разделение на layout и активность дает разработчи­ку возможность, не изменяя код, скорректировать внешний вид отображаемой страницы. Таким образом можно регулировать ориентацию и размер экрана, а так же язык интерфейса.

Далее приведен layout-файл (листинг 5.2), который используется для создания главного экрана приложения.

Листинг 5.2 – Layout-файл, главного экрана.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas. /apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_column="0">

  <EditText
  android:layout_width="200dp"
  android:layout_height="wrap_content"
  android:id="@+id/editText"
  android:layout_gravity="center_horizontal"
  android:textAlignment="gravity"
  android:inputType="number"
  android:ems="10"
  android:layout_marginTop="@dimen/abc_action_bar_stacked_tab_max_width"
  android:gravity="center"
  android:layout_weight="0" />

  <Button
  android:id="@+id/btnstart"
  android:layout_width="200dp"
  android:layout_height="wrap_content"
  android:text="Далее"
  android:layout_gravity="center_horizontal"
  android:layout_weight="0"  />

</LinearLayout>

НЕ нашли? Не то? Что вы ищете?

В данном файле создается линейный layout и два виджета EditText и Button с некоторым параметрами. Главным из данных параметров является имя элемен­та, которое записывается следующим образом android: id="@+id/ суть которого заключается в возможности вызова в Activity данного layout-файла и его видже­тов.

Далее необходимо получить доступ к упомянутому layout-файлу, для че­го используется метод setContentView(). Доступ к виджетам Button и EditText производится через программный код, что в конечном итоге приводит к тому, что MainActivity выглядит так, как показано на рисунке 5.4.

Рисунок 5.4 – Виджет MainActivity.

Button — класс, унаследованный от TextView, один из самых распростра­ненных в программировании, используется для получения заданной реакции при нажатии. EditText — это текстовое поле, которое можно редактировать, данный класс наследуется от класса TextView.

Для отображения следующей страницы требуется создать новую актив­ность (options), которая является потомком MainActivity. Для вызова активно­сти (options) с нужными параметрами обрабатывается нажатие кнопки «Далее». При этом создается переменная класса Intent и передается параметр в новую активность (options). Этот параметр (хранящий основание новой системы счис­ления) считывается из переменной класса EditText.

Intent (намерение) — механизм для совершения какой-либо одной из опе­раций таких как: «отправить письмо», «открыть страницу в браузере» или как в данном случае «открыть новую активность».

При вызове активности (options) появляется окно, содержащее две кнопки «на время» и «на внимательность», которые заранее были созданы в layout - файле новой активности (листинг 5.3). При помощи активности (options), нажав на одну из упомянутых кнопок можно выбрать соответствующий режим тренировки.

Листинг 5.3 – Layout-файл, выбор режима игры.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas. /apk/res/android"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <Button
  android:id="@+id/btntime"
  android:layout_width="180dp"
  android:layout_height="wrap_content"
  android:text="На время"
  android:layout_gravity="center"
  android:layout_weight="10"  />

  <Button
  android:id="@+id/btnalert"
  android:layout_width="180dp"
  android:layout_height="wrap_content"
  android:text="Внимательность"
  android:layout_gravity="center"
  android:layout_weight="0"  />

</LinearLayout>

Для создания активности «на время» (notation) или «на внимательность» (alert) необходим layout-файл, где основным компонентом является табличный layout. Далее программно создается двумерный массив кнопок размерности 5х5. Помимо этого используются переменные класса TextView для отображения слу­чайного числа, которое нужно перевести, разрядов вводимого ответа, а так же суммарного результата и таймера.

TextView — один из самых распространенных виджетов, позволяющий отображать текст, без права редактирования пользователем.

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

На рисунке 5.4 представлен пример заполнения матрицы в двоичной системе счисления.

Пользователю нужно найти в данной матрице число 24, при переводе в двоичную систему запись которого имеет вид 11000. Матрица была сгенериро­вана таким образом, что в ней имеется несколько правильных решений. На­пример, последовательный ввод ячеек с адресами (1,4);(0,4);(0,3);(0,2);(0,1) или (1,1);(1,0);(2,0);(3,0);(4,0) будут правильными ответами для этой задачи.

Рисунок 5.4 – Заполнение массива в двоичной системе счисления.

На рисунке 5.5 представлен пример заполнения матрицы в восьмеричной системе счисления.

Пользователю нужно найти в данной матрице число 1180, при переводе в восьмеричную систему запись которого имеет вид 2234. Матрица была сгенериро­вана таким образом, что в ней имеется единственное правильное решение. Последовательный ввод ячеек с адресами (1,3);(2,3);(3,3);(3,4) будет правильным решением для этой задачи.

Рисунок 5.5 – Заполнение массива в восьмеричной системе счисления.

На рисунке 5.6 представлен пример заполнения матрицы в шестнадцатеричной системе счисления.

Пользователю нужно найти в данной матрице число 28896, при переводе в восьмеричную систему запись которого имеет вид 70Е0. Матрица была сгенериро­вана таким образом, что в ней имеется два варианта правильного решения. Последовательный ввод ячеек с адресами (2,0);(3,0);(4,0);(4,1) либо (2,0);(3,0);(3,1);(4,1) будет являться правильным решением для этой задачи.

Рисунок 5.6 – Заполнение массива в шестнадцатеричной системе счисления.

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

Самый трудоемкий этап разработки пришелся на создание определенного алгоритма заполнения, который бы соответствовал поставленной цели и был бы универсальным для всех решаемых задач. Для чего был разработан следующий алгоритм, гарантирующий наличие в исход­ной матрице как минимум одного решения (приложение 2, листинг 2.1).

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

После успешного размещения ответа оставшаяся часть таблицы заполня­ется случайными цифрами соответствующими системе счисления для перевода.

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

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5