# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
4 теста |
|||
Я приглашаю вас на видеокурс по созданию полноценной игровой программы СОКОБАН. Я проведу вас за руку по всем этапам создания законченной интеллектуальной игры: 1. Создание редактора уровней. 2. Придумывание этих самых уровней. 3. Создание собственно игры. 4. Решение олимпиадной задачки для добавления ИИ. 5. Переделка игры в режим "на двоих". 6. Написание класса Phone для связи двух программ по сети. 7. Создание сетевой версии игры Sokoban. Будет интересно! В конце видео - первое задание: Научиться играть! :) Ссылка на игру Сокобан Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Играть в Сокобан я умел. Вспомнил навыки. Сложности: Самое сложное было сначала найти игру - восновном предлагается только онлайн. Ну и уровни 8, 9 и особенно 10 были самыми сложными Комментарии: Я был очень впечатлён перспективой, увиденной на этом уроке... Неужели мы всё это сделаем? |
|||||
2 |
![]() |
1 тест |
|||
На этом уроке мы подготовим 6 пиктограмм и две картинки для игры, а также придумаем свой собственный уровень, который запишем в текстовый файл. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 15 мин. [Показать отчёт] Научился: Готовить картинки. Сложности: Найти картинки. Комментарии: Мы это сразу сделали!! |
|||||
3 | Сокобан - Редактор - Загрузка |
|
|||
Мы начинаем создавать редактор уровней для известной логической игры Sokoban. Редактор будет создан за четыре урока. На первом уроке мы создадим класс для загрузки уровня с текстового файла и протестируем его работу. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 2 час. 15 мин. [Показать отчёт] Научился: Научился делить строку на части, вспомнил как преобразовывать цифры из строки в число. Сложности: Найти ошибки в своей программе: когда у меня подчеркивает, а в образце - нет... Комментарии: Трудно мне... Не работал с ООП ни разу, привык к функциональному подходу, где в main() вся структура, как на ладони. Здесь с трудом видно, что за чем выполняется. Будет трудно управлять такой программой. Но я не могу (надеюсь - пока) предложить метода, который бы облегчил... Разве что нарисовать алгоритм (блок-схему) работы функций до создания программы... |
|||||
4 | Сокобан - Редактор - Интерфейс |
|
|||
На этом уроке мы создадим интерфейс программы и сделаем отображение загруженного уровня на экране. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 2 час. 45 мин. [Показать отчёт] Научился: Пользоваться автоматическим конструктором кода из формы, добавлять ресурсы в код (например значки), динамически отрисовывать размер картинок. Сложности: Самым сложным было найти иконку к редактору. Ну, нету у меня иконок, нету!... Комментарии: А у меня, кстати, не было той ошибки, которая возникла на моменте 33:30. Не знаю, почему, но не было. |
|||||
5 | Сокобан - Редактор - Редактирование |
|
|||
На третьем уроке мы сделаем наконец-таки редактирование поля. Также реализуем возможность изменения размера лабиринта. В конце напишем функцию для проверки корректности составленного уровня. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 45 мин. [Показать отчёт] Научился: Научился возвращать сообщение об ошибке. Сложности: Всё было самым сложным. Вообще всё. Голова пухнет. 1. toolWall.Checked = CurrentCell == Cell.wall; 2. x = ((Point)((PictureBox)sender).Tag).X; и т.д.... Комментарии: for (int x = 0; x < Math.Min(w, width); x++) for (int y = 0; y < Math.Min(h, height); y++) NewCell[x, y] = cell[x, y]; В уроке говориться, что мы можем вылезти за пределы массива, и поэтому используем Мин-функцию... А как мы можем выйти за пределы? |
|||||
6 | Сокобан - Редактор - Сохранение |
|
|||
На четвёртом уроке мы закончим создание редактора уровней. Напишем самую главную функцию для сохранения сделанных изменений в файл. Затем добавим кнопки перехода к следующему и предыдущему уровню. Останется только немного облагородить интерфейс программы. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Научился сохранять и загружать уровень, добавлять новый в файл с уже существующими. Сложности: Самое сложное было понять, как сохраняется и загружается уровень.... Комментарии: Так здорово, что получился готовый редактор!! |
|||||
7 | Сокобан - Редактор - Улучшение |
|
|||
Допиливаем и дорабатываем редактор до товарного вида. Реализуем ещё несколько фишек. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Научился разделять строку буквой x. Сложности: Всё на уровне. Комментарии: string[] wh = toolStripTextBoxLabibntSize.Text.Split(dl, StringSplitOptions.RemoveEmptyEntries); зачем то что идет после dl? |
|||||
8 | Сокобан - Редактор - Классика уровней |
1 тест |
|||
На этом уроке вам нужно выбрать любых два классических уровня и создать их в нашей программе-редакторе. Ссылка на классические уровни: https://logic-games.spb.ru/sokoban/ Редактор можно скачать здесь: https://www.videosharp.info/data/soft/SokobanEditor.zip |
|||||
9 | Сокобан - Создаём свои уровни |
1 тест |
|||
Твоя задача - подготовить базу уровней для игры Сокобан.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 3 час. 45 мин. [Показать отчёт] Научился: Научился сам создавать простые уровни Сложности: Создавать уровни самому Комментарии: Было здорово попробовать поделать свои уровни в своём собственном редакторе. |
|||||
10 | Сокобан - Игра - Интерфейс |
1 тест |
|||
Мы начинаем создание интеллектуальной игры СОКОБАН. У нас уже есть все необходимые классы и уровни для создания полноценной игры. На этом уроке мы создадим форму и настроим интерфейс окна лабиринта. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Познакомился с делегатами. Сложности: Самым сложным было понять, почему в функции InitPictures() panel подчеркивается красным. И почему Properties.Resources.игрок был тоже подчеркнут красным. Комментарии: ShowItem (new Place (5, 4), Cell.user) - вот строка и сразу 2 вопроса: 1. Мы при передаче в функцию (!!) используем new... это мы сразу в ней создаём, то что надо, аналогично for (int i=0; .... ? 2. Из-за того что user является как бы полем структуры Cell мы не можем обратиться к нему напрямую (не ставя слева точку и записывая имя структуры...)? Приятно взять, совершить простой (ну болеменее) набор действий и получить готовое окошко с кнопочкой))) Как будто уже готовая игра... Так и хочется нажать на кнопку "начать игру" и начать... игру))) |
|||||
11 | Сокобан - Игра - Управление |
3 теста |
|||
Теперь мы создадим класс логики игры Game, используя который, мы реализуем управление человечком курсорными клавишами клавиатуры. А также сделаем переход на следующий уровень. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 3 час. 45 мин. [Показать отчёт] Научился: Научился перехватывать стрелки клавиатуры. Сложности: Самое сложное было найти ошибку у себя, оставшуюся еще с редактора, когда следующий уровень, если его нет, не включало... Комментарии: Здорово! Теперь можно нажать на кнопку начать играть и начать!!!! .... .... Теперь надо сделать хак, чтобы можно было пропускать непройденные уровни.... |
|||||
12 | Сокобан - Решалка - Тестер |
1 тест |
|||
На этом уроке мы напишем программу, которая будет проверять правильность алгоритма поиска решения лабиринта. http://www.videosharp.info/console/task/level=1178 Отчёт отправил: 1901. Neverwinter 2 Выполнено за 2 час. 30 мин. [Показать отчёт] Научился: Научился убирать лишние пробелы в строке. Сложности: Да вобщем-то только понять, как всё это работает. Комментарии: Точку переставили. "Яблоко" совмещается с точкой, а правильность решения не пишется! Зато когда "яблоко" доходит до начального места точки, выдаётся, что решение писал инвалид.... |
|||||
13 | Сокобан - Решалка - Мышка |
1 тест |
|||
Мы начинаем решать задачу по решению игры Сокобан с одним ящиком. Эта задача олимпиадного уровня на применение алгоритма поиска вширь. Главный герой - мышка Альфа, которая желает затолкать яблочко к себе в норку. Программу мы напишем за два урока. На первом уроке мы создадим вспомогательную функцию MoveAlfa(), которая подскажет мышке как попасть из одной клетки лабиринта в другую кратчайшим путём. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Немножко познакомился с очередью. Сложности: Повторить не сложно, сложно будет всё это понять.... Комментарии: 1 for (int y = 0; y < h; y++) for (int x = 0; x < w; x++) зачем поменяли циклы местами? почему необходимо сначала по y считывать? 2 string[] info = lines[0].Split(); - что обозначает 0 в квадаратных скобках? знак пробела? знак переноса строки в юникоде? 3 map = new char[w, h]; - уже инициализировали map выше, зачем делать еще раз это со словом new? можно ли map = [w][h];? Вопросы есть еще, но пока не буду их задавать.... |
|||||
14 | Сокобан - Решалка - Яблоко |
2 теста |
|||
На втором уроке мы переделываем написанный алгоритм поиска маршрута мышки. Теперь мы разрешаем мышке толкать яблоко, и записываем все изменения их расположений. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 2 час. 30 мин. [Показать отчёт] Научился: Увидел, как можно разбивать программу на классы. Сложности: Было сложно. Очень сложно. Комментарии: Надо срочно (после окончания) заняться теорией ООП... И что-то писать самому... Общая идея то понятна, конечно, но детали реализации непостижимы. |
|||||
15 | Сокобан - Решалка - Оптимизация |
1 тест |
|||
На этом коротком уроке мы рассмотрим два способа оптимизации нашей программы, в результате которых работать она станет просто молниеносно!!!
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Оптимизировать!)) Сложности: Ничего Комментарии: Ваще Абалденно!! Да!!!! Капец я напугался.. Думал это у меня лицензия закончилась)))))))))) |
|||||
16 | Сокобан - Игра - Автоходы |
1 тест |
|||
Поздравляю, программа уже создана: можно играть, можно ею хвастаться. На этом уроке мы добавим в игру автоходы, чтобы можно было управлять нашим человечком с помощью мышки - указать, куда идти, и даже указать, какой ящик куда нужно поставить. Для этого нам потребуются два класса по решению лабиринта. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 3 час. 15 мин. [Показать отчёт] Научился: Всё было на базе известных знаний. Сложности: Самым сложным было НАЙТИ ТО, ЧТО БЫЛО ИЗМЕНЕНО в классе AppleSolver!!! Комментарии: Мы сделали уникальную функцию, которой нет нигде более! Сууупер. Видеообзор: http://www.youtube.com/watch?v=CNYTNgy_014 |
|||||
17 | Сокобан - Редактор - На двоих |
1 тест |
|||
Переделываем редактор уровней, чтобы можно было создавать лабиринты для двоих игроков. Создаём базу из 10 новых уровней игры в Сокобан для двоих. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Создавать уровни для двух игроков!! Сложности: Придумать свой уровень Комментарии: Чем дальше тем интереснее!!! У меня получилось добавить счетчик уровней! ЙЕССС!!! |
|||||
18 | Сокобан - Игра - На двоих |
|
|||
Переделать игру, чтобы в неё можно было играть вдвоём на одной клавиатуре.
Отчёт отправил: 1901. Neverwinter 2 Выполнено за 30 мин. [Показать отчёт] Научился: Научился параллельному перехвату клавиш. Сложности: Ничего. Комментарии: Блин! Неудобно так! Надо было сделать не 2 4 6 8 на нумападе, а 5 4 6 8! Ну да ладно, главное понятно, как это сделать! |
|||||
19 | Сокобан - Телефон - TCP/IP протокол |
1 тест |
|||
На этом видеоуроке мы создадим три класса, которые удобно использовать для передачи данных между двумя компьютерами. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 2 час. 15 мин. [Показать отчёт] Научился: Соединять 2 программы по TCP/IP. Сложности: Понять, как всё это работает. Комментарии: Просто супер! Полезность этого невозможно переоценить. Надеюсь в будущем улучшим, чтобы для нескольких клиентов тоже работало. |
|||||
20 | Сокобан - Игра - На двоих по сети |
1 тест |
|||
На этом уроке мы наконец-таки сделаем сетевую версию программы Sokoban для двоих. Мы будем использовать телефонный класс Phone с прошлого урока. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Соединять 2 программы по сети. Сложности: ВСЁ!! И особенно купить 2й компьютер и фотоаппарат для выполнения пунктов 14 и 15... Так и не получилось... Комментарии: про path = "3" так и не понял... Функция Recv() быстро работает и не дожидается - зависает, а path что? ....... Очень, очень сложный урок. |
|||||
21 | Сокобан - Завершение |
|
|||
Игра уже написана, но всегда можно сделать чуть-чуть лучше. На этом уроке мы объединим оба варианта игры в одну программу и загрузим файл с уровнями в ресурсы программы. Теперь в одном ехешнике будет сразу всё! Это финиш!!! Отчёт отправил: 1901. Neverwinter 2 Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Узнал как в switch case можно делать "множественное наследование". Сложности: найти свои ошибки, когда не заработало. Комментарии: да! Да! ДА! ДА-А-А-А-А-А-А-А!!! Мы сделали это! Мы сделали!! Мы сделали это ВМЕСТЕ!!!! Единственное, что еще нужно добавить, так это редактор, чтобы файл levels каждый раз в ресурсы не копировать! Ну, портфолио пока нету, я с сокобана начал, в будущем добавлю и в портфолио. |
|||||
22 | ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан |
|
|||
Задание: Записать видеообзор игры СОКОБАН. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 15 мин. [Показать отчёт] Научился: Всё умел. Сложности: Ничего. Комментарии: Вот мой обзор на курс Сокобан. Надо бы поправить описание урока. А то там требуется обзор на Пасьянс домино... Видеообзор: http://youtu.be/4IVUSinMDbA |
|||||
23 | VIP. Бот для игры БАЛДА |
|
|||
Используя текстовый файл из 27400 слов создаём рекурсивный алгоритм подбора слов для популярной игры Балда. Отчёт отправил: 1901. Neverwinter 2 Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Познакомился с алгоритмом подбора слов для игры балда Сложности: Самым сложным было составить этот довольно трудный, навороченный алгоритм. Комментарии: Кстати, в словаре мы одну букву пропустили))) Видеообзор: cs-7eVG_mUE |
|||||
Итого: 23 видеоурока |
13 час. 51 мин. 20 тестов |
12 чел. | |||
Финалисты: LINKI, Новопашин Владимир, Tekashnik, Алексей В., zhikharevav, Evgenii Kudriavtcev, chokayes, Дмитрий, Максим Лапшинов, no name, Max, MaxB . |