# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
4 теста |
|||
Я приглашаю вас на видеокурс по созданию полноценной игровой программы СОКОБАН. Я проведу вас за руку по всем этапам создания законченной интеллектуальной игры: 1. Создание редактора уровней. 2. Придумывание этих самых уровней. 3. Создание собственно игры. 4. Решение олимпиадной задачки для добавления ИИ. 5. Переделка игры в режим "на двоих". 6. Написание класса Phone для связи двух программ по сети. 7. Создание сетевой версии игры Sokoban. Будет интересно! В конце видео - первое задание: Научиться играть! :) Ссылка на игру Сокобан Отчёт отправил: 4972. looker Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Играть в игру Мир Сокоба. Сложности: Пройти некоторые уровни. Комментарии: Игру проходил онлайн в инете. Правда, не сделал скрин с последнего уровня. |
|||||
2 |
![]() |
1 тест |
|||
На этом уроке мы подготовим 6 пиктограмм и две картинки для игры, а также придумаем свой собственный уровень, который запишем в текстовый файл. |
|||||
3 | Сокобан - Редактор - Загрузка |
|
|||
Мы начинаем создавать редактор уровней для известной логической игры Sokoban. Редактор будет создан за четыре урока. На первом уроке мы создадим класс для загрузки уровня с текстового файла и протестируем его работу. Отчёт отправил: 4972. looker Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Логике построения уровней в игре. Сложности: Ничего. Комментарии: Хотелось бы увидеть в будущих уроках построение другого редактора уровней в самой игре, а не через файл. В некотором роде в таком подходе получается двойная работа. |
|||||
4 | Сокобан - Редактор - Интерфейс |
|
|||
На этом уроке мы создадим интерфейс программы и сделаем отображение загруженного уровня на экране. Отчёт отправил: 4972. looker Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Работать с новыми контролами на форме. Динамически добавлять pictureBox'ы. Сложности: Не сразу понял логику расположения pictureBox'ов на панели. Именно саму формулу, по которой они располагаются. В остальном всё ок. И конечно ооооочень долго искал подходящие картинки. Комментарии: Если есть у кого-нибудь какой-нибудь ресурс с большим количеством разных картинок разных размеров, буду признателен если поделитесь. А то рисовать ну очень не хочеться.:) |
|||||
5 | Сокобан - Редактор - Редактирование |
|
|||
На третьем уроке мы сделаем наконец-таки редактирование поля. Также реализуем возможность изменения размера лабиринта. В конце напишем функцию для проверки корректности составленного уровня. Отчёт отправил: 4972. looker Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Свойство Tag. Сложности: Опять же - полностью вникнуть в логику построения программы. Комментарии: В этом уроке мы написали функцию IsGoodLevel() для проверки перед сохранением уровня игры, но так и не использовали её. |
|||||
6 | Сокобан - Редактор - Сохранение |
|
|||
На четвёртом уроке мы закончим создание редактора уровней. Напишем самую главную функцию для сохранения сделанных изменений в файл. Затем добавим кнопки перехода к следующему и предыдущему уровню. Останется только немного облагородить интерфейс программы. Отчёт отправил: 4972. looker Выполнено за 2 час. 30 мин. [Показать отчёт] Научился: В принципе ничему новому. Просто пытаюсь абсолютно полностью вникать в логику построения игры и понять логику написания кода этой игры. Сложности: Выловить ошибку в конце. Комментарии: Всё в порядке, всё хорошо. |
|||||
7 | Сокобан - Редактор - Улучшение |
|
|||
Допиливаем и дорабатываем редактор до товарного вида. Реализуем ещё несколько фишек. Отчёт отправил: 4972. looker Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Нового ничего. Сложности: Не сразу сработало прямоугольное заполнение лабиринта. Комментарии: Всё ок. |
|||||
8 | Сокобан - Редактор - Классика уровней |
1 тест |
|||
На этом уроке вам нужно выбрать любых два классических уровня и создать их в нашей программе-редакторе. Ссылка на классические уровни: https://logic-games.spb.ru/sokoban/ Редактор можно скачать здесь: https://www.videosharp.info/data/soft/SokobanEditor.zip |
|||||
9 | Сокобан - Создаём свои уровни |
1 тест |
|||
Твоя задача - подготовить базу уровней для игры Сокобан.
Отчёт отправил: 4972. looker Выполнено за 30 мин. [Показать отчёт] Научился: Проявлять фантазию, тесно переплетенную с логикой.:) Сложности: Придумать свои уровни. Комментарии: Всё ок. |
|||||
10 | Сокобан - Игра - Интерфейс |
1 тест |
|||
Мы начинаем создание интеллектуальной игры СОКОБАН. У нас уже есть все необходимые классы и уровни для создания полноценной игры. На этом уроке мы создадим форму и настроим интерфейс окна лабиринта. Отчёт отправил: 4972. looker Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Нового ничего. Жду использование делегатов - интересно. Сложности: Ничего сложного. Комментарии: Всё в порядке. |
|||||
11 | Сокобан - Игра - Управление |
3 теста |
|||
Теперь мы создадим класс логики игры Game, используя который, мы реализуем управление человечком курсорными клавишами клавиатуры. А также сделаем переход на следующий уровень. Отчёт отправил: 4972. looker Выполнено за 5 час. 30 мин. [Показать отчёт] Научился: Новое применение делегатов увидел. Сложности: Понимать логику программы во время написания кода. ОООЧень долго приходилось разбираться в том, что именно ты кодишь и почему оно работает, и почему оно работает именно так как ты кодишь.:))) Вообщем, самый трудный урок из всех предыдущих. Комментарии: Всё хорошо, спасибо. |
|||||
12 | Сокобан - Решалка - Тестер |
1 тест |
|||
На этом уроке мы напишем программу, которая будет проверять правильность алгоритма поиска решения лабиринта. http://www.videosharp.info/console/task/level=1178 Отчёт отправил: 4972. looker Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: В принципе ничему новому. Сложности: Ничего. Комментарии: Непонятен 1 момент - когда мы передвинули "норку" для мышкиного "яблока", и потом мышка двигала "яблоко", то она передвигала его как раз через свою норку в новом месте. И получается, что как бы задача решена - "яблоко" уже в норке, но решение не засчитывается и мышка продолжает его двигать до места, где с самого начала была "норка" до изменения. Я понимаю, что в любом случае программа должна отработать всю последовательность решения из файла Solution.txt, но все же - как-то странно. Видимо, мы этот алгоритм будем ещё совершенствовать. |
|||||
13 | Сокобан - Решалка - Мышка |
1 тест |
|||
Мы начинаем решать задачу по решению игры Сокобан с одним ящиком. Эта задача олимпиадного уровня на применение алгоритма поиска вширь. Главный герой - мышка Альфа, которая желает затолкать яблочко к себе в норку. Программу мы напишем за два урока. На первом уроке мы создадим вспомогательную функцию MoveAlfa(), которая подскажет мышке как попасть из одной клетки лабиринта в другую кратчайшим путём. Отчёт отправил: 4972. looker Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Как открывать командную строку из определенной папки:))))))) Сложности: Придумать свой лабиринт. Комментарии: Вот такой кусочек кода map[x, y] = lines[y+1][x] из нашей программы - я так понял он вытягивает x-вый элемент char из y+1-го string-элемента массива lines[]? Т.е. такая конструкция применима для любой переменной string, если мы хотим вытянуть из него определенный по номеру char-элемент? |
|||||
14 | Сокобан - Решалка - Яблоко |
2 теста |
|||
На втором уроке мы переделываем написанный алгоритм поиска маршрута мышки. Теперь мы разрешаем мышке толкать яблоко, и записываем все изменения их расположений. Отчёт отправил: 4972. looker Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Находить и устранять свои ошибки. Сложности: Не знаю насколько это сложное, но у меня в итоге тестер при правильном решении выдает в конце надпись "Solution INcorrect", хотя на самом деле все очень даже correct. Думаю, что дело в самом тестере, а не в солвере. Разберусь с этим уже завтра. Комментарии: Всё отлично и замечательно. Приятно видеть результаты своего кодинга, особенно когда эти результаты совпадают с твоими ожиданиями.:) |
|||||
15 | Сокобан - Решалка - Оптимизация |
1 тест |
|||
На этом коротком уроке мы рассмотрим два способа оптимизации нашей программы, в результате которых работать она станет просто молниеносно!!!
Отчёт отправил: 4972. looker Выполнено за 20 мин. [Показать отчёт] Научился: Использовать 4-мерные массивы. Я так понял, что он представляет собой перечень комбинаций положений мышки и яблока относительно друг друга в координатах поля (x, y). И высокая скорость его работы состоит в том, что каждый мы не перебираем все варианты (как было до этого со списком List и Dictionary), а смотрим 1 конкретный вариант исходя из наших координат мышки и яблока. Сложности: Понять как именно мы используем 4-мерный массив. Комментарии: Всё хорошо. Время работы программы при использовании Dictionary было 1500-1600 мс. После применения массива время уменьшилось до 7-11 мс. |
|||||
16 | Сокобан - Игра - Автоходы |
1 тест |
|||
Поздравляю, программа уже создана: можно играть, можно ею хвастаться. На этом уроке мы добавим в игру автоходы, чтобы можно было управлять нашим человечком с помощью мышки - указать, куда идти, и даже указать, какой ящик куда нужно поставить. Для этого нам потребуются два класса по решению лабиринта. Отчёт отправил: 4972. looker Выполнено за 2 час. 30 мин. [Показать отчёт] Научился: Мониторить код и искать у себя ошибки, будь они неладны... Сложности: Найти ошибку у себя, из-за которой ходы игрока как буд-то обрывались наполовине. Комментарии: Всё в порядке. |
|||||
17 | Сокобан - Редактор - На двоих |
1 тест |
|||
Переделываем редактор уровней, чтобы можно было создавать лабиринты для двоих игроков. Создаём базу из 10 новых уровней игры в Сокобан для двоих. Отчёт отправил: 4972. looker Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Проявлять фантазию. Сложности: Придумать свои собственные уровни, которые реально можно пройти только с помощью 3-ух игроков. Комментарии: Мне показалось, что 1 из Ваших уровней невозможно пройти. |
|||||
18 | Сокобан - Игра - На двоих |
|
|||
Переделать игру, чтобы в неё можно было играть вдвоём на одной клавиатуре.
Отчёт отправил: 4972. looker Выполнено за 30 мин. [Показать отчёт] Научился: Играть за 2 игроков в Сокобан.:)))) Сложности: Ничего. Комментарии: Удивлен, что так легко и быстро получилось переделать игру под 2 игроков. |
|||||
19 | Сокобан - Телефон - TCP/IP протокол |
1 тест |
|||
На этом видеоуроке мы создадим три класса, которые удобно использовать для передачи данных между двумя компьютерами. Отчёт отправил: 4972. looker Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Использовать потоки("нити")(наконец-то много поточность..))))..) и ещё немножко закрепил умения пользоваться делегатами, что тоже очень хорошо для меня. Сложности: Делегаты и многопоточность - это тёмный-тёмный лес для меня, в котором водятся непойми кто или непойми что. Вроде в теории всё просто и понятно, а вот как и когда на практике их применять - ооооохххххх....... Но после этого урока парочку "зверей" из этого леса я узнал и понял как можно и когда нужно их использовать. Комментарии: Всё замечательно! Я впервые написал программу, которая хоть как-то, даже так примитивно, но уже работает по сети! Круто! Я действительно в восторге! Спасибо за урок, Евгений Витольдович! Попеременное отключение/включение то сервера, то клиента работает. |
|||||
20 | Сокобан - Игра - На двоих по сети |
1 тест |
|||
На этом уроке мы наконец-таки сделаем сетевую версию программы Sokoban для двоих. Мы будем использовать телефонный класс Phone с прошлого урока. Отчёт отправил: 4972. looker Выполнено за 1 час. 40 мин. [Показать отчёт] Научился: Опять делегаты. Опять потоки. Для любое использование их является "+" в мою копилку. Ещё вспомнил про свойство IsBackground. Сложности: Всё было настолько сложно, насколько и интересно.:) Комментарии: Интересен тот факт, что когда мы запускали на прошлом уроке (когда сделали класс Phone) 2 приложения (и клиент и сервер), то тогда не было проблем с незакрывающимся вторым потоком, хотя там мы не используем свойство IsBackground. |
|||||
21 | Сокобан - Завершение |
|
|||
Игра уже написана, но всегда можно сделать чуть-чуть лучше. На этом уроке мы объединим оба варианта игры в одну программу и загрузим файл с уровнями в ресурсы программы. Теперь в одном ехешнике будет сразу всё! Это финиш!!! Отчёт отправил: 4972. looker Выполнено за 2 час. 20 мин. [Показать отчёт] Научился: Искать и находить свои ошибки. Сложности: Ничего. Комментарии: Я это сделал! Я в восторге! Уже есть что-то такое - что можно показать в качестве продукта своего навыка программирования! Спасибо большое за такую возможность, Евгений Витольдович!:) |
|||||
22 | ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан |
|
|||
Задание: Записать видеообзор игры СОКОБАН. Отчёт отправил: 4972. looker Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Делать видео-обзоры. Сложности: Сделать видео-обзор. Комментарии: Всё замечательно. Видеообзор: https://youtu.be/jQGjKULdWVg |
|||||
23 | VIP. Бот для игры БАЛДА |
|
|||
Используя текстовый файл из 27400 слов создаём рекурсивный алгоритм подбора слов для популярной игры Балда. |
|||||
Итого: 23 видеоурока |
13 час. 51 мин. 20 тестов |
12 чел. | |||
Финалисты: LINKI, Новопашин Владимир, Tekashnik, Алексей В., zhikharevav, Evgenii Kudriavtcev, chokayes, Дмитрий, Максим Лапшинов, no name, Max, MaxB . |