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

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

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

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


Отчёт от 7276 за Игра Сокобан / Сокобан - Решалка - Мышка




Оцени работу

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

7276. Ильшат
Ильшат
ответить
→  Оля  # Игра Сокобан / Сокобан - Решалка - Мышка / 2016-01-09 23:06

Спасибо, Оля)


24. Оля
Оля
ответить
→  Ильшат  # Игра Сокобан / Сокобан - Решалка - Мышка / 2016-01-09 19:15

Ильшат, я восхищаюсь твоей работой, все лучше и лучше становится у тебя, Молодец! :)


  • Отчёт оценивали:
    459Сергей Сергеевич+1   5760Мариша +1   6987MichGar+1   6925Артём+1   2639Морозов Юрий Александрович+1   4699Сергей Витальевич+1   4004Елена+1   7645Александр Львович+1   4992Николай+1   6195sergey+1   1Евгений Витольдович+1   2725Anton+1   4467Alcatraz+1   5649Максим Лапшинов+1   1710Степан+1   3747Сергей+1   5263Павел+1   5868Vera+1   8Василевская Елена0   5286Коваленко Дмитрий+1   24Оля+1  

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




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

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

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

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