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

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Сокобан / Сокобан - Вступление

  • Я приглашаю вас на видеокурс по созданию полноценной игровой программы СОКОБАН. Я проведу вас за руку по всем этапам создания законченной интеллектуальной игры:
    1. Создание редактора уровней.
    2. Придумывание этих самых уровней.
    3. Создание собственно игры.
    4. Решение олимпиадной задачки для добавления ИИ.
    5. Переделка игры в режим "на двоих".
    6. Написание класса Phone для связи двух программ по сети.
    7. Создание сетевой версии игры Sokoban.
    Будет интересно!

    В конце видео - первое задание: Научиться играть! :)
    Ссылка на игру Сокобан
  • Дата отправки отчёта: 9 августа 2015 г.
  • Задание выполнено: за 24 час. 00 мин.
  • Чему научился: Научился научить комп самому искать решения.
  • Что было сложным: Взял 1й попавший сайт с игрой, сходу прошел 5 лвл и встрял.
    Так как я немного программист решил сделать авторешалку.
    6й уровень с ней и прошел.
    С большим количеством ящиков она думает достаточно долго, поэтому пока она думала над 7м лабиринтом,
    прошел еще 4.
  • Комментарии: Форма не дает ввести больше 24 часов на выполнение задание, хотя я реально на нее 5 дней потратил, чистое число часов не засекал.
  • Оценка видео-уроку:
Отчёт от 2775 за Сокобан / Сокобан - Вступление


Отчёт от 2775 за Сокобан / Сокобан - Вступление




Оцени работу

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

1. --
Евгений Волосатов
Евгений Волосатов
ответить
→  Orange  # Игра Сокобан / Сокобан - Вступление / 2015-08-09 06:01

МЫ в этой игре тоже пишем решалку, как ты помнишь, но только с одним ящиком.
А как ты делал с 4-мя ящиками, 10-мерный массив использовал? :)


2775. --
Orange
Orange
ответить
# Игра Сокобан / Сокобан - Вступление / 2015-08-09 09:19

С ростом числа кубиков количество вариантов возрастает в геометрической прогрессии.
Так если для поля 10x10 с 1 кубиком достаточно хранить 100 позиций для игрока Х 100 позиций для кубика, всего то 10 000 вариантов, то для 10 кубиков вариантов уже сильно больше:
100 * 100^10 = 100^11 = 10 000 000 000 000 000 000 000.

О, и решение для 3й олимпиадной задачи («Большая степень») пригодилось, а я то думал куда его можно применить :)

В общем, нужно разными способами по максимуму сокращать количество ненужных вариантов.
Например, хранить только карты после движения кубика, а локальные, когда игрок бегает и не двигает кубики можно сбрасывать.
Заранее помечать точки куда кубик ставить нельзя, а также динамически проверять тупиковые ситуации.
Использовать сигнатуры для быстрого поиска среди рассмотренных позиций и т.д. и т.п.
При этом вариантов все равно остается еще очень и очень много, я не могу сказать что текущая версия у меня решит любой лабиринт.
Так для 6го лабиринта с сайта logic-games.spb.ru/sokoban/ (10 кубиков) ей потребовалось порядка 40 000 раз сдвинуть кубики, чтобы найти решение, на что ушло около минуты.
А вот для 8го уровня (18 кубиков) не хватило и 1 000 000, быстрее получилось самому уже пройти :)


24. --
Олюшка
Олюшка
ответить
→  Orange  # Игра Сокобан / Сокобан - Вступление / 2015-08-09 11:18

Потрясающе, вот что значит настоящий программист с подходом программиста решения задачи!!!
Я в восторге и под впечатлением от твоей работа,  очень стимулирует и мотивирует! Молодец! :)



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





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

Ты в любой момент сможешь отписаться от рассылки.


Научился: Усидчивости и терпению.
Трудности: Пройти первый уровень.
Замечаний и вопросов нет. Все на высшем уровне. Спасибо!


Научился: Научился играть в Сокобан. Думаю курс будет очень интересным.
Трудности: Над некоторыми уровнями пришлось подумать в этой игре.