# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
1 тест |
|||
Мы начинаем создание игры "MineSweeper" на языке Java. В этом уроке мы поиграем в эту игру и подготовим картинки. Рекомендую самостоятельно нарисовать блок-схему игры. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 14 мин. [Показать отчёт] Научился: InellijIdea найдена в курсе, как IDE для выполнения уроков - надеюсь здесь не будет сюрпризов, как вчера, когда класс локализации курсора не отрабатывал как в уроке Со второго раза удалось открыть поле и не подорваться |
|||||
2 | Блок-схема |
1 тест |
|||
На этом уроке мы составим блок-схему программы. Что происходит в игре и как это всё связано друг с другом. Обязательно нарисуйте схему от руки или на сайте draw.io. В блок-схеме не хватает одного важно момента - найдите, чего именно и дорисуйте на схеме. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 25 мин. [Показать отчёт] Научился: paint в Java перерисовывает всю палитру, а не отдельные элементы, как в дотнет Блок-схема позволяет абстрагироваться от деталей и сформировать общую картину требуемого от программы draw.io - суперресурс для блок-схем, если нужно что-то приличнее каракулей от руки ) |
|||||
3 | Окно проекта |
1 тест |
|||
На этом уроке мы начнём создание программы. Создадим новый пустой Java-проект и создадим форму. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 46 мин. [Показать отчёт] Научился: в Java есть 2 основных пакета для создания графических интерфейсов (Graphics User Interface): Abstract Windows Toolkit (AWT, использует виджеты операционной системы) и Swing. Для группировки компонент интерфейса используются контейнеры (Container) Для создания основного контейнера для приложения наиболее распространенный контейнер - это JFrame (есть еще JWindows и JApplet) Результат работы JFrame - на иллюстрациях к отчету |
|||||
4 | Радуга картинок |
1 тест |
|||
На этом уроке мы загрузим в проект все картинки. Проинициализируем массив с картинками. Напишем функцию paint() для их отображения. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 2 час. 0 мин. [Показать отчёт] Научился: https://prog-cpp.ru/miner/ - картинки доступны здесь Прозрачностью они уже не наделены, потому можно просто посмотреть на борьбу Евгения Витольдовича с непослушными транспарентными картинками ) Вывод на форму картинок по вертикали начинается с края формы, оттого требуется дополнительный марджин либо паддинг Вывод на форму осуществляется методом drawImage графики Graphics g |
|||||
5 | Карта местности |
|
|||
На этом уроке мы создадим матрицу map, в которую случайным образом разместим мины. Потом напишем функцию addOne() для проставки цифр вокруг мин и отобразим это всё на экране. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 42 мин. [Показать отчёт] Научился: по памяти от курса майнсвипера, функционал игры был разделен на «этажи», на надводный слой, видимый всегда и на подводный слой, где могли быть мины Заполнение минами сейчас сделали рандомом, вокруг них в цикле обходятся все клетки и в них добавляется по единичке, единицы суммируются, если мины рядом |
|||||
6 | Философия сапёра |
|
|||
На этом уроке мы возьмём новые картинки, сконвертируем их в jpg чтобы убрать прозрачность. После этого пофилософствуем об аналогии компьютерного и реального мира. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: не важно, что ты скажешь собеседнику, важно что он услышит и тем более поймет История развития науки подтверждает, что гранит был крепок и давались победы никак не на блюдечке с голубой каемочкой Главный тормоз на пути развития Человека - его лень. Действительно, проще делать привычные манипуляции руками, чем попробовать сформировать новую картину мироздания и оседлать эту действительность. Кто в здравом уме, по времена Ивана Великого мог подумать, что граждане массово станут летать по небу и ездить в туристические маршруты на Северный полюс? За одни слова такие полагалось отлучение от всего чего возможно и всяческие ай-яй-яи. А тут дожили до того, что от большого ума уже от самолетов призывают отказываться) Океан, врут небось, изучен на 5 процентов всей своей площади под водой - это сколько еще не открыто и не понято. Потенциал огромен, но лень, но мракобесие и призывы поворачивать назад. А тащить себя к знаниям, как тот барон Мюнхаузен - это человека должна тема зацепить, войти как говорят младые, и воодушевить. Тогда прорыв возможен, но не гарантирован. Смотрю за «прогрессом» мобильников последние годы - ничего принципиально нового, одни украшательства и точение воды в ступе. Та же песня с автомобилями - из года в год перерисовывают мордахи, прикручивают ненужные опции, реагируют на конъюнктуру усыхающегося рынка, а о принципиально новых решениях - ни-ни. Те же машинки Тесла, как пишут, под днищем таскают тысячу - другую батареек 18650, как у меня в фонарике. Туда бы ядерный двигун с ежегодной заменой безопасных ТВЭЛов - вот бы прорыв... Стены и цепи излишни, когда тюрьма в голове определяет границы допустимого. Сложности: А возможно действительно, если не все, то многое, что и не приснится ))) Видеообзор: jga9v1RUVQg |
|||||
7 | Мины на панели |
1 тест |
|||
На этом уроке мы создадим подкласс MinePanel. Именно на этой панели мы будем размещать картинки. Сделаем всё необходимое, чтобы программа заработала. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 23 мин. [Показать отчёт] Научился: класс созданный внутри класса имеет доступ к полям и методам родительского без дополнительных модификаторов доступа сразу Метод pack(); при расчёте размера окна учитывает лишь ранее добавленные элементы и элементы добавленные строками ниже им не учитываются |
|||||
8 | Мышечный адаптер |
1 тест |
|||
На этом уроке мы добавим подкласс-адаптер для обработки нажатий кнопки мышки. Сделаем вычисление координат и простые действия по нажатию левой и правой кнопки мышки. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 3 час. 17 мин. [Показать отчёт] Научился: после добавления привязки к панели в операторе panel.addMouseListener(new MinesAdapter()); ушла ошибка нажатия клавиши мыши в пределах лейбла в подвале окна игры MouseEvent.BUTTON1 - событие нажатия ЛКМ Батон2 - ПКМ ) Возможность ставить отметки на ячейках наводит на мысли, как переделать игру в подобие ведомости по пройденным шагам в моей подработке, где множество объектов требует координации и учета, но это так, задел на будущее. Однако, в своей учебе я начал нащупывать привязку к нуждам в реальной жизни, что приободряет ) e.getButton()== MouseEvent.BUTTON3 - это сила! |
|||||
9 | Правый флаг |
1 тест |
|||
На этом уроке мы сделаем обработку правой кнопки мышки. Для этого нам придётся добавить дополнительный массив, в котором будет записано, что видно сверху нашего поля. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 49 мин. [Показать отчёт] Научился: cчетчик мин плюсует и минусует успешно, вплоть до того, что смело и без ошибок уходит в минуса ) Массив отвечающий за второй слой подвергается проверке ветвлением ифэлзом, в зависимости от открытости ставит флаг либо его убирает Маус бат0н три == это правая клавиша мыши или тачпада |
|||||
10 | Открывашка |
1 тест |
|||
На этом уроке мы сделаем фишку автоматического открытия плашек для клеток, вокруг которых уже все мины проставлены. В стандартном сапёре эта функция вызывается двойным щелчком мышки. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 58 мин. [Показать отчёт] Научился: при соответствии количества флагов около клетки номеру (цифре) клетки - открываем рядом стоящие клетки Реализовали пересчетом в цикле окружающих клеток и суммированием в переменную count Сложности: Найти причину малого количества мин на игровом поле |
|||||
11 | Волшебный метод |
1 тест |
|||
На этом уроке мы создадим волшебный метод cellOpen(). Именно в нём кроется вся магия логики игры. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 16 мин. [Показать отчёт] Научился: рекурсия начинается с операторов прекращения рекурсии, затем в цикле перебирает ячейки справа и слева на единичку, в подцикле ячейки сверху и снизу по одной, если не вышли за пределы игрового поля, то открывает ячейки, вызывая саму себя со сдвигом на единицу снова. Так и открывает, пока не сработает останов, прописанный в начале метода Если его не прописать, этот останов, то конца и края работе рекурсивной функции не будет никогда ) Сложности: Понять, почему при увеличении переменной N_MINES не растет ожидаемо количество мин на игровом поле. Вопрос все еще открытый, советы приветствуются. |
|||||
12 | Условие победы! |
1 тест |
|||
На этом уроке мы закончим создание сапёра - сделаем проверку на окончание игры, поздравление с победой, с проигрышем, и запрограммируем начало новой игры. Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 51 мин. [Показать отчёт] Научился: сообщение о победе или проигрыше реализовано тернарным оператором Проверки условия для развития игры выполнено на основе анализа содержимого ячеек массивов map и top (нижний и верхний этажи соответственно) Верхний этаж (top) имеет свойство открываться, показывая текущее состояние массива map В массиве map хранятся мины либо пустые ячейки |
|||||
Итого: 12 видеоуроков |
3 час. 00 мин. 10 тестов |
13 чел. | |||
Финалисты: Дмитрий, Алексей В., Константин, Новопашин Владимир, Елена, Иван Воронин, Максим Лапшинов, Сергей Соколов, Tekashnik, Babenko Oleg, Reinis Stacevič, Dmitry Sinitsin, Anatoli . |