# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
4 теста |
|||
Я приглашаю вас на видеокурс по созданию полноценной игровой программы СОКОБАН. Я проведу вас за руку по всем этапам создания законченной интеллектуальной игры: 1. Создание редактора уровней. 2. Придумывание этих самых уровней. 3. Создание собственно игры. 4. Решение олимпиадной задачки для добавления ИИ. 5. Переделка игры в режим "на двоих". 6. Написание класса Phone для связи двух программ по сети. 7. Создание сетевой версии игры Sokoban. Будет интересно! В конце видео - первое задание: Научиться играть! :) Ссылка на игру Сокобан Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: ничему Сложности: ничего сложного Комментарии: играл много раз, хотелось бы уже сделать что-то своё, а не пользоваться чужим! |
|||||
2 |
![]() |
1 тест |
|||
На этом уроке мы подготовим 6 пиктограмм и две картинки для игры, а также придумаем свой собственный уровень, который запишем в текстовый файл. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Подбирать исходный материал, продумывать логику уровня Сложности: придумать уровень Комментарии: я решил немного переиграть цель игры. общую цель хочу сделать как из игры CounterStrike. хочу чтобы дяденьки полицейские искали заложников и отводили в места эвакуации. а всё остальное как у Сокобана. надеюсь в дальнейшем с Вашей помощью реализую) |
|||||
3 | Сокобан - Редактор - Загрузка |
|
|||
Мы начинаем создавать редактор уровней для известной логической игры Sokoban. Редактор будет создан за четыре урока. На первом уроке мы создадим класс для загрузки уровня с текстового файла и протестируем его работу. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Считывание файла для последующего его постоянного использования(запись в массив), отработал работу с отладчиком, с просмотром данных в любой момент работы программы! Сложности: назвал переменные по-своему, и запутался. пришлось начинать с начала. а обычно я конечно же стараюсь делать свои переменные. Комментарии: Дополнительный(свой) уровень делал на работе, прикладывал в предыдущем задании. поэтому здесь только "рабочие" |
|||||
4 | Сокобан - Редактор - Интерфейс |
|
|||
На этом уроке мы создадим интерфейс программы и сделаем отображение загруженного уровня на экране. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Считывать из файла данные и интерпретировать их в графические объекты, расположенные на форме. Сложности: Понимание перехода: текстовый файл->массив->картинка->заполненная форма Комментарии: Я не понял почему и зачем нужно размещать картинки на Panel а не напрямую на Form, или Form что-то не поддерживает? |
|||||
5 | Сокобан - Редактор - Редактирование |
|
|||
На третьем уроке мы сделаем наконец-таки редактирование поля. Также реализуем возможность изменения размера лабиринта. В конце напишем функцию для проверки корректности составленного уровня. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Строить свои редакторы уровней, в которых можно самому менять значение ячеек, количество столбцов и строк матрицы. Строить дополнительные оптимизации и проверки на корректность уровней. Сложности: уследить что за чем идет, чтобы самому контролировать код, а не чтобы код контролировал меня! Комментарии: Почему размеры ящика у вас это две величины? они же всегда должны быть одинаковыми(квадратными), я их сделал одним значением. Так же как и максимальный и минимальный размер полей. При добавлении нового столбца/строки лучше чтобы добавлялись стены (ведь это крайние клетки), а не пустое поле. Что я тоже реализовал, просто поставив первым значение Wall при создании Cell{} |
|||||
6 | Сокобан - Редактор - Сохранение |
|
|||
На четвёртом уроке мы закончим создание редактора уровней. Напишем самую главную функцию для сохранения сделанных изменений в файл. Затем добавим кнопки перехода к следующему и предыдущему уровню. Останется только немного облагородить интерфейс программы. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Работа с файлами, вынесение всех используемых переменных в общий доступ, а не нужных - оставлять внутри процедуры. Разбивать программу на много мелких процедур, чтобы впоследствии использовать только эти кусочки для уже другого результата, чем использовались в начале. Отработал навык пользования Отладчиком. Сложности: Работа с отладчиком, держать в голове какая процедура за какой идет и что выполняет, поэтому пришлось писать много комментариев в программе. Комментарии: Я думаю что при переходе между уровнями нельзя их сохранять, а вдруг я передумал и хочу вернуть как было?! а при сохранении добавить проверку что на карте есть юзер и есть одна коробка, это как бы минимальное требование к уровню. У вас ещё процедуры называются одинаково (SaveLevel) в классе LevelFile и в SokobanEditor. Мне кажется что может быть путаница. |
|||||
7 | Сокобан - Редактор - Улучшение |
|
|||
Допиливаем и дорабатываем редактор до товарного вида. Реализуем ещё несколько фишек. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: С текстового поля по мною указанному разделителю считывать информацию для дальнейшего использования. Работа с логикой программы Сложности: В цикле установил не ту переменную и программа зацикливалась, разбирался почему. Оставил добавление и убирание одной строки или столбца. Если не хватает всего одной строки то так удобнее добавить Комментарии: Замечание: если после смены размера поля через текстовое поле сразу же редактировать уровень(без выбора через верхнее меню), то двойной клик мыши не срабатывал. Дописал после проверки кода клавиши переход фокуса на панель. тогда можно сразу продолжать редактировать уровень if (e.KeyCode == Keys.Enter) { ToolResizeLevel(); panel.Focus();//тут дописал чтобы терялся фокус } |
|||||
8 | Сокобан - Редактор - Классика уровней |
1 тест |
|||
На этом уроке вам нужно выбрать любых два классических уровня и создать их в нашей программе-редакторе. Ссылка на классические уровни: https://logic-games.spb.ru/sokoban/ Редактор можно скачать здесь: https://www.videosharp.info/data/soft/SokobanEditor.zip |
|||||
9 | Сокобан - Создаём свои уровни |
1 тест |
|||
Твоя задача - подготовить базу уровней для игры Сокобан.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Терпимости Сложности: Самое сложно это всегда заставлять себя, например заставлять себя думать. Но только начинать трудно, а дальше уже будет нравится! Комментарии: После первого десятка я понял что следить за уровнем было бы интересно, и добавил свою примочку. Если обратите внимание то у меня переписывается заголовок формы(наверху указан текущий уровень), а внизу скрина я показал как это можно реализовать одной строкой. |
|||||
10 | Сокобан - Игра - Интерфейс |
1 тест |
|||
Мы начинаем создание интеллектуальной игры СОКОБАН. У нас уже есть все необходимые классы и уровни для создания полноценной игры. На этом уроке мы создадим форму и настроим интерфейс окна лабиринта. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Думать, загружать в одном Решении несколько форм, манипулировать ими. Побольше узнал о структуре, перечислении, как ими правильнее пользоваться Сложности: работа над ошибками Комментарии: много кода, который для использования копируется, а не организовывается использование того же. Но я так понял что на следующих уроках это будет оптимизировано, ждем-с... |
|||||
11 | Сокобан - Игра - Управление |
3 теста |
|||
Теперь мы создадим класс логики игры Game, используя который, мы реализуем управление человечком курсорными клавишами клавиатуры. А также сделаем переход на следующий уровень. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 4 час. 00 мин. [Показать отчёт] Научился: изменять массив в зависимости от нажатых клавиш на клавиатуре. программа становится более массивной, и уследить за логикой становится труднее Сложности: увязать игру с редактором уровней Комментарии: я сразу написал строку if (placed == totals && level_nr==last_level_nr) last_level_nr = level_nr + 1; а вот с увязкой с редактором уровней пришлось повозиться |
|||||
12 | Сокобан - Решалка - Тестер |
1 тест |
|||
На этом уроке мы напишем программу, которая будет проверять правильность алгоритма поиска решения лабиринта. http://www.videosharp.info/console/task/level=1178 Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: анимации в консоли Сложности: протестировать самостоятельно тестер Комментарии: пока не понимаю как сделать чтобы робот сам придумал кротчайшее решение, только вручную своим моСКом, но думаю что это чуть погодя будет, в следующих уроках. |
|||||
13 | Сокобан - Решалка - Мышка |
1 тест |
|||
Мы начинаем решать задачу по решению игры Сокобан с одним ящиком. Эта задача олимпиадного уровня на применение алгоритма поиска вширь. Главный герой - мышка Альфа, которая желает затолкать яблочко к себе в норку. Программу мы напишем за два урока. На первом уроке мы создадим вспомогательную функцию MoveAlfa(), которая подскажет мышке как попасть из одной клетки лабиринта в другую кратчайшим путём. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Поиску маршрута по правилу "Поиск в ширину" Сложности: самому найти маршрут чтобы проверить работу робота Комментарии: у меня на скрине путь от Объекта до Яблока, а не до Домика как сказано в задании |
|||||
14 | Сокобан - Решалка - Яблоко |
2 теста |
|||
На втором уроке мы переделываем написанный алгоритм поиска маршрута мышки. Теперь мы разрешаем мышке толкать яблоко, и записываем все изменения их расположений. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: пользоваться классами Сложности: искать ошибки в своем коде Комментарии: на скрине 1. сам уровень 2. решение роботом 3. контрольное решение, предоставленное Orange(они одинаковые) |
|||||
15 | Сокобан - Решалка - Оптимизация |
1 тест |
|||
На этом коротком уроке мы рассмотрим два способа оптимизации нашей программы, в результате которых работать она станет просто молниеносно!!!
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 10 мин. [Показать отчёт] Научился: Больше узнал о List и Dictionary Сложности: осознание Комментарии: на скрине слева старые показатели, справа новые |
|||||
16 | Сокобан - Игра - Автоходы |
1 тест |
|||
Поздравляю, программа уже создана: можно играть, можно ею хвастаться. На этом уроке мы добавим в игру автоходы, чтобы можно было управлять нашим человечком с помощью мышки - указать, куда идти, и даже указать, какой ящик куда нужно поставить. Для этого нам потребуются два класса по решению лабиринта. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Соединять теорию с практикой. Заставлять компьютер двигать персонажи так как хочу я Сложности: Поиск и работа над ошибками Комментарии: А где же редактор уровней? Я подшаманил и засунул это всё в один проект, чтобы из главного меню можно было редактировать и тут же и играть! |
|||||
17 | Сокобан - Редактор - На двоих |
1 тест |
|||
Переделываем редактор уровней, чтобы можно было создавать лабиринты для двоих игроков. Создаём базу из 10 новых уровней игры в Сокобан для двоих. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: прокачал навыки Сложности: работа над ошибками Комментарии: а можно в ресурсах хранить файл с уровнями(это я уже реализовал), а главное чтобы можно было редактировать и заново в ресурсы запихивать? |
|||||
18 | Сокобан - Игра - На двоих |
|
|||
Переделать игру, чтобы в неё можно было играть вдвоём на одной клавиатуре.
Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: работа над ошибками Сложности: самому решить поставленную задачу Комментарии: всё было сделано в предыдущем уроке, здесь только отшлифовали |
|||||
19 | Сокобан - Телефон - TCP/IP протокол |
1 тест |
|||
На этом видеоуроке мы создадим три класса, которые удобно использовать для передачи данных между двумя компьютерами. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: работать с сетевыми технологиями TCP/IP через C#, передавать данные между компьютерами, делать отказоустойчивую связь. Сложности: работа с различными типами данных Комментарии: слева на скрине сервер, справа клиент. данные совпадают |
|||||
20 | Сокобан - Игра - На двоих по сети |
1 тест |
|||
На этом уроке мы наконец-таки сделаем сетевую версию программы Sokoban для двоих. Мы будем использовать телефонный класс Phone с прошлого урока. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Синхронизации двух программ, передачи нужной мне информации, логике при передачи(потере) информации Сложности: работа над ошибками синхронизации Комментарии: правильно было сказано, чтобы отдавать пользователям над этой программой ещё работать и работать, много багов нужно повыгребать |
|||||
21 | Сокобан - Завершение |
|
|||
Игра уже написана, но всегда можно сделать чуть-чуть лучше. На этом уроке мы объединим оба варианта игры в одну программу и загрузим файл с уровнями в ресурсы программы. Теперь в одном ехешнике будет сразу всё! Это финиш!!! Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: продумывать все возможные варианты Сложности: соединить всё воедино Комментарии: мои доработки: 1. я оставил возможность корректировать уровни(SokobanEditor) 2. если уровни были скорректированы, то они сохраняются в файл, и в начале проверяется наличие этого(этих) файлов 3. добавил в Мои документы на компьютере чтобы создавался файл, в котором хранится пароль от последнего пройденного уровня, и в начале проверяется есть ли файл, пароль, от этого дается возможность пропускать уровни, которые были пройдены ранее (у меня их 63 :-) ) ну и для новичков по поводу доработки - ВОЗМОЖНОСТИ БЕЗГРАНИЧНЫ, они ОГРАНИЧЕНЫ ЛИШЬ ВАШЕЙ ФАНТАЗИЕЙ! |
|||||
22 | ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан |
|
|||
Задание: Записать видеообзор игры СОКОБАН. Отчёт отправил: 6452. Кирилл Шмойлов Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Всем здравствуйте! При разработке моей игры CounterStrike Sokoban я научился многим вещам, таким как работать с панелями, создавать их программно, размещение картинок, загрузка данных из файлов и ресурсов, динамически изменять картинки в связи с заданными условиями. Научился работать с классами, подклассами, с приватными и глобальными переменными, в одном проекте использовать несколько форм одновременно. Узнал о таком методе поиска маршрута как "Поиск в ширину" и смог его реализовать в своей игре для увеличения комфортности игры. Научился передавать данными между компьютерами и завязывать всё это в одной форме, т.е. два человека на различных компьютерах управляют одной и той же формой. Мне как программисту этот видеокурс принес много нового и, порой, неожиданного в изучении возможностей языка C#. При написании других проектов ловлю себя на мысли, что вспоминаю как это было реализовано в CounterStrike Sokoban и понимаю что это возможно - это раз, что это не сложно - это два, и всё это реально можно сделать, главное применить капельку фантазии, а базу Евгений Витольдович уже заложил. P.S. для новичков по поводу доработок - ВОЗМОЖНОСТИ БЕЗГРАНИЧНЫ, они ОГРАНИЧЕНЫ ЛИШЬ ВАШЕЙ ФАНТАЗИЕЙ! Ваяйте, создавайте, не пугайтесь трудностей, они лишь у вас в голове! Сложности: Учиться с Евгением Витольдовичем легко и быстро, главное не гоните лошадей, одно-два занятия в день легко усваиваются, если больше - можете пропустить что-то важное! Комментарии: В видео не сказал ещё что редактор уровней для одиночной и для многопользовательской игры разные уровни редактирует, разные создает на диске, и если они есть то тоже никак не пересекаются с одиночной игрой Видеообзор: https://youtu.be/NSwo5RVoHUI |
|||||
23 | VIP. Бот для игры БАЛДА |
|
|||
Используя текстовый файл из 27400 слов создаём рекурсивный алгоритм подбора слов для популярной игры Балда. |
|||||
Итого: 23 видеоурока |
13 час. 51 мин. 20 тестов |
12 чел. | |||
Финалисты: LINKI, Новопашин Владимир, Tekashnik, Алексей В., zhikharevav, Evgenii Kudriavtcev, chokayes, Дмитрий, Максим Лапшинов, no name, Max, MaxB . |