Оглавление:

Применение подсчета очков в петанке / жен-де-буль: 7 шагов
Применение подсчета очков в петанке / жен-де-буль: 7 шагов
Anonim
Приложение для ведения счета в петанке / жен-де-буль
Приложение для ведения счета в петанке / жен-де-буль
Приложение для ведения счета в петанке / жен-де-буль
Приложение для ведения счета в петанке / жен-де-буль
Приложение для ведения счета в петанке / жен-де-буль
Приложение для ведения счета в петанке / жен-де-буль

Это приложение для ведения счета в петанке (иногда называемое Jeu de Boules) для Android. Это приложение можно использовать как есть, и оно полностью функционально. Или его можно использовать в сочетании с дисплеем «Матрица петанка» [отдельные инструкции]. Эта часть проекта проста, поскольку не требуется никакого оборудования, только бесплатное программное обеспечение.

Запасы

  1. Телефон, совместимый с Android (желательно)
  2. Устройство с доступом к Интернет-браузеру, предпочтительно компьютер с мышью для кодирования и проектирования.
  3. Учетная запись в MIT App Inventor (бесплатно)
  4. Простой пакет для рисования, например Pixlr или GIMP (все бесплатно)
  5. Веб-сайт ресурса значков, например Значки пользовательского интерфейса материалов или Material.io (все бесплатно)

Программное обеспечение и исходный код:

Вы можете найти ссылку на приложение Actual Petanque внизу этой страницы. Здесь вы также можете найти ссылку на полный исходный код (извините за это, но Instructables не позволяет мне загружать файл.aia…).

Шаг 1. Анатомия и навигация по приложению

Анатомия и навигация в приложении
Анатомия и навигация в приложении

Дизайн и навигация приложения довольно просты. Всего есть 4 экрана:

  1. Главный экран №1 (на котором мы проводим большую часть времени, ведя счет)
  2. Экран матчей # 2 (где мы находим список всех сыгранных матчей и результатов)
  3. Экран настроек №3 (настройки приложения, административные задачи, отладка и т. Д.)
  4. Об экране №0 (информация, логотип и где получить инструкции по сборке, например, ЭТА веб-страница)

Расположение экранов и расположение кнопок оптимизировано для использования одной рукой и одним пальцем (большим пальцем). Кнопки в нижнем меню навигации позволяют перейти к экранам справа или слева от текущего экрана. Итак, кнопка 0 приведет вас к экрану «О программе» №0. А кнопка №1 возвращает вас к главному экрану №1 и т. Д., Usw.

Прозрачный? Тогда продолжим …

Шаг 2: Дизайн (базы) данных

Дизайн данных (базы)
Дизайн данных (базы)
Дизайн данных (базы)
Дизайн данных (базы)

Теперь, прежде чем мы создадим первый экран, нам нужно место для хранения всех данных, которые это приложение будет использовать. Для этого мы будем использовать простейшую форму, которую может предложить MIT App Inventor: TinyDB. Это довольно ограничено, поскольку он может хранить только пару ключ / значение, но с небольшой помощью и некоторыми уловками мы можем заставить его делать все, что мы хотим.

Мы будем хранить два типа значений:

  • Мы будем хранить 10 простых значений ключа / значения для всего приложения (как показано в функции CreateIgnoreList выше).
  • И более сложный ключ / значение, хранящий все данные завершенных игр в одной строке с ключом / значением CurrentMatch, выступающим в качестве первичного ключа * (как показано в функции «SaveScore» выше). Эти поля в этой одной паре ключ / значение разделены невизуальным управляющим символом '\ t'. Этот управляющий символ позволит нам на экране совпадений №2 извлекать все значения в отдельные компоненты, а также отображать и сортировать их. Но об этом подробнее в разделе Экран 2 (совпадения).

* Дополнительная информация о том, как создать PrimaryKey для TinyDb в AppInventor на YouTube.

Шаг 3: Экран 1 (Главный)

Экран 1 (Главный)
Экран 1 (Главный)
Экран 1 (Главный)
Экран 1 (Главный)
Экран 1 (Главный)
Экран 1 (Главный)

