Урок 11. Пишем код

Сейчас мы будем программировать вопрос игроку и предложение выбора из трёх вариантов (один – правильный и два — неправильных).

Для этого наших знаний достаточно. Например, если мы хотим, чтобы наша игра задавала вопрос пользователю: «Сколько будет 2х2?» — нам потребуется для начала инициализировать переменные, хранящие в себе значения:

int partA = 2;
int partB = 2;

Далее по тексту будет показано, где вам необходимо это написать в Android Studio.

Здесь мы объявили две переменные типа int, каждая из которых содержит в себе значение 2 и присвоили им имена – partA, partB, соответственно. Используем тип int, так как мы будем иметь дело с целыми числами. Помните – имена переменных мы даём произвольно, а такими мы их выбрали потому что они выглядит наиболее подходящими по смыслу. Безусловно, любая стоящая скачивания игра должна уметь гораздо больше, чем: «Сколько будет 2х2?».

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

int correctAnswer = partA * partB;
int wrongAnswer1 = correctAnswer - 1;
int wrongAnswer2 = correctAnswer + 1;

Заметьте, что инициализация переменных с неверными значениями зависит от значения, хранящегося в переменной с верным ответом и поэтому они объявлены ниже.

Теперь нам необходимо значения, хранящиеся в только что объявленных переменных передать соответствующим элементам, созданного нами ранее графического интерфейса. Переменные вопроса (partA и partB) должны быть отображены в графических элементах textPartA и textPartB, соответственно. А переменные ответа (correctAnswer, wrongAnswer1 и wrongAnswer2) должны быть переданы следующим элементам графического интерфейса: buttonChoice1, buttonChoice2 и buttonChoice3. Давайте реализуем всё то, о чём сейчас шла речь:

  • Для начала, откройте вкладку GameActivity.java в области редактора кода. Вы можете это сделать, если эта вкладка уже у вас видна либо найдя её в папке java файлов.
  • Весь код будет написан в методе onCreate:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    //следующая строка загружает наш графический интерфейс на экран девайса
            setContentView(R.layout.activity_game);
    //далее инициализируем переменные
            int partA = 9;
            int partB = 9;
            int correctAnswer = partA * partB;
            int wrongAnswer1 = correctAnswer - 1;
            int wrongAnswer2 = correctAnswer + 1;
            }// метод onCreate заканчивается здесь
  • Жирным выделено то, что вам необходимо добавить в ваш код. Также напоминаю о важной роли комментариев. Добавляйте их везде и всегда. Код, который вам понятен сейчас – через 2 недели будет казаться вам абсолютнейшей чепухой, написанной кем угодно, только не вами.
  • Теперь добавляем значения, хранящиеся в наших переменных к графическим элементам TextView и Button. Для начала мы должны получить доступ к этим элементам. Сделаем это создав переменную соответствующего класса и ссылаясь на неё через свойство ID элемента. Классы наших элементов соответственно: TextView и Button. Добавьте этот код прямо после того кода, который был добавлен на предыдущем шаге (имеется ввиду – со следующей строки):
    /*Здесь мы создаём объект, основанный на классе TextView и Button соответственно, а также связываем эти объекты к соответствующим элементам графического интерфейса, созданного нами ранее*/
    TextView textObjectPartA =(TextView)findViewById(R.id.textPartA);
    TextView textObjectPartB =(TextView)findViewById(R.id.textPartB);
    Button buttonObjectChoice1 =(Button)findViewById(R.id.buttonChoice1);
    Button buttonObjectChoice2 =(Button)findViewById(R.id.buttonChoice2);
    Button buttonObjectChoice3 =(Button)findViewById(R.id.buttonChoice3);

    Android Studio напомнит вам о том, что нужно импортировать необходимые библиотеки в проект, устанавливая «каретку» на подсвеченный красным цветом класс и нажимая комбинацию клавиш «Alt+Enter» на клавиатуре.

    В комментарии к коду вы можете заметить важное в программировании слово – объект. Когда мы создаём переменную основанную на классе, мы называем её объект. Как только у нас появляется объект класса, мы можем применять к нему различные функции класса. Это ооочень поверхностное объяснение – в следующих уроках мы подробно разберём эту тему.

    Теперь у нас есть 5 объектов, связанных с элементами графического интерфейса, которыми будем манипулировать. Что нам необходимо сделать? Для начала отобразим значения, которые мы ранее присвоили нашим переменным. Для этого, используя созданные объекты классов TextView и Button и методы (функции), которые уже созданы в этих классах. Добавьте этот код сразу же после того, который был добавлен ранее:

    //Используем метод(функцию) setText, который описан в классах Button и //TextView для вывода на графический интерфейс значений переменных.
    textObjectPartA.setText("" + partA);
    textObjectPartB.setText("" + partB);
    //на данный момент нам не важно, какая кнопка будет
    //показывать правильный ответ,
    //а какая неправильный.
    buttonObjectChoice1.setText("" + correctAnswer);
    buttonObjectChoice2.setText("" + wrongAnswer1);
    buttonObjectChoice3.setText("" + wrongAnswer2);
  • Сохраните проект.

Для начала подробно разберём тот код, который мы с вами написали. Сначала мы объявили и инициализировали требуемые нам переменные:

//объявляем и инициализируем переменные
int partA = 9;
int partB = 9;
correctAnswer = partA * partB;
int wrongAnswer1 = correctAnswer - 1;
int wrongAnswer2 = correctAnswer + 1;

Потом мы создали ссылки на созданные нами ранее графические элементы. Для TextView:

TextView textObjectPartA =(TextView)findViewById(R.id.textPartA);

Для Button:

Button buttonObjectChoice1 =(Button)findViewById(R.id.buttonChoice1);

Затем, используя возможности классов TextView и Button, мы с помощью метода setText выводим значения, хранящиеся в наших переменных в наши графические элементы. Вот строчка кода, которая выводит правильный ответ на кнопку:

buttonObjectChoice1.setText("" + correctAnswer);

Набрав на клавиатуре buttonObjectChoice1 и поставив точку, Android Studio покажет нам все доступные, предварительно запрограммированные методы (функции) класса этого объекта.

Сила Android API:

Как вы уже, наверняка, увидели существует много методов, которые можно выполнить к объекту класса Button:

методы API

Если уж у простой кнопки существует такое количество методов, то представьте, какую игру вы сможете создать, использую все возможности Android Studio. Коллекция классов, разработанных кем-то до нас для того, чтобы пользовались ею мы называется в нашем случае Android Application Programmers Interface (Android API)

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

setText("" + correctAnswer);

И так для каждого нашего графического элемента.

Автозаполнение:

Достаточно приятный инструмент среды разработки Android Studio. Вы могли заметить, что набирая собственноручно код, Android Studio предлагает вам варианты, основываясь на том, что вы уже ввели. Просто выбрав необходимое вам продолжение метода или переменной и нажав Enter вы можете автозаполнять код, экономя своё время.

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

android studio