На этом уроке мы напишем игровую программу по мотивам детской игры на руках - «Камень-Ножницы-Бумага».
Задание: Написать игру и победить компьютер.
Дата отправки отчёта:
1 декабря 2015 г.
Задание выполнено: за
2 час. 10 мин.
Чему научился:
Повторил работу с панелями, pictureBox, загрузкой ресурсов. Понравился способ установки видимости необходимой картинки через проверку условия. Например, picture_rock.Visible = choice == Choice.rock;
Что было сложным:
Все хорошо поясняется, проблем не было.
Комментарии:
Сначала я написал версию по видео уроку, поиграл, оценил. Здорово, но это скорее игра на реакцию, а не привычная "камень-ножницы-бумага". Так как игрок может видеть примерный выбор компьютера, то он имеет возможность нечестно победить. Поэтому я решил слегка изменить начальную версию программы: убрал таймер и организовал принятие решения компьютера в момент клика по одной из трех картинок.
Во время модификации программы я утомился работать со строковыми представлениями картинок и режимов игры, добавил отдельный класс GameLogic. В тот момент задумался, как можно усложнить игру? Ответ пришел быстро - разные варианты генерации решений компьютером. Например, компьютер будет учитывать предыдущие ходы игрока, сохранять их в коллекцию и далее по-хитрому медитируя пытаться угадать следующий шаг.
Чтобы создать задел для разных версий генераторов, использовал полиформизм, добавил интерфейс IChoiceGenerable и реализовал его в классе RandomChoiceGenerator, который (как в видео уроке) рандомно принимает решение в полуоткрытом интервале [1, 4). Версию с AI пока что делать не стал, оставил на будущее)
Да, не видит, результат выводится только после выбора игрока. Я первоначально хотел сделать как тут http://www.nytimes.com/interactive/science/rock-paper-scissors.html?_r=0 но потом решил сделать проще, без анимации)
Научился: Использовать генератор случайных чисел. Трудности: Разбираться с кодом. Урок понравился, а сама программа никчемуха. Не понимаю, зачем делать уровни сложности, если все равно от твоих умений ничего не зависит, комп ведь свое значение выдает после того, как игрок нажимает свой вариант.
Трудности: Забыл сделать вызов мышки на любой из фигуры, значение по умолчанию kam. В этой связи работал только камень, другие фигуры ножницы и бумага не останавливались щелчком мыши. Не мог сразу понять в чем ошибка. Понравилось!