На этом уроке мы напишем игровую программу по мотивам детской игры на руках - «Камень-Ножницы-Бумага».
Задание: Написать игру и победить компьютер.
Дата отправки отчёта:
1 декабря 2015 г.
Задание выполнено: за
2 час. 10 мин.
Чему научился:
Повторил работу с панелями, pictureBox, загрузкой ресурсов. Понравился способ установки видимости необходимой картинки через проверку условия. Например, picture_rock.Visible = choice == Choice.rock;
Что было сложным:
Все хорошо поясняется, проблем не было.
Комментарии:
Сначала я написал версию по видео уроку, поиграл, оценил. Здорово, но это скорее игра на реакцию, а не привычная "камень-ножницы-бумага". Так как игрок может видеть примерный выбор компьютера, то он имеет возможность нечестно победить. Поэтому я решил слегка изменить начальную версию программы: убрал таймер и организовал принятие решения компьютера в момент клика по одной из трех картинок.
Во время модификации программы я утомился работать со строковыми представлениями картинок и режимов игры, добавил отдельный класс GameLogic. В тот момент задумался, как можно усложнить игру? Ответ пришел быстро - разные варианты генерации решений компьютером. Например, компьютер будет учитывать предыдущие ходы игрока, сохранять их в коллекцию и далее по-хитрому медитируя пытаться угадать следующий шаг.
Чтобы создать задел для разных версий генераторов, использовал полиформизм, добавил интерфейс IChoiceGenerable и реализовал его в классе RandomChoiceGenerator, который (как в видео уроке) рандомно принимает решение в полуоткрытом интервале [1, 4). Версию с AI пока что делать не стал, оставил на будущее)
Научился: Использование тэгов! События мышки , картинки и панели Трудности: Непонятно с тегами, в видео сказано что было обьяснение раньше, но видимо это в старой версии было((
Научился: Закрепил навыки по Scroll и Timer, научился пользоваться инструментами Panel & PictureBox, а также научился писать более сложные функции. Кроме того, вспомнил математику. Трудности: Сложно было понять функцию подсчёта очков и показа картинок. Спасибо за урок! Благодаря Вам я лишний раз убедился в том, что программирование и математика очень дружат между собой:)
P.S. я немного исправил функцию comp_speed, с точки зрения математики :)