Курсы по программированию

Формула программиста
основатель — Волосатов Евгений Витольдович

Демо игры / Камень ножницы бумага

  • На этом уроке мы напишем игровую программу
    по мотивам детской игры на руках - «Камень-Ножницы-Бумага».

    Задание:
    Написать игру и победить компьютер.
  • Дата отправки отчёта: 26 августа 2015 г.
  • Задание выполнено: за 2 час. 00 мин.
  • Чему научился: Научился спокойней смотреть на стены кода.
  • Что было сложным: На данном этапе моего развития тяжело разбираться в функциях, какую куда вставить, чтобы заработало.
    Да и вообще очень сложно это занятие далось. Я обычно посмотрю видео и сам воспроизвожу то, что было показано.
    А на данном уроке приходилось осмыслять каждый шаг и двигаться вместе с видео.
    Еще не очень понял после трех просмотров для чего использовалась панель. Точнее, я понял для того, чтобы игра была более производительной и картинка не загружалась каждый раз с нуля, но не понял почему этого не происходит, когда она находится в панели?
    Еще я понял для чего нужны скобки в выражении, но полностью не понял как оно функционирует (((Panel)sender).Tag).ToString().
  • Комментарии: Все классно, благодарю!
  • Оценка видео-уроку:
Отчёт от 6696 за Демо игры / Камень ножницы бумага




Оцени работу

 
Сохранить страницу:

24. Оля
Оля
ответить
→  Владимир Борисенко  # Наноигры / Камень ножницы бумага / 2015-08-26 15:41

Владимир, я подтверждаю слова Евгеня, сама как и ты хочу все побыстрее охватить и переварить, однако нужно не забывать, мы едим для удовольствия и пользы, не нужно запахиваться и быстро жевать, нужно спокойно и радостно подходить ко всему и тогда результаты будут намного эффективней и радостей, они будут как благодарные сюрпризы в понимании и осмысленных действиях! ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨


1. Евгений Витольдович
Евгений Витольдович
ответить
→  Владимир Борисенко  # Наноигры / Камень ножницы бумага / 2015-08-26 14:38

Владимир, я понимаю твоё яростное желание скорее всё понять и начать уже самому творить, болтать свободно "на английском". Но пока словарный запас недостаточен, поэтому просто выполняй заданния, получая от этого удовольствие :)
Можно было сделать без панели, все тоже работатло. Это как скатерть на столе, обед и без неё будет вкусным.
Скобки функционируют от внутренних к внешним. ((Panel)sender) означает приведение типа, то есть как если бы нам в функцию пришло не object sender, а Panel sender. То есть мы воспринимаем sender как экземпляр панели.


  • Отчёт оценивали:
    7303Игорь+1  

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Новым функциям Windows Form
Трудности: Разобраться в компонентах формы
Мне понравилось
Научился: Повторил работу с панелями, pictureBox, загрузкой ресурсов. Понравился способ установки видимости необходимой картинки через проверку условия. Например, picture_rock.Visible = choice == Choice.rock;
Трудности: Все хорошо поясняется, проблем не было.
Сначала я написал версию по видео уроку, поиграл, оценил. Здорово, но это скорее игра на реакцию, а не привычная "камень-ножницы-бумага". Так как игрок может видеть примерный выбор компьютера, то он имеет возможность нечестно победить. Поэтому я решил слегка изменить начальную версию программы: убрал таймер и организовал принятие решения компьютера в момент клика по одной из трех картинок. Во время модификации программы я утомился работать со строковыми представлениями картинок и режимов игры, добавил отдельный класс GameLogic. В тот момент задумался, как можно усложнить игру? Ответ пришел быстро - разные варианты генерации решений компьютером. Например, компьютер будет учитывать предыдущие ходы игрока, сохранять их в коллекцию и далее по-хитрому медитируя пытаться угадать следующий шаг. Чтобы создать задел для разных версий генераторов, использовал полиформизм, добавил интерфейс IChoiceGenerable и реализовал его в классе RandomChoiceGenerator, который (как в видео уроке) рандомно принимает решение в полуоткрытом интервале [1, 4). Версию с AI пока что делать не стал, оставил на будущее)