ooopss / Study

Игра "Виселица"
0 stars 0 forks source link

Реализовать пользовательский интерфейс #17

Closed ooopss closed 5 years ago

ooopss commented 5 years ago

В классе MainForm:

  1. добавить приватное поле private IGame _game;
  2. в методе-конструкторе инициализировать это поле вновь созданным объектом класса Game
  3. добавить Radio button group с опциями одиночная игра / игра на двоих
  4. по нажатию на кнопку "Старт игры" вызывать метод у _game, в зависимости от выбранной опции игры (Start single/dual game). В зависимости от длины загаданного слова (для одиночной игры - смотрим Credentials, которые вернул метод) показываем N точек на Label
  5. по нажатию на кнопку "Сделать попытку" брать значение TextBox'а, привести к нижнему регистру (у строк есть метод ToLowerCase), взять первую букву. Вызвать метод _game.MakeAttempt(c) с этой буквой в качестве аргумента
  6. по итогам попытки:
    • если фэйл - рисуем очередную картинку
    • если успех - рисуем загаданную букву вместо точек (индексы мы получаем из метода MakeAttempt)
    • если game over ~посылаем пользователя~ предлагаем сыграть еще одну попытку, показываем картинку номер 10
navferty commented 5 years ago

дополнение к пункту 4 создать приватное поле private char[] _letters; при старте игры создать массив длиной равной длине слова, заполнить его точками: _letters = new string('.', word.Length).ToCharArray(); (создать строку заданной длины, преобразовать ее в массив символов) обновить отображаемое значение следующим образом: LabelWord.Text = new string(_letters);

дополнение к пункту 6 при очередной попытке, в случае успеха, присвоить элементам _letters с соответствующими индексами угаданную букву: _letters[i] = c и вывести на label вышеуказанным образом в случае Game Over присвоить полю _letters значение из загаданного слова (_game.Word), с помощью метода .ToCharArray()