# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
4 теста |
|||
Я приглашаю вас на видеокурс по созданию полноценной игровой программы СОКОБАН. Я проведу вас за руку по всем этапам создания законченной интеллектуальной игры: 1. Создание редактора уровней. 2. Придумывание этих самых уровней. 3. Создание собственно игры. 4. Решение олимпиадной задачки для добавления ИИ. 5. Переделка игры в режим "на двоих". 6. Написание класса Phone для связи двух программ по сети. 7. Создание сетевой версии игры Sokoban. Будет интересно! В конце видео - первое задание: Научиться играть! :) Ссылка на игру Сокобан Отчёт отправил: 1947. Denis Выполнено за 15 мин. [Показать отчёт] Научился: Пока ничему Сложности: Найти сокобан онлайн со списком уровней Комментарии: в интернете куча сокобанов, только мало тех, где есть список пройденных уровней. Ну или я плохо искал |
|||||
2 |
![]() |
1 тест |
|||
На этом уроке мы подготовим 6 пиктограмм и две картинки для игры, а также придумаем свой собственный уровень, который запишем в текстовый файл. Отчёт отправил: 1947. Denis Выполнено за 5 мин. [Показать отчёт] Научился: составлять уровни в текстовом файле Сложности: Ничего Комментарии: У меня уже была готова часть игры, которую писали на бесплатных вебинарах, так что с картинками проблем не возникло. |
|||||
3 | Сокобан - Редактор - Загрузка |
|
|||
Мы начинаем создавать редактор уровней для известной логической игры Sokoban. Редактор будет создан за четыре урока. На первом уроке мы создадим класс для загрузки уровня с текстового файла и протестируем его работу. Отчёт отправил: 1947. Denis Выполнено за 30 мин. [Показать отчёт] Научился: Работе с текстовыми файлами Сложности: ничего Комментарии: Пока замечаний нет |
|||||
4 | Сокобан - Редактор - Интерфейс |
|
|||
На этом уроке мы создадим интерфейс программы и сделаем отображение загруженного уровня на экране. Отчёт отправил: 1947. Denis Выполнено за 40 мин. [Показать отчёт] Научился: Динамическому созданию элементов формы Сложности: сложностей не возникло Комментарии: Была заготовка сокобана, которая осталась с какого-то бесплатного вебинара. Пришлось создать новый проект =) |
|||||
5 | Сокобан - Редактор - Редактирование |
|
|||
На третьем уроке мы сделаем наконец-таки редактирование поля. Также реализуем возможность изменения размера лабиринта. В конце напишем функцию для проверки корректности составленного уровня. Отчёт отправил: 1947. Denis Выполнено за 50 мин. [Показать отчёт] Научился: Выделять код в отдельные функции Сложности: ничего Комментарии: Немного отрефакторил код. При изменении размеров формы нет надобности хранить 2 переменные для длины и ширины. Оставил 1, сразу вычленив минимальный размер int bs = Math.Min(panel.Width / width, panel.Height / height); Ну а дальше дело техники. |
|||||
6 | Сокобан - Редактор - Сохранение |
|
|||
На четвёртом уроке мы закончим создание редактора уровней. Напишем самую главную функцию для сохранения сделанных изменений в файл. Затем добавим кнопки перехода к следующему и предыдущему уровню. Останется только немного облагородить интерфейс программы. Отчёт отправил: 1947. Denis Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: сохранение уровней Сложности: Создание нового уровня во время переключения уровней Комментарии: Хороший урок. Только у меня почему то уровень с таким кодом создавался за номером предыдущего. Пришлось увеличивать cur_level_nr + 1. Тогда все заработало. |
|||||
7 | Сокобан - Редактор - Улучшение |
|
|||
Допиливаем и дорабатываем редактор до товарного вида. Реализуем ещё несколько фишек. Отчёт отправил: 1947. Denis Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Допиливать свои хотелки Сложности: Состыковка статус бара и поля при изменении размеров формы Комментарии: Немного переделал стилистику своей будущей игры. Взял спрайты из игры warcraft 2. Сразу не понравился способ изменения размеров уровня. По моему опыту - если дать возможность пользователю ввести данные неправильно - он обязательно введет их неправильно =) Поэтому вместо textbox сделал TrackBar'ы numericUpDownTextBox'ы отдельно на ширину и высоту. Изначально они не видны, а при нажатии на кнопку ресайза - появляются, и уровень масштабируется с учетом новых элементов на форме. Счетчики боксиков и место для их расположения расположил на СтатусБаре в нижней части формы. Там же отображается информация о сохранении уровня. Между стрелками переключения уровней поставил текстбокс ReadOnly для отображения номера уровня и общего количества уровней. Еще добавил горячие клавиши на наши элементы управления. 1 - wall, 2 - abox и т.д. Таким образом не обязательно кликать по ним мышкой, чтобы выбрать текущий, достаточно нажать клавишу. |
|||||
8 | Сокобан - Редактор - Классика уровней |
1 тест |
|||
На этом уроке вам нужно выбрать любых два классических уровня и создать их в нашей программе-редакторе. Ссылка на классические уровни: https://logic-games.spb.ru/sokoban/ Редактор можно скачать здесь: https://www.videosharp.info/data/soft/SokobanEditor.zip |
|||||
9 | Сокобан - Создаём свои уровни |
1 тест |
|||
Твоя задача - подготовить базу уровней для игры Сокобан.
Отчёт отправил: 1947. Denis Выполнено за 30 мин. [Показать отчёт] Научился: Создавать уровни Сложности: придумать уровни Комментарии: Верхние 2 - это мои, нижний это готовый взял. |
|||||
10 | Сокобан - Игра - Интерфейс |
1 тест |
|||
Мы начинаем создание интеллектуальной игры СОКОБАН. У нас уже есть все необходимые классы и уровни для создания полноценной игры. На этом уроке мы создадим форму и настроим интерфейс окна лабиринта. Отчёт отправил: 1947. Denis Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Изменять загрузочную форму проекта Сложности: Все сделать по своему Комментарии: Еще конечно ничего не завершено. Но интерфейс сделал похожим на игру. Панель уровня еще не готова, но начало положено. Делал все в старом проекте. Не стал создавать новый. |
|||||
11 | Сокобан - Игра - Управление |
3 теста |
|||
Теперь мы создадим класс логики игры Game, используя который, мы реализуем управление человечком курсорными клавишами клавиатуры. А также сделаем переход на следующий уровень. Отчёт отправил: 1947. Denis Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: обрабатывать нажатия клавиш Сложности: ничего Комментарии: Пытался делать немного по другому, в итоге пришлось вернуться к вашему варианту, когда сообразил, что мой подход неверен =) |
|||||
12 | Сокобан - Решалка - Тестер |
1 тест |
|||
На этом уроке мы напишем программу, которая будет проверять правильность алгоритма поиска решения лабиринта. http://www.videosharp.info/console/task/level=1178 Отчёт отправил: 1947. Denis Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Устанавливать курсор в нужном месте консоли. Сложности: ничего Комментарии: Отличный урок по консольному программированию |
|||||
13 | Сокобан - Решалка - Мышка |
1 тест |
|||
Мы начинаем решать задачу по решению игры Сокобан с одним ящиком. Эта задача олимпиадного уровня на применение алгоритма поиска вширь. Главный герой - мышка Альфа, которая желает затолкать яблочко к себе в норку. Программу мы напишем за два урока. На первом уроке мы создадим вспомогательную функцию MoveAlfa(), которая подскажет мышке как попасть из одной клетки лабиринта в другую кратчайшим путём. Отчёт отправил: 1947. Denis Выполнено за 50 мин. [Показать отчёт] Научился: алгоритму поиска пути Сложности: ничего Комментарии: Хороший урок. |
|||||
14 | Сокобан - Решалка - Яблоко |
2 теста |
|||
На втором уроке мы переделываем написанный алгоритм поиска маршрута мышки. Теперь мы разрешаем мышке толкать яблоко, и записываем все изменения их расположений. Отчёт отправил: 1947. Denis Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Научил мышку толкать яблоко! Сложности: Составить правильный скриншот для урока =) Комментарии: Алгоритм поиска пути уже изучал в рамках участия в проекте RussianAiCuo 2013. Правда писал на питоне. Но все равно интересно. |
|||||
15 | Сокобан - Решалка - Оптимизация |
1 тест |
|||
На этом коротком уроке мы рассмотрим два способа оптимизации нашей программы, в результате которых работать она станет просто молниеносно!!!
Отчёт отправил: 1947. Denis Выполнено за 10 мин. [Показать отчёт] Научился: Оптимизация алгоритма поиска пути Сложности: ничего Комментарии: Никогда бы не подумал, что можно так просто в разы сократить время работы программы! Удивительно. |
|||||
16 | Сокобан - Игра - Автоходы |
1 тест |
|||
Поздравляю, программа уже создана: можно играть, можно ею хвастаться. На этом уроке мы добавим в игру автоходы, чтобы можно было управлять нашим человечком с помощью мышки - указать, куда идти, и даже указать, какой ящик куда нужно поставить. Для этого нам потребуются два класса по решению лабиринта. Отчёт отправил: 1947. Denis Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Подключать готовые классы Сложности: Найти ошибку, которая ломала все решалку для ящика. Оказалось, Ошибка в функции InRange, которая в конце возвращала всегда true вместо false. Комментарии: Крутая штука - автоходы! Кстати, забыл написать раньше. Большие уровни долго перерисовываются, но если перед циклом в процедуре InitPicture сделать панель невидимой, а после цикла вернуть обратно, уровень перерисовывается гораздо быстрее. |
|||||
17 | Сокобан - Редактор - На двоих |
1 тест |
|||
Переделываем редактор уровней, чтобы можно было создавать лабиринты для двоих игроков. Создаём базу из 10 новых уровней игры в Сокобан для двоих. Отчёт отправил: 1947. Denis Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Переделывать редактор под 2-ух игроков Сложности: Сделать свои доработки Комментарии: Мои доработки: 1. Сделал добавление элементов с зажатой кнопкой мыши. 2. Сделал добавление элементов прямоугольником с зажатым shift. 3. Сделал добавление элементов закрашенным прямоугольником с зажатым ctrl. 4. Сделал историю изменений, с возможностью отмены сочетанием клавиш ctrl + z |
|||||
18 | Сокобан - Игра - На двоих |
|
|||
Переделать игру, чтобы в неё можно было играть вдвоём на одной клавиатуре.
Отчёт отправил: 1947. Denis Выполнено за 15 мин. [Показать отчёт] Научился: Переделывать игру для игры вдвоем Сложности: ничего Комментарии: Короткий, интересный урок |
|||||
19 | Сокобан - Телефон - TCP/IP протокол |
1 тест |
|||
На этом видеоуроке мы создадим три класса, которые удобно использовать для передачи данных между двумя компьютерами. Отчёт отправил: 1947. Denis Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Обмениваться данными по сети Сложности: ничего Комментарии: Отличный урок. Сетевое взаимодействие - то что надо! |
|||||
20 | Сокобан - Игра - На двоих по сети |
1 тест |
|||
На этом уроке мы наконец-таки сделаем сетевую версию программы Sokoban для двоих. Мы будем использовать телефонный класс Phone с прошлого урока. Отчёт отправил: 1947. Denis Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Передавать данные по сети Сложности: Реализовать обмен данными через сокеты Комментарии: Переписал наш класс Phone, чтобы программа работала через сокеты. По сути то же, только работает вроде более стабильно и передаю строки. Так можно и мини час сделать!!! =) Еще переделал автоходы, они работают у каждого для своего персонажа. Ну и картинку для 2 персонажа поменял. Ну а то, что они при хотьбе разворачиваются в нужную сторону, это конечно не окончательный вариант. В идеале нужно сделать плавное перемещение. Благо картинок для анимации хватает. |
|||||
21 | Сокобан - Завершение |
|
|||
Игра уже написана, но всегда можно сделать чуть-чуть лучше. На этом уроке мы объединим оба варианта игры в одну программу и загрузим файл с уровнями в ресурсы программы. Теперь в одном ехешнике будет сразу всё! Это финиш!!! Отчёт отправил: 1947. Denis Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: ничему новому Сложности: Найти ответ, что ресурсы нельзя изменять кодом Комментарии: Пришлось отказаться от внедрения файлов с уровнями в ресурсы, ибо редактор у меня находится в этом же проекте, а ресурсы один раз закинул, и изменять больше нельзя. |
|||||
22 | ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан |
|
|||
Задание: Записать видеообзор игры СОКОБАН. Отчёт отправил: 1947. Denis Выполнено за 30 мин. [Показать отчёт] Научился: как всегда, записывать видео! Сложности: придумать сценарий обзора Комментарии: Кажется, что обзор немного скомкан. Не показал сетевую игру. Вообще, игра еще не завершена. Дорабатывать можно сколько угодно долго =) Например, в мыслях сделать режим Кампании, сохранение прогресса и много чего еще. Спасибо Евгению Витольдовичу за то, что дал базу для написания таких простых, и вместе с тем, не простых игр. Видеообзор: https://youtu.be/5xPrVrlNoOA |
|||||
23 | VIP. Бот для игры БАЛДА |
|
|||
Используя текстовый файл из 27400 слов создаём рекурсивный алгоритм подбора слов для популярной игры Балда. |
|||||
Итого: 23 видеоурока |
13 час. 51 мин. 20 тестов |
12 чел. | |||
Финалисты: LINKI, Новопашин Владимир, Tekashnik, Алексей В., zhikharevav, Evgenii Kudriavtcev, chokayes, Дмитрий, Максим Лапшинов, no name, Max, MaxB . |