СЧЕТЧИК ПОДСЧЕТА ОЧКОВ. ИГРА “КАМЕНЬ. НОЖНИЦЫ. БУМАГА”

Поділитись

Давайте создадим программу в среде программирования MakeCode (URL-адрес сайта: https://makecode.microbit.org/), которая будет осуществлять подсчет очков в игре “Камень – ножницы – бумага”.

Это интересно…

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

Игроки считают вместе вслух «Камень… Ножницы… Бумага… Раз… Два… Три», одновременно качая кулаками. На счёт «Три» они одновременно показывают при помощи руки один из трех знаков: камень, ножницы или бумагу. Если игроки показали одинаковый знак, то засчитывается ничья. Победитель определяется по следующим правилам:

  • Бумага побеждает камень («бумага накрывает камень»).
  • Камень побеждает ножницы («камень ломает ножницы»).
  • Ножницы побеждают бумагу («ножницы разрезают бумагу»).

Итак, нам потребуется создать переменные для ведения счета, которые будут изменять свое значение.

Что это за переменные? Все просто:

  • Первая переменная определяет количество выигрышей игрока A.
  • Вторая переменная определяет количество выигрышей игрока B.
  • Третья переменная определяет количество сыгранных ничьей.

Итак, давайте теперь представим нашу будущую программу в виде псевдокода:

  • нажмите кнопку A, чтобы записать выигрыш для игрока A;
  • нажмите кнопку B, чтобы записать выигрыш для игрока B;
  • нажмите кнопку A и кнопку B одновременно, чтобы записать ничью.

Делаем вместе…

Реализуем пошагово написанный выше псевдокод и запрограммируем кнопки A, B и A+B на выполнение прописанных выше команд:

Шаг 1. Откроем среду программирования Microsoft MakeCode (URL-адрес сайта: https://makecode.microbit.org/) и создаем новый проект.

Для удобства назовем его следующим образом, например “Игровой счетчик” и т.п.

Шаг 2. В разделе “Variables” (переменные), создадим три новых переменных, нажав на “Make variable” (создать переменную) и назовем их следующим образом:

  • PlayerAWins” (игрок A победил);
  • PlayerBWins” (игрок B победил);
  • PlayersTie” (ничья, от англ. tie – ничья ).

Переменная при запуске программы принимает свое начальное значение. По умолчанию, для числовых переменных это значение равно 0. Оставим его для всех 3-х переменных и поместим их в обработчик событий “on start” (по запуску). При помощи выпадающего меню переменной, установим для каждой из них свое наименование.

Шаг 3. В нашей программе мы хотим отслеживать количество побед каждого игрока и количество раз, когда они играют вничью. Для этого мы предлагаем использовать программируемые кнопки A и B платы micro:bit.

Воспользуемся разделом “Input” (ввод) и разместим в рабочей области 3 раза подряд, блок “on button A pressed” (когда кнопка A нажата). С помощью выпадающего списка поменяем в двух неактивных блока кнопку A на B и программируемую кнопку A на A+B, которая является еще одним обработчиком события.

Программируемые кнопки необходимы для подсчета очков каждого из игроков и их ничьей. Разместим внутрь каждой из программируемых кнопок переменную “change PlayersAWins by 1” (изменить переменную “Игрок A победил на 1) из раздела “Variables” (переменные), заменяя в двух соответствующих блоках ее наименование на “PlayersBWins” и “PlayersTie”.

Шаг 4. Когда мы нажимаем на одну из программируемых кнопок, мы, тем самым, сообщаем программе о начислении очков одному из игроков или о ничьей, когда игровая партия сыграна в ничью.

Используем светодиодный экран платы для вывода результата (победителя партии) с помощью блока “show leds” (показать светодиоды) из раздела “Basic” (основное).

Добавим блок “show leds” (показать светодиоды) внутрь каждой из программируемых кнопок и запрограммируем светодиоды на появление соответствующих букв:

  • A (внутри программируемой кнопки “on button A pressed” (когда кнопка A нажата)),
  • B (внутри программируемой кнопки “on button B pressed” (когда кнопка B нажата)),
  • T (внутри программируемой кнопки “on button A+B pressed” (когда кнопка A + B нажата)).

Как вы могли заметить, в программу, вместе с боком “show leds” (показать светодиоды) добавлен блок “clear screen” (очистить экран). Он расположен в разделе “Basic” (основное), в подразделе “More” (больше).

Как вы думаете, что произойдет, если удалить из программы блок “clear screen” (очистить экран)? Попробуйте убрать этот блок и запустить программу снова.

Шаг 5. В завершении работы над счетчиком игры “Камень – ножницы – бумага”, напишем дополнительную программу для вывода на экран платы micro:bit очков (промежуточных или итоговых), подсчитанных каждой из 3-х введенных переменных: “PlayerAWins”, “PlayerBWins”, “PlayerTie”.

Добавим блок on shake” (по встряхиванию) и внутрь него разместим:

  • Блок “show string” (заменим надпись “Hello” на “Wins:”).
  • Блок “show leds” (запрограммируем появление буквы A).
  • Блок “show number” с установленным числовым значением.
  • Блок “pause (ms)” (изменим значение 100 на 1000 вручную).

Справочник начинающего программиста…

Блок “on shake” (по встряхиванию). Это еще один обработчик события, с помощью которого можно, например, запрограммировать появление числа при встряхивании платы, ее поворота влево/вправо, меняя и выбирая события из выпадающего списка меню при нажатии на галочку.

Осуществлять вывод заработанных очков каждой из переменных можно не только с помощью обработчика события “on shake” (по встряхиванию). Нажав на галочку, в выпадающем меню блока, вы сможете найти ряд других способов, в том числе: при повороте платы micro:bit влево, вправо и т.п. Для того, чтобы проверить, как это работает в эмуляторе, наведите курсор мыши на экран эмулятора и подвигайте компьютерную мышь вправо, влево, в зависимости от выбранного обработчика события.

Многие способы доступны только при взаимодействии с реальной платой micro:bit!

Если проверить данную программу, запустив ее на эмуляторе или реальной плате micro:bit, то можно заметить, что появляется число 0. Это связано с тем, что блок “show number” (показать число) не получил данные о том, значение какой переменной нужно выводить. Так как на светодиодах отображается буква A, то и выводить он должен значение переменной “PlayerAWins”. Чтобы это исправить, из раздела “Variables”, поместим блок “PlayerAWins” вместо числа 0. Получилось? Проверяем!

В данной программе мы используем новый блок из раздела “Basic” (основное), который называется “pause (ms)” (пауза). Он необходим нам для того, чтобы создать паузу во времени между появлением блоков.

Чтобы завершить начатую программу, необходимо добавить блоки для вывода очков 2-х переменных: “PlayerBWins” и “PlayersTie”. Продублируем 2 раза программу, составленную внутри блока “on shake”.

Ниже приводится пример единой программы, но показанной фрагментарно (с помощью нескольких иллюстраций).

При добавлении переменной “PlayersTie”, в блоке “show string”, измените текстовое сообщение “Hello” на “Ties”.

Как вы могли заметить, в конце программы добавлен блок “clear screen” для очистки экрана после отображения количества ничьей.

Шаг 5. Говорят, что совершенству нет предела. Это, действительно, так и, особенно, в программировании! Добавим к нашей программе, составленной выше, новые блоки из раздела “Math” (математика).

Напишем программу по выводу на плату итогового количества сыгранных раундов в игру “Камень – ножницы – бумага”. В созданной выше программе, перед блоком “clear screen” (очистить экран), разместим блок “show string” (показать строку), изменив текстовое сообщение “Hello” на “Total rounds played:” (сумма сыгранных раундов) и “show number” (показать число).

Для того чтобы на плате micro:bit выводилось общее количество сыгранных раундов, воспользуемся блоком “0 + 0” из раздела “Math”. Поместим его вместо числа 0 в блоке “show number” (показать число). Поскольку мы используем 3 переменных, во второе слагаемое поместим такой же блок.

Если запустить программу, то плата micro:bit не выведет нужное нам число? Почему? Просто потому, что она не получила на вход значение 3-х переменных. Исправим это, разместив переменные “PlayerAWins”, “PlayerBWins”, “PlayeTie” вместо 0 в добавленном блоке из раздела “Math”.

Этап 3. Программируем сами…

В блочном режиме измените созданную программу таким образом, чтобы:

  • пауза между появлением очков длилась больше 1 секунды;
  • вывод очков всех 3-х переменных осуществлялся по разным обработчикам события из выпадающего меню блока “on shake”.

* Для САМЫХ креативных

Игра по созданию счетчика очков в игре “Камень – ножницы – бумага” это лишь пример того, что вы можете создать с помощью платы micro:bit.

Предлагаем следующие идеи проектов для самостоятельной работы:

  • В среде программирования Microsoft MakeCode создайте программу для собственного кликера (от англ. click – щелчок). Запрограммируйте его на подсчет и обнуления очков, используя один из обработчиков события. Вы сможете считать все, что угодно, не затрачивая много времени! Например: количество звонков, забитых мячей, добрых поступков за день и т.п.
  • В среде программирования Microsoft MakeCode составьте программу по созданию калькулятора. Используйте программируемую кнопку A для увеличения первого слагаемого и программируемую кнопку B для увеличения второго слагаемого. Используйте обработчик события “on shake” или кнопки A + B, чтобы добавить и отобразить сумму чисел.

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

Проверьте себя…

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

Чему мы научились?

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

Ресурсы:

Мы рады поделиться с вами интересными ресурсами, в том числе и ссылками на статьи в сети Интернет, которые могут быть вам интересны:

  1. Камень, ножницы, бумага – [Электронный ресурс] – Режим доступа: https://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D0%BC%D0%B5%D0%BD%D1%8C,_%D0%BD%D0%BE%D0%B6%D0%BD%D0%B8%D1%86%D1%8B,_%D0%B1%D1%83%D0%BC%D0%B0%D0%B3%D0%B0 (дата обращения: 16.08.2019)
  2. Кликер (устройство) – [Электронный ресурс] – Режим доступа: https://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B8%D0%BA%D0%B5%D1%80_(%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE)(дата обращения: 16.08.2019)
  3. Wallet – Microsoft MakeCode – [Электронный ресурс] – Режим доступа: https://makecode.microbit.org/projects/wallet (дата обращения: 16.08.2019)

Словарь:

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

Переменная (от англ. variables) – часть программного кода, которая имеет имя и значение. При этом, имя переменной неизменно, в отличии от ее значения, которое изменяется во время выполнения программы:

  • Числовая переменная (англ. number variable) может содержать числовые данные: год, температура, степень ускорения и т.п.
  • Строковая переменная (англ. string variable) может содержать строку, состоящую из букв: имя пользователя, день недели и т.п.
  • Логическая переменная (англ. boolean variable) может иметь два значения: константа истина (англ. true) или ложь (англ. false).
  • Спрайт (англ. sprite variable) – это специальная переменная, представляющая одну точку на экране (светодиод на плате micro:bit).
  • Массив (англ. list)- это еще один специальный тип переменной, который способен вмещать список из нескольких элементов.

РАБОТАЕМ САМОСТОЯТЕЛЬНО

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

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

Создайте Кликер на основе Microbit

Сценарий

1) Отводим место в памяти контроллера, в которой будем хранить текущее значение счётчика. Это значение будет меняться с каждым новым щелчком, поэтому на языке программиста такая область памяти называется переменной​. Дадим ей имя, например, счетчик. Первоначальное значение счётчика равно 0.

2) При нажатии кнопки A значение счётчика увеличивается на 1 (пассажир вошёл)

3) При нажатии кнопки B значение счётчика уменьшается на 1 (пассажир вышел)

4) При положении контроллера “перпендикулярно к горизонтальной поверхности, эмблемой вверх” на дисплее отображается текущее значение счётчика. Мы уже знаем, что это событие в группе Input обозначено как logo up

5) При встряхивании контроллера (событие shake​) экран очищается, и счётчик обнуляется


Поділитись