Это наш экран «рабочей лошадки», на котором мы будем проводить большую часть времени как пользователь приложения. Это также отправная точка для нашего приложения MIT App Inventor.

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

  • Нажмите «Команда 1», и вы получите уведомление, которое позволит вам изменить название «Команда 1». После изменения это изменит эту «Команду 1» на имя, которое вы выбрали. Это также имя, которое будет использоваться для отражения вашей «игры» и «матча» (на следующих экранах).
  • «Счет Команды 1» и «Счет Команды 2» изменяются в зависимости от нажатия кнопок «+» и «-» в нижней части каждой соответствующей команды. Если оценка равна 0 и нажата кнопка «-», подается звуковой и визуальный сигнал, но оценка остается 0 (разумеется).
  • Если «счет» достигает 13, происходит несколько вещей: подается визуальный сигнал, окна уведомлений показывают результаты (рисунок 2) и предоставляют вам возможность либо начать новую игру, либо новый матч (и, конечно же, новый игра). Однако, если вы выбрали не классический подсчет очков в петанк, а оценку разницы в 2 очка (которую можно выбрать на экране настроек №3), то в зависимости от разницы между двумя командами одна будет объявлена победителем (как показано на рисунке №3).).
  • «Счет» в текущем «матче» отображается в центре экрана между счетами «Команда 1» и «Команда 2». И это будет продолжаться до тех пор, пока не начнется новый «матч».
  • Для перехода к другим экранам вы также можете «провести пальцем влево», чтобы отобразить экран «О себе» № 0, или «проведите пальцем вправо», чтобы отобразить экран совпадений № 2.

Наконец, внизу находится панель меню навигации. Он всегда располагается в абсолютном низу экрана, независимо от его размера. Даже если используется функция Android «Разделенный экран». В нижнем меню навигации есть 3 кнопки:

  1. Внизу слева: "?" Кнопка переместится влево и снова отобразит начальный экран «О программе» (# 0).
  2. Внизу в центре: кнопка сброса (которая выглядит как «@» со стрелкой) позволит вам начать новую игру или новый матч в «любое время» в игре, просто нажмите нижнюю среднюю кнопку «Сброс». Это также откроет окно с уведомлением, в котором вас попросят начать новую игру или новый матч.
  3. Внизу справа: кнопка «->» переместится вправо и покажет обзор всех матчей (№2).

Шаг 4: Экран 2 (совпадения)

Экран 2 (совпадения)
Экран 2 (совпадения)
Экран 2 (совпадения)
Экран 2 (совпадения)
Экран 2 (совпадения)
Экран 2 (совпадения)

Хотя этот экран очень прост в визуальном оформлении, внутри него более интересный код, чем на других экранах. Но прежде чем мы перейдем к этому, давайте посмотрим, что он делает на экране:

Под метками «Команда 1» и «Команда 2» находится список всех Матчей и их соответствующие общие баллы. Это отсортированный список, в котором «последний сыгранный матч» вверху и «самый старый сыгранный матч» внизу.

Посередине между «Команда 1» и «Команда 2» находится кнопка, которая может использоваться для сортировки списка совпадений в порядке возрастания или убывания. Значок будет меняться в зависимости от выбранного направления сортировки.

Для перехода к другим экранам вы также можете «провести пальцем влево», чтобы отобразить главный экран №1, или «проведите пальцем вправо», чтобы открыть экран настроек №3.

Наконец, внизу находится панель меню навигации. Он всегда располагается в абсолютном низу экрана, независимо от его размера. Даже если используется функция Android «Разделить экран» (как показано на Рисунке № 2). В нижнем меню навигации есть 3 кнопки:

  1. Внизу слева: "?" Кнопка переместится влево и снова отобразит начальный экран «О программе» (# 0).
  2. Внизу в центре: кнопка сброса (которая выглядит как «@» со стрелкой) позволит вам начать новую игру или новый матч в «любое время» в игре, просто нажмите нижнюю среднюю кнопку «Сброс». Это также откроет окно с уведомлением, в котором вас попросят начать новую игру или новый матч.
  3. Внизу справа: кнопка «->» переместится вправо и покажет обзор всех матчей (№2).

Центрирование списка совпадений на экране:

Я хотел показать список совпадений по центру экрана с разделителем «-» в центре. Теперь, поскольку количество игр, которые выиграла команда, может составлять 1 или более цифр, а фактическое название каждой команды может отличаться по размеру, мы не можем просто поместить это в один список. Все это выглядело бы примерно так:

Команда 1 0-1 Команда 2

Foo 1 - 42 FooBar

Таким образом, метка для разделителя «-» должна быть отцентрирована. С выравниванием по правому краю полей «Название команды 1» и «Оценка команды 1» по левому краю разделителя «-». И «Оценка команды 2» и «Название команды 2» выровнены по левому краю по правому краю разделителя «-». В итоге мы получаем вот так:

"Команда 1 0" "-" "1 Команда 2" "Foo 1" "-" "42 FooBar"

И поскольку я не знаю, как долго будет наш список совпадений, я помещаю все «Имя команды 1» и «Оценка команды 1» в одну и ту же метку HTMLFormat, и после каждого совпадения я вставляю и помещаю следующий в NewLine..

Подготовьте вещи к сортировке:

Как упоминалось на этапе проектирования базы данных, я могу хранить только одно значение. Поэтому я сохранил значения «Имя команды 1», «Оценка команды 1», «Оценка команды 2» и «Имя команды 2», разделенные невизуальным управляющим символом «\ t». Теперь мне нужно сначала получить их из базы данных (как показано на рисунке №3).

Фрагмент кода показывает, что мы сначала проверяем, установлен ли Debug-flag (это делается на каждом экране этого приложения. Затем создается список ключей (пар s / Value), которые нам нужно игнорировать при просмотре базы данных. Нас интересуют только данные Match, ничего больше. Затем мы перебираем базу данных, игнорируя все ключи в Ignorelist, и создаем новый список с двумя значениями:

  1. PrimaryKey (помните, что это число, которое указывает номер совпадения, начиная с Match # 1)
  2. Строка, содержащая значения для "Название команды 1", "Оценка команды 1", "Оценка команды 2" и "Название команды 2".

Затем мы просматриваем список и создаем новый список списков, в котором отдельные поля разделены на отдельные элементы (как показано на рисунке 4):

DataToSort -> Индекс списка 1 -> Индекс списка 1 (номер ПК)

-> Индекс списка 2 (Название команды 1) -> Индекс списка 3 (Оценка команды 1) -> Индекс списка 4 (Оценка команды 2) -> Индекс списка 5 (Название команды 2) -> Индекс списка 2 -> Индекс списка 1 (Номер ПК) -> Индекс списка 2 (Название команды 1) ->… ->…

После этого мы показываем некоторую отладочную информацию, если флаг Debug имеет значение True. И теперь мы можем, наконец, отсортировать наш Список (списков).

BubbleSort * Список списков:

На рисунке №5 показан полный список BubbleSort * нашего списка списков. Этот алгоритм, конечно, можно использовать для списков любого размера, независимо от того, сколько указателей присутствует.

* Более подробную информацию о простоте алгоритма BubbleSort можно найти на YouTube.

Шаг 5: Экран 3 (Настройки)

Экран 3 (Настройки)
Экран 3 (Настройки)

Этот экран выглядит очень загруженным и имеет множество элементов визуального оформления. Но в итоге есть всего 5 тумблеров:

  1. «Fred Scoring»: если включен, он изменяет поведение при подсчете очков и определяет победителя на основе разницы в 2 балла при 13, а не только на том, кто первым наберет 13 очков.
  2. «Bluetooth Pairing»: (если включено), если включено «On», включает сопряжение этого приложения с внешним дисплеем Petanque.
  3. «Сбросить совпадения»: если он включен, все совпадения будут сброшены / удалены и начнется с совпадения 1.
  4. «Сбросить базу данных»: если установлено «Вкл.», Будут удалены / сброшены все матчи и все другие настройки приложения к исходным настройкам, включая текущий счет, матчи, названия команд, настройки отладки, порядок сортировки, настройки luetooth (при включении) и т. Д..
  5. «Отладка»: если установлено «Вкл.», Информация об отладке будет отображаться во всем приложении в квадратных скобках «». Такие вещи, как 'Общее количество записей, Общее количество переменных, Номер текущего совпадения, Номер ПК игры и т. Д.

Наконец, внизу находится панель меню навигации. Он всегда располагается в абсолютном низу экрана, независимо от его размера. Даже если используется функция Android «Разделенный экран» или экран просто выше, чем экран может отображать из-за количества элементов на экране. В этом случае вы всегда можете прокручивать, проводя вверх и вниз. В этом нижнем меню навигации всего 1 кнопка:

Внизу слева: кнопка «<-» переместится влево и покажет начальное отображение экрана обзора всех матчей (№2)

Шаг 6: Экран 0 (О программе)

Экран 0 (О программе)
Экран 0 (О программе)

Последний экран. Просто информация, не более того.

Этот экран отображается при самом первом запуске этого приложения. После этого он больше никогда не будет отображаться, если только вы не выберете это, нажав "?" кнопку на главном экране # 1.

В нижней строке меню навигации есть только 1 кнопка, и это возвращает вас к главному экрану №1.

Шаг 7. Программное обеспечение и / или исходный код

Программное обеспечение и / или исходный код
Программное обеспечение и / или исходный код

Наконец-то.

Вы можете скачать приложение с этого места на Google Диске.

Вы можете загрузить код из записи MIT App Inventor Gallery для Pentaque (рисунок №1). Это позволит вам сохранить проект в вашей собственной учетной записи MIT App Inventor (вы можете переименовать его как хотите). Оттуда вы можете увидеть весь код в редакторе блоков, экраны в редакторе Designer, а также все медиа и ресурсы, используемые для этого проекта.

Вы также можете загрузить исходный код (файл.aia, который на самом деле является файлом.zip) из этого местоположения на Google Диске.

Рекомендуемые: