№3. Камень-ножницы-бумага


Наверное, все когда-то играли в игру «камень-ножницы-бумага». Напомню правила: игроки на счет три выбрасывают одну из трех фигур: камень, ножницы или бумагу, — и после этого определяют, кто победил. Камень побеждает ножницы, ножницы режут бумагу, а бумага накрывает камень. В этом занятии мы рассмотрим, как можно поиграть в эту игру с микрокомпьютером microbit.

Для начала создадим новый проект и назовем его rps (в переводе на английский камень-ножницы-бумага переводится как rock-paper-scissors). В этой игре мы будем использовать встроенный акселерометр. При встряхивании микрокомпьютер будет выбирать случайную фигуру и показывать нам ее на дисплее. Для начала перетащим блок «по жесту … » в рабочую область.

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

Нам предложено выбрать название для новой переменной. Название может состоять из заглавных и прописных латинских букв, цифр и символа подчеркивания «_». Нельзя употреблять специальные символы, такие как «!%.,$&?», а также первым символом в названии может стоять только буква. Назовем переменную i от английского index.

Теперь, чтобы присвоить значение новой переменной, воспользуемся блоком «задать для … значение» из раздела «переменные»

В ниспадающем меню выберем нашу переменную.

Теперь надо присвоить нашей переменной случайное число. Для этого воспользуемся блоком «выбрать случайно от 0 до …» из раздела «математика». Так как у нас всего 3 фигуры, изменим цифру 4 по умолчанию на 2.

Теперь нам нужно сделать так, чтобы при разных значениях переменной i микрокомпьютер рисовал разные картинки. Для этого воспользуемся блоком «если .. то … иначе» из раздела «логика».

Этот блок работает следующим образом: если условие после «если» истинно, то выполняется блок команд после «то», в противном случае этот блок пропускается и выполняется следующий, в данном случае «иначе». Чтобы задать условие, воспользуемся блоком сравнения из раздела «логика». Вставим его после «если» вместо «истина», который стоит там по умолчанию.

Вместо первого элемента в блоке сравнения вставим нашу переменную.

Так как ранее мы условились, что цифре 0 соотвествует бумага, перетащим в раздел «то» блок «показать светодиоды» и, включая нужные нам светодиоды, нарисуем в нем символ бумаги.

Так как у нас три фигуры, нам нужно добавить еще одно условие. Для этого изменим блок «если .. то .. иначе», дополнив его разделом «иначе если». Для этого нажмем на шестеренку и перетащим elseif между if и else.

Теперь добавим условие и команду «показать светодиоды». Это можно сделать так же, как мы делали раньше, а можно продублировать уже вставленные в программу блоки. Для этого нажмем на нужный блок правой кнопкой мыши и нажмем на кнопку «дублировать». В дубликате блока изменим 0 на 1.

Аналогично дублируем команду «показать светодиоды» и меняем рисунок на камень.

Если i выпала не 0 и не 1, значит остается только 2 — ножницы. Поэтому дублируем команду «показать светодиоды» и рисуем ножницы в блоке «иначе».

Вы могли заметить, что после добавления блока «по жесту …» в виртуальном эмуляторе появилась кнопка shake. Нажимая на эту кнопку, мы можем убедиться, что устройство показывает камень, ножницы или бумагу в случайном порядке. Реальное же устройство оснащено акселерометром, поэтому его достаточно потрясти.

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