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

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

Шарики / Шарики. Поиск линий

  • Реализация последнего алгоритма.
    Поиск линий из 5+ шариков и анимация их удаления.
  • Дата отправки отчёта: 18 июня
  • Задание выполнено: за 2 час. 30 мин.
  • Чему научился: Очень много всего, вроде ничего нового, но все вместе собирается в довольно сложный код.
  • Что было сложным: Реализовать придуманные улучшения.
  • Комментарии: Практически все улучшения получились недоделанными (долго пытался решить с очками и отменой хода, но потом оставил по принципу "лучше сделать как-то, чем никак"):
    1. Подсчет очков. Ровно по 50, независимо от количества шаров. Т.к. реализованная StripLines() на 6 шаров срабатывает 2 раза, на 7 шаров 3 раза и так далее, то получается умножение очков с каждым шаром (100 за 6, 150 за 7). При привязке очков к strips примерно тот же эффект. Поэтому оставил так.
    2. Сохранение рекорда. Но он хранится в переменной и сбрасывается при выходе из игры. Хранение в файле делать не стал.
    3. Кнопка перезапуска игры. Вынес содержимое Status.init  в отдельный метод StartGame() и сделал его вызов по кнопке и при заполнении поля.
    4. Кнопка отмены хода. Возвращает состояние шаров. Но только тех, что уже есть на карте (в нормальном состоянии), без следующих. Следовательно остаются только актуальные следующие, а не сбрасываются на предыдущее состояние (видно на скриншотах). Конечно добавляет определенный игровой момент, но кривовато. Ограничил количество отмен хода тремя.
  • Оценка видео-уроку:
Отчёт от 10193 за Шарики / Шарики. Поиск линий


Отчёт от 10193 за Шарики / Шарики. Поиск линий




Оцени работу

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

1901. Neverwinter 2
Neverwinter 2
ответить
→  Minergimn  # Шарики / Шарики. Поиск линий / 2016-06-19 10:51

Не согласен на счет очков: 7 гораздо труднее чем 6, а 6 труднее чем 5 - поэтому всё правильно стрип лайн обсчитывает.


1. Евгений Витольдович
Евгений Витольдович
ответить
→  Minergimn  # Шарики / Шарики. Поиск линий / 2016-06-19 08:57

Еще можно в реестре рекорды хранить.


4467. Alcatraz
Alcatraz
ответить
→  Minergimn  # Шарики / Шарики. Поиск линий / 2016-06-18 23:02

Посмотри как сохранять настройки с помощью вижуал студии. Перейди в свойства проекта и там выбери настройки.


  • Отчёт оценивали:
    4467Alcatraz+1   7119Новопашин Владимир+1   6203Николай (nick27m)+1   4736Евгений+1   10233Виталий+1   10494Алексей В.0   6452Lik_Kirill+1   5649Максим Лапшинов+1   9237Mais+1   1Евгений Витольдович+1   689Igorenzia+1   6987MichGar+1   1901Neverwinter 2+1   4004Елена+1   4992Николай+1   6614Александр+1   10478DeeP0   9971Юрий+1   4485Vlad Yakovlev+1   6391Владимир+1   5419Роман+1   10162Дмитрий0   7873Дмитрий+1  

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Трудности: логика
Спасибо за урок и за курс!
Научился: Находить и исправлять недоделки в приложении. Проявлять фантазию))). Познакомился с сериализацией и десериализацией - ничего сложного и очень понравилось. Также могу сказать, что я понял одно из применений делегатов на практике.
Трудности: Самым сложным оказалось окончательно реализовать идею сохранения результатов игры. Подробности ниже:).
Что сделал/изменил в программе: 1. Исправил/доделал функцию сокращения линий шариков - ранее, при сокращении нескольких линий одновременно за 1 ход (т.е. одним шариком за 1 ход сокращается несколько линий), количество шариков, подлегаемых сокращению, подсчитывалось неправильно. Допустим, сокращается две линии - 5 шариков и 6 шариков - ранее, в массив удаляемых шариков записалось бы 11 шариков, что является неправильным. Или при сокращении линий из 5-ти и 5-ти шариков, в массив записалось бы 10 шариков. Правильно нужно было бы записать в первом случае в массив 10 шариков (11-1 шариков), а во втором случае 9 шариков. Так получается за счет того, что 1 шарик является общим для обоих линий, и он заносился в массив шариков дважды - с каждой линией по разу. Что самое интересное - на ход игры этот факт никак не влиял. Но мне для анимации прогресса игры в виде счета сокращенных линий (общее количество сокращенных шариков) это было критично. Поэтому пришлось переделать эту функциональность. 2. Добавил анимацию прогресса игры в виде счета сокращенных линий (общее количество сокращенных шариков) и отображения имени игрока. 3. Добавил "диалог" между программой и игроком при завершении игры с вопросами о сохранении игры и о создании новой игры. 4. Добавил возможность сохранения результата игры, статистику результатов сохраненных игр в виде таблицы рекордов, просмотр таблицы рекордов. Таблица рекордов автоматически сортируется при добавлении новой записи. Данная функциональность реализована в виде отдельного класса, специально для удобного интегрирования в другие приложения, требующие подобной функциональности. При реализации данной функциональности изначально хотел работать с пространством имен System.IO. В принципе все работало, но я захотел чтобы у меня был 1 файл, exe-шник и всё (чтобы нельзя было подделать таблицу рекордов через редактирование самого файла), но уперся в проблему, когда приложение во время выполнения пытается изменить само себя (ведь текстовый файл находится в ресурсах приложения). Долго бился с этим. В итоге вспомнил про сериализацию - в моем случае это является аналогом System.IO - также в итоге таблица рекордов сохраняется во внешний файл. НО - в итоге это вылилось в намного меньший объем кода, чем при использовании System.IO, и во внешний файл таблица рекордов записывается в виде потока байтов, что в самом файле выглядит в виде набора шестнадцатеричных чисел. Т.е. особо такой файл не подделаешь. Так, что я очень доволен своей работой!:)))