# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
4 теста |
|||
Я приглашаю вас на видеокурс по созданию полноценной игровой программы СОКОБАН. Я проведу вас за руку по всем этапам создания законченной интеллектуальной игры: 1. Создание редактора уровней. 2. Придумывание этих самых уровней. 3. Создание собственно игры. 4. Решение олимпиадной задачки для добавления ИИ. 5. Переделка игры в режим "на двоих". 6. Написание класса Phone для связи двух программ по сети. 7. Создание сетевой версии игры Sokoban. Будет интересно! В конце видео - первое задание: Научиться играть! :) Ссылка на игру Сокобан Отчёт отправил: 9567. Максим Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Играть в Сокобан Сложности: Пройти уровни Комментарии: Прошел 5, было сложно.. Но что бы там ни было, правила я точно понял =) |
|||||
2 |
![]() |
1 тест |
|||
На этом уроке мы подготовим 6 пиктограмм и две картинки для игры, а также придумаем свой собственный уровень, который запишем в текстовый файл. Отчёт отправил: 9567. Максим Выполнено за 30 мин. [Показать отчёт] Научился: Искать картинки Сложности: Найти картинки Комментарии: Ещё не определился с местом, куда ставить ящики и поставленным ящиком |
|||||
3 | Сокобан - Редактор - Загрузка |
|
|||
Мы начинаем создавать редактор уровней для известной логической игры Sokoban. Редактор будет создан за четыре урока. На первом уроке мы создадим класс для загрузки уровня с текстового файла и протестируем его работу. Отчёт отправил: 9567. Максим Выполнено за 25 мин. [Показать отчёт] Научился: Создавать уровни Сложности: Ничего Комментарии: Всё хорошо |
|||||
4 | Сокобан - Редактор - Интерфейс |
|
|||
На этом уроке мы создадим интерфейс программы и сделаем отображение загруженного уровня на экране. Отчёт отправил: 9567. Максим Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Ничему Сложности: VS отказывалась отображать мои картинки (добавляла в ресурсы, но не отображала) Комментарии: Я сделал пару небольших улучшений. Всё на видео =) Видеообзор: https://youtu.be/JI1ou5ErZC8 |
|||||
5 | Сокобан - Редактор - Редактирование |
|
|||
На третьем уроке мы сделаем наконец-таки редактирование поля. Также реализуем возможность изменения размера лабиринта. В конце напишем функцию для проверки корректности составленного уровня. Отчёт отправил: 9567. Максим Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Ничему Сложности: Обработать на одном контроле MouseEnter во время, когда она нажата (MouseDown) на другом Комментарии: • enum можно спокойно преобразовать в int, так что кнопкам можно было кнопкам присвоить int-овый Tag и сделать один обработчик на всех • Сделал добавление строк/столбцов по лику на крайние ячейки |
|||||
6 | Сокобан - Редактор - Сохранение |
|
|||
На четвёртом уроке мы закончим создание редактора уровней. Напишем самую главную функцию для сохранения сделанных изменений в файл. Затем добавим кнопки перехода к следующему и предыдущему уровню. Останется только немного облагородить интерфейс программы. Отчёт отправил: 9567. Максим Выполнено за 30 мин. [Показать отчёт] Научился: Сохранять уровни Сложности: Ничего Комментарии: Я к прошлому уроку сделал несколько значительных улучшений по добавлению/удалению строк и столбцов и размещению элементов, но к моменту отправки отчёта ещё не было готово интерактивное удаление. Сейчас всё доделал, всё на видео =) Кстати, обратите внимание, что с MouseMove не всё так просто (я где-то полчаса провозился) =) Видеообзор: https://youtu.be/wCno7H5ZHTU |
|||||
7 | Сокобан - Редактор - Улучшение |
|
|||
Допиливаем и дорабатываем редактор до товарного вида. Реализуем ещё несколько фишек. Отчёт отправил: 9567. Максим Выполнено за 5 мин. [Показать отчёт] Научился: Ничему Сложности: Ничего Комментарии: У меня уже всё было даже удобнее реализовано. То чувство, когда не зря старался =) ПС: Прикрепил то же видео, на всякий случай Видеообзор: https://youtu.be/wCno7H5ZHTU |
|||||
8 | Сокобан - Редактор - Классика уровней |
1 тест |
|||
На этом уроке вам нужно выбрать любых два классических уровня и создать их в нашей программе-редакторе. Ссылка на классические уровни: https://logic-games.spb.ru/sokoban/ Редактор можно скачать здесь: https://www.videosharp.info/data/soft/SokobanEditor.zip |
|||||
9 | Сокобан - Создаём свои уровни |
1 тест |
|||
Твоя задача - подготовить базу уровней для игры Сокобан.
Отчёт отправил: 9567. Максим Выполнено за 15 мин. [Показать отчёт] Научился: Создавать уровни Сложности: Создать уровни =) Комментарии: Уровни: • Осторожно, стены! • Тише едешь - дальше будешь |
|||||
10 | Сокобан - Игра - Интерфейс |
1 тест |
|||
Мы начинаем создание интеллектуальной игры СОКОБАН. У нас уже есть все необходимые классы и уровни для создания полноценной игры. На этом уроке мы создадим форму и настроим интерфейс окна лабиринта. Отчёт отправил: 9567. Максим Выполнено за 40 мин. [Показать отчёт] Научился: Ничему Сложности: Ничего Комментарии: А чем Point не подходил? Зачем Place? |
|||||
11 | Сокобан - Игра - Управление |
3 теста |
|||
Теперь мы создадим класс логики игры Game, используя который, мы реализуем управление человечком курсорными клавишами клавиатуры. А также сделаем переход на следующий уровень. Отчёт отправил: 9567. Максим Выполнено за 1 час. 10 мин. [Показать отчёт] Научился: KeyPreview - это же то, чего мне не хватало все эти годы!!! Вы бы знали, как я до этого выкручивался =) Сложности: Ничего Комментарии: • Ух, почему я раньше не знал об этом свойстве?? Огромное спасибо!!! Кхм-кхм. Всё, я успокоился =) • Сделал, чтобы map отображалась как BackgroundImage, а top как просто Image (на скриншоте видно) • Воу, я сделал как предлагал Orange (last_level = level_num + 1;) ещё с самого начала (до того, как он это предложил) |
|||||
12 | Сокобан - Решалка - Тестер |
1 тест |
|||
На этом уроке мы напишем программу, которая будет проверять правильность алгоритма поиска решения лабиринта. http://www.videosharp.info/console/task/level=1178 Отчёт отправил: 9567. Максим Выполнено за 50 мин. [Показать отчёт] Научился: Проверять решение лабиринта Сложности: Ничего Комментарии: Не нужно было выносить координаты "яблока" в отдельные переменные, всё намного проще =) Можно было просто проверить, после последнего хода находится ли оно на месте финиша (см. скриншот 2) |
|||||
13 | Сокобан - Решалка - Мышка |
1 тест |
|||
Мы начинаем решать задачу по решению игры Сокобан с одним ящиком. Эта задача олимпиадного уровня на применение алгоритма поиска вширь. Главный герой - мышка Альфа, которая желает затолкать яблочко к себе в норку. Программу мы напишем за два урока. На первом уроке мы создадим вспомогательную функцию MoveAlfa(), которая подскажет мышке как попасть из одной клетки лабиринта в другую кратчайшим путём. Отчёт отправил: 9567. Максим Выполнено за 50 мин. [Показать отчёт] Научился: Двигать ящик из точки А в точку Б Сложности: Ничего Комментарии: Жду 4-мерного массива =) |
|||||
14 | Сокобан - Решалка - Яблоко |
2 теста |
|||
На втором уроке мы переделываем написанный алгоритм поиска маршрута мышки. Теперь мы разрешаем мышке толкать яблоко, и записываем все изменения их расположений. Отчёт отправил: 9567. Максим Выполнено за 50 мин. [Показать отчёт] Научился: Находить кратчайший путь, чтобы передвинуть ящик из пункта А, в пункт Б Сложности: Ничего Комментарии: • Сколько уроков подряд наблюдаю за структурой Place и так и не понял, почему не использовать Point, который даже лучше?? • Зачем отдельная структура для направлений? У нас же уже есть прошлая версия Brain, которая идеально подходит? Просто переименовать её в ChainUser, например, сделать глобальной и всё =) |
|||||
15 | Сокобан - Решалка - Оптимизация |
1 тест |
|||
На этом коротком уроке мы рассмотрим два способа оптимизации нашей программы, в результате которых работать она станет просто молниеносно!!!
Отчёт отправил: 9567. Максим Выполнено за 20 мин. [Показать отчёт] Научился: Прямой доступ намноооого быстрее, чем поиск Сложности: Ничего Комментарии: 20 секунд против 13 милисекунд!! Вау, это какая-то невозможная оптимизация =) |
|||||
16 | Сокобан - Игра - Автоходы |
1 тест |
|||
Поздравляю, программа уже создана: можно играть, можно ею хвастаться. На этом уроке мы добавим в игру автоходы, чтобы можно было управлять нашим человечком с помощью мышки - указать, куда идти, и даже указать, какой ящик куда нужно поставить. Для этого нам потребуются два класса по решению лабиринта. Отчёт отправил: 9567. Максим Выполнено за 30 мин. [Показать отчёт] Научился: Внедрил автоходы Сложности: Ничего Комментарии: Как вы, наверное, догадались, я кое-что улучшил =) Ящик вибирается по одному клику и выдиляется синим (видно на скриншоте). Синий ящик - значение Cell. Функция Cell_MouseClick на втором скриншоте =) |
|||||
17 | Сокобан - Редактор - На двоих |
1 тест |
|||
Переделываем редактор уровней, чтобы можно было создавать лабиринты для двоих игроков. Создаём базу из 10 новых уровней игры в Сокобан для двоих. Отчёт отправил: 9567. Максим Выполнено за 30 мин. [Показать отчёт] Научился: Создавать уровни на двоих Сложности: Ничего Комментарии: Я оставил всё в том же редакторе, посмотрим, чем это обернется =) |
|||||
18 | Сокобан - Игра - На двоих |
|
|||
Переделать игру, чтобы в неё можно было играть вдвоём на одной клавиатуре.
Отчёт отправил: 9567. Максим Выполнено за 20 мин. [Показать отчёт] Научился: Проходить свой уровень =) Сложности: Ничего Комментарии: Я и не думал, что мой уровень окажется сколько-нибудь сложным, а нет, я его раз 5 перезапускал =) |
|||||
19 | Сокобан - Телефон - TCP/IP протокол |
1 тест |
|||
На этом видеоуроке мы создадим три класса, которые удобно использовать для передачи данных между двумя компьютерами. Отчёт отправил: 9567. Максим Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Передавать и получать данные между двумя компьютерами Сложности: Ничего Комментарии: Для разнообразия получение сделал через событие, а не делегат (хотя он там тоже используется, но всё же). Вопрос: А сделать, чтобы клиентов могло быть больше одного? |
|||||
20 | Сокобан - Игра - На двоих по сети |
1 тест |
|||
На этом уроке мы наконец-таки сделаем сетевую версию программы Sokoban для двоих. Мы будем использовать телефонный класс Phone с прошлого урока. Отчёт отправил: 9567. Максим Выполнено за 1 час. 10 мин. [Показать отчёт] Научился: Играть в одну игру на 2-х компьютерах Сложности: Ничего Комментарии: Сделал метод SendStep, который сам отправляет и выполняет нужное действие для заданного игрока (чтобы постоянно не писать отправку и проверку, что отправилось) |
|||||
21 | Сокобан - Завершение |
|
|||
Игра уже написана, но всегда можно сделать чуть-чуть лучше. На этом уроке мы объединим оба варианта игры в одну программу и загрузим файл с уровнями в ресурсы программы. Теперь в одном ехешнике будет сразу всё! Это финиш!!! Отчёт отправил: 9567. Максим Выполнено за 30 мин. [Показать отчёт] Научился: Ничему Сложности: Ничего Комментарии: Ура, последний урок!! Игры со спрайтами + Скобан меньше чем за месяц - неплохой получился марафон =) |
|||||
22 | ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан |
|
|||
Задание: Записать видеообзор игры СОКОБАН. Отчёт отправил: 9567. Максим Выполнено за 30 мин. [Показать отчёт] Научился: Закрепил классы и из наследование, деллигаты, enum и передочу данных по TCP/IP протоколу Сложности: Вносить свои улучшения, но это было интересно =) Комментарии: Курс отличный! Если вы давно зотели написать большой проект, но боялись начать, то этот курс как раз для вас =) Но я уже немного подустал, так что обзор получился далеко не лучший.. Следующий курс. По всей видимости "Мат Конём и Слоном" надо добивать, а потом наконец-то смогу отдохнуть =) Видеообзор: https://youtu.be/gaJZpbh1CKw |
|||||
23 | VIP. Бот для игры БАЛДА |
|
|||
Используя текстовый файл из 27400 слов создаём рекурсивный алгоритм подбора слов для популярной игры Балда. Отчёт отправил: 9567. Максим Выполнено за 1 час. 10 мин. [Показать отчёт] Научился: 1) Перебирать все варианты на заданном поле 2) Оптимизировать сей процесс Сложности: Ничего, спасибо, все понятно =) Комментарии: Вывод сделал через TreeView, чтобы можно было легко разделять слова разной длины; добавил поле для ввода стартового слова, чтобы самому его не вбивать; при выборе слова на поле показывается, куда ставить букву (если выбрать что-то другое - буква и выделение пропадают), если же на вариант нажать 2 раза, то он автоматически внесется в список использованных слов (и более отображаться не будет, если его возможно будет составить), а поле с вариантами - обновится; Как-то так =) |
|||||
Итого: 23 видеоурока |
13 час. 51 мин. 20 тестов |
12 чел. | |||
Финалисты: LINKI, Новопашин Владимир, Tekashnik, Алексей В., zhikharevav, Evgenii Kudriavtcev, chokayes, Дмитрий, Максим Лапшинов, no name, Max, MaxB . |