# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
4 теста |
|||
Я приглашаю вас на видеокурс по созданию полноценной игровой программы СОКОБАН. Я проведу вас за руку по всем этапам создания законченной интеллектуальной игры: 1. Создание редактора уровней. 2. Придумывание этих самых уровней. 3. Создание собственно игры. 4. Решение олимпиадной задачки для добавления ИИ. 5. Переделка игры в режим "на двоих". 6. Написание класса Phone для связи двух программ по сети. 7. Создание сетевой версии игры Sokoban. Будет интересно! В конце видео - первое задание: Научиться играть! :) Ссылка на игру Сокобан Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Играть в Сокобан Сложности: Найти время Комментарии: Играла онлайн, без установки игры. |
|||||
2 |
![]() |
1 тест |
|||
На этом уроке мы подготовим 6 пиктограмм и две картинки для игры, а также придумаем свой собственный уровень, который запишем в текстовый файл. Отчёт отправил: 4004. Елена Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Рисовать уровни Сокобан в блокноте Сложности: Найти и нарисовать картинки Комментарии: Хочется продолжения :) |
|||||
3 | Сокобан - Редактор - Загрузка |
|
|||
Мы начинаем создавать редактор уровней для известной логической игры Sokoban. Редактор будет создан за четыре урока. На первом уроке мы создадим класс для загрузки уровня с текстового файла и протестируем его работу. Отчёт отправил: 4004. Елена Выполнено за 45 мин. [Показать отчёт] Научился: Создавать редактор уровней. Загружать уровни из файла. Сложности: Сохранить файл, чтобы он был виден для считывания. Комментарии: Мне кажется, более корректно все-таки использовать cell[y, x] - сначала обращаться к строке, потом - к столбцу. |
|||||
4 | Сокобан - Редактор - Интерфейс |
|
|||
На этом уроке мы создадим интерфейс программы и сделаем отображение загруженного уровня на экране. Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Использовать ToolStrip Сложности: Разобраться с изменением размеров формы Комментарии: Не знаю, это только моя проблема или кто-то с этим тоже сталкивался. Возможно, это свойство Visual Studio 2013. При создании формы вызывается метод Resize, и возникает исключение, поскольку массив box еще не сформирован. Решила проблему, обработав метод ResizeEnd формы. С одной стороны, это, конечно, хорошо, потому что перерисовка происходит только в момент, когда изменения размеров формы закончились. С другой стороны, этот метод не вызывается при нажатии на кнопку MaximizeBox. Пока оставила без нее. Возможно, потом перенесу обработку в метод Resize, введя какой-то флаг, который не будет вызывать функцию пока форма не проинициализирована (уже есть опыт такой реализации в игре Lines). |
|||||
5 | Сокобан - Редактор - Редактирование |
|
|||
На третьем уроке мы сделаем наконец-таки редактирование поля. Также реализуем возможность изменения размера лабиринта. В конце напишем функцию для проверки корректности составленного уровня. Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Редактировать игровое поле Сложности: Понять, зачем нужен ItemClick для добавления строки и столбца (который в результате оказался не нужен) Комментарии: Почему-то при запуске игры у элемента меню wall установлено свойство Checked = true, но на поле он не появляется. Думаю, что лучше сформировать единый ответ со всеми ошибками в функции IsGoodLevel. Обещаю найти картинку для Resiza к следующему уроку :) |
|||||
6 | Сокобан - Редактор - Сохранение |
|
|||
На четвёртом уроке мы закончим создание редактора уровней. Напишем самую главную функцию для сохранения сделанных изменений в файл. Затем добавим кнопки перехода к следующему и предыдущему уровню. Останется только немного облагородить интерфейс программы. Отчёт отправил: 4004. Елена Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Смещать записи внутри файла Сложности: вроде ничего Комментарии: Сделала запрос на сохранение уровня при переходе на преыдущий/следующий. Правда, не знаю пока, хорошо это или плохо. Как и обещала, добавила картинки на кнопки :). |
|||||
7 | Сокобан - Редактор - Улучшение |
|
|||
Допиливаем и дорабатываем редактор до товарного вида. Реализуем ещё несколько фишек. Отчёт отправил: 4004. Елена Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Использовать элементы управления toolStrip Сложности: Обработать двойной щелчок мыши и сделать отдельный обработчик для user. Комментарии: Немного доработала функции перехода между уровнями. Теперь вопрос о сохранении уровня задается только если в уровень вносились изменения (изменение размеров или элементов). Удалила звук, который выдается при нажатии на Enter в поле ввода размеров лабиринта. Для этого создала обработчик private void toolLevelSize_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) e.Handled = true; } |
|||||
8 | Сокобан - Редактор - Классика уровней |
1 тест |
|||
На этом уроке вам нужно выбрать любых два классических уровня и создать их в нашей программе-редакторе. Ссылка на классические уровни: https://logic-games.spb.ru/sokoban/ Редактор можно скачать здесь: https://www.videosharp.info/data/soft/SokobanEditor.zip |
|||||
9 | Сокобан - Создаём свои уровни |
1 тест |
|||
Твоя задача - подготовить базу уровней для игры Сокобан.
Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт] Научился: Придумывать уровни Сложности: Определиться с тем, как эти уровни проходить Комментарии: Неудобно, что в редакторе размеры меняются только вправо и вниз. Уже нарисовала "рисунок" стен и захотела вверх строчку вставить - все перерисовывать надо. |
|||||
10 | Сокобан - Игра - Интерфейс |
1 тест |
|||
Мы начинаем создание интеллектуальной игры СОКОБАН. У нас уже есть все необходимые классы и уровни для создания полноценной игры. На этом уроке мы создадим форму и настроим интерфейс окна лабиринта. Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Вызывать одну форму из другой Сложности: Создание делегатов (пока я их не до конца понимаю). Комментарии: На форме Welcome у меня установлена картинка с прозрачным фоном. У фонового изображения формы можно установить свойство BackgroundImageLayout = Zoom, чтобы картинка растянулась по размеру формы. |
|||||
11 | Сокобан - Игра - Управление |
3 теста |
|||
Теперь мы создадим класс логики игры Game, используя который, мы реализуем управление человечком курсорными клавишами клавиатуры. А также сделаем переход на следующий уровень. Отчёт отправил: 4004. Елена Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Управлять перемещением ящиков. Сложности: Опять столкнулась с вызовом метода Resize до инициализации компонентов. Поставила проверку первого запуска. Комментарии: Новым было двойное присваивание. Никогда раньше его не использовала: width = w = map.GetLength(0); height = h = map.GetLength(1); |
|||||
12 | Сокобан - Решалка - Тестер |
1 тест |
|||
На этом уроке мы напишем программу, которая будет проверять правильность алгоритма поиска решения лабиринта. http://www.videosharp.info/console/task/level=1178 Отчёт отправил: 4004. Елена Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Все уже знакомо Сложности: Найти, почему яблоко не отображается :) Комментарии: Все получилось довольно легко. Урок воспринимается гораздо легче, чем в феврале на вебинаре вживую, потому что уже достаточно проработаны уровни Сокобана и знания накоплены. |
|||||
13 | Сокобан - Решалка - Мышка |
1 тест |
|||
Мы начинаем решать задачу по решению игры Сокобан с одним ящиком. Эта задача олимпиадного уровня на применение алгоритма поиска вширь. Главный герой - мышка Альфа, которая желает затолкать яблочко к себе в норку. Программу мы напишем за два урока. На первом уроке мы создадим вспомогательную функцию MoveAlfa(), которая подскажет мышке как попасть из одной клетки лабиринта в другую кратчайшим путём. Отчёт отправил: 4004. Елена Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Закрепила алгоритм поиска в ширину Сложности: сделать отображение "маршрута" Мышки Комментарии: Решила все-таки Мышку не убирать с поля - все равно в эту клетку повторно нет смысла возвращаться. Хотя, наверное, правильнее элемент с Мышкой в список Visited сразу добавить. |
|||||
14 | Сокобан - Решалка - Яблоко |
2 теста |
|||
На втором уроке мы переделываем написанный алгоритм поиска маршрута мышки. Теперь мы разрешаем мышке толкать яблоко, и записываем все изменения их расположений. Отчёт отправил: 4004. Елена Выполнено за 2 час. 30 мин. [Показать отчёт] Научился: двигать яблоко Сложности: Разобраться в алгоритме, чтобы отобразить движение Мышки и яблока Комментарии: Не сразу поняла, как находится решение для перемещения яблока. Долго провозилась, чтобы сделать отображение по шагам в этой же программе. Второй скриншот получился после первого шага Мышки, не стала переделывать. |
|||||
15 | Сокобан - Решалка - Оптимизация |
1 тест |
|||
На этом коротком уроке мы рассмотрим два способа оптимизации нашей программы, в результате которых работать она станет просто молниеносно!!!
Отчёт отправил: 4004. Елена Выполнено за 15 мин. [Показать отчёт] Научился: Оптимизировать время выполнения программы Сложности: ничего Комментарии: Результат, который показал мой лабиринт при оптимизации 500 - 300 -30 500 - со списком 300 - с Dictionary 30 - с 4-мерным массивом (значения приближенные) Dictionary использовала впервые! |
|||||
16 | Сокобан - Игра - Автоходы |
1 тест |
|||
Поздравляю, программа уже создана: можно играть, можно ею хвастаться. На этом уроке мы добавим в игру автоходы, чтобы можно было управлять нашим человечком с помощью мышки - указать, куда идти, и даже указать, какой ящик куда нужно поставить. Для этого нам потребуются два класса по решению лабиринта. Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Создавать свой Сокобан Сложности: Исправить ошибки и внести изменения, связанные с переходом от консольной версии к оконной. Комментарии: Долго искала, почему ящик не двигается :) Все отлично!!! Уже получился готовый Сокобан. Отлаживала поздравительный диалог, поэтому на скрине всего 2 уровня. Есть мысль сохранять в реестре последний уровень, чтобы при повторном запуске можно было продолжить игру. |
|||||
17 | Сокобан - Редактор - На двоих |
1 тест |
|||
Переделываем редактор уровней, чтобы можно было создавать лабиринты для двоих игроков. Создаём базу из 10 новых уровней игры в Сокобан для двоих. Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Создавать уровни для двух игроков Сложности: Понять, как проходить эти самые уровни Комментарии: Отличный урок! |
|||||
18 | Сокобан - Игра - На двоих |
|
|||
Переделать игру, чтобы в неё можно было играть вдвоём на одной клавиатуре.
Отчёт отправил: 4004. Елена Выполнено за 25 мин. [Показать отчёт] Научился: Создавать управление двумя персонажами Сложности: ничего Комментарии: на ноутбуке нету цифровой клавиатуры, поэтому реализовала управление W-A-S-Z |
|||||
19 | Сокобан - Телефон - TCP/IP протокол |
1 тест |
|||
На этом видеоуроке мы создадим три класса, которые удобно использовать для передачи данных между двумя компьютерами. Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Первые шаги в проектировании Клиент-Серверных приложений Сложности: Ничего. Все очень подробно объяснено. Комментарии: Отличный урок! Новые знания! Никогда раньше не приходилось работать с TCP/IP протоколом. Самое близкое, что приходилось делать - это подключать устройство через виртуальный USB-порт (видимый как COM) для обмена данными. Поэтому с COM-портом работать умею (кстати, делала проект на C#, используя стандартный класс), а вот связывать между собой компьютеры ... теперь тоже умею :) |
|||||
20 | Сокобан - Игра - На двоих по сети |
1 тест |
|||
На этом уроке мы наконец-таки сделаем сетевую версию программы Sokoban для двоих. Мы будем использовать телефонный класс Phone с прошлого урока. Отчёт отправил: 4004. Елена Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Использовать связь двух компьютеров по TCP/IP в оконном приложении. Сложности: перезагрузить уровни в обоих окнах Комментарии: Осталось попробовать поиграть по сети :) |
|||||
21 | Сокобан - Завершение |
|
|||
Игра уже написана, но всегда можно сделать чуть-чуть лучше. На этом уроке мы объединим оба варианта игры в одну программу и загрузим файл с уровнями в ресурсы программы. Теперь в одном ехешнике будет сразу всё! Это финиш!!! Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Объединять проекты (одиночная игра и игра по сети) Сложности: найти последнюю ошибку :) (боюсь, что это пока не удалось - все ошибки почему-то предпоследние) Комментарии: Уже решила записывать видеообзор для финального урока - и обнаружила, что не исправила обработчик кнопки Esc. Вот досада :( Пришлось переделывать. |
|||||
22 | ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан |
|
|||
Задание: Записать видеообзор игры СОКОБАН. Отчёт отправил: 4004. Елена Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Практикуюсь в записи видеообзоров Сложности: Сделать запись. При закуске программы возникла ошибка. пришлось ее исправлять и все переделывать. Комментарии: Я завершила этот курс!!! Видеообзор: https://youtu.be/mCgKbXAxru0 |
|||||
23 | VIP. Бот для игры БАЛДА |
|
|||
Используя текстовый файл из 27400 слов создаём рекурсивный алгоритм подбора слов для популярной игры Балда. |
|||||
Итого: 23 видеоурока |
13 час. 51 мин. 20 тестов |
12 чел. | |||
Финалисты: LINKI, Новопашин Владимир, Tekashnik, Алексей В., zhikharevav, Evgenii Kudriavtcev, chokayes, Дмитрий, Максим Лапшинов, no name, Max, MaxB . |