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

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

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

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


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




Оцени работу

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

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

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


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го лабиринта с сайта http://logic-games.spb.ru/sokoban/ (10 кубиков) ей потребовалось порядка 40 000 раз сдвинуть кубики, чтобы найти решение, на что ушло около минуты.
А вот для 8го уровня (18 кубиков) не хватило и 1 000 000, быстрее получилось самому уже пройти :)


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

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


  • Отчёт оценивали:
    24Оля+1   5882Александр Широков+1   6245вадим+1  

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Играть
Трудности: Время
Отличный урок для понимания игры
Научился: Играть Сокобан
Трудности: Ничего
Жду с нетерпением начало разработок.