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

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

Игра Сокобан / Сокобан - Решалка - Мышка

  • Мы начинаем решать задачу по решению игры Сокобан с одним ящиком.
    Эта задача олимпиадного уровня на применение алгоритма поиска вширь.
    Главный герой - мышка Альфа, которая желает затолкать яблочко к себе в норку.
    Программу мы напишем за два урока.
    На первом уроке мы создадим вспомогательную функцию MoveAlfa(),
    которая подскажет мышке как попасть из одной клетки лабиринта в другую кратчайшим путём.
  • Дата отправки отчёта: 13 сентября 2015 г.
  • Задание выполнено: за 50 мин.
  • Чему научился: алгоритму поиска пути
  • Что было сложным: ничего
  • Комментарии: Хороший урок.
  • Оценка видео-уроку:
Отчёт от 1947 за Игра Сокобан / Сокобан - Решалка - Мышка




Оцени работу

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


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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: методу поиск в ширину
Трудности: Не мог понять почему тестер не верифицирует результат. Но это корректно, т.к. тестер считает решение правильным, когда яблоко закатилось в нору, а солвер написан без учета яблока.
Полезно, что в рамках решения одной задачи удалось подебажить еще и предыдущую.
Научился: Повторил алгоритм поиска в ширину, увидел его реализацию с использованием очереди.
Трудности: Был момент, когда мое решение не работало. Искал причину, ошибка была в том, что у нас в этой программе используется один массив для статических и динамических объектов. Поэтому когда игрок достигал целевой точки, то вставал на ее место и она исчезала из карты. Решил с помощью дополнительных переменных, но решение с двумя массивами лучше.
На этот раз решил поэкспериментировать, разделить код по классам. Полученным решением более-менее доволен, уже можно расширять и создавать новые программки из этих маленьких кирпичиков. Немного расширил функционал программы, добавил меню, возможность установки позиций игрока и целевой точки, расчет по этим точкам траектории движения и пошаговый режим к целевой точке.