Как создать программу для компьютера

Формула программиста

основатель — Волосатов Евгений Витольдович

Клуб формулистов - Ежемесячная подписка

Вступление в Клуб Формулистов на выгодных условиях для НОВЫХ участников.

После взноса  999  499 руб. вы получите подписку
в Клуб Формулистов на 30 дней и 256 байт для быстрого старта.
Байты используются для открытия более одного урока в день, по 50 байт за урок.

Стоимость 1 дня за первый месяц: всего 16 рублей.

Первый взнос - 499 руб./30 дней.

Через 30 дней будет списано 3,000 2,400 руб.
за продление подписки в Клуб на 30 дней + подарок 512 байт.

Так будет продолжаться каждые 30 дней, пока вы не отмените подписку.
Средства будет автоматически считываться с вашей карты.
Вы в любой момент сможете отказаться от продления Клуба.

Только ДО КОНЦА НЕДЕЛИ -
-50% скидка на первый взнос, всего 499 (вместо 999) рублей!
-20% скидка на ЕЖЕМЕСЯЧНЫЙ платёж!
Всего 2400 руб/месяц (вместо 3000 руб/месяц), или 80 руб./день - цена чашки кофе.


Стоимость 1 дня: 80 руб.

Хочу вступить!

Также есть другие варианты оплаты участия в КФ:

Билет в клуб формулистов на ...
30+ дней | 60 дней | 150 дней | 380 дней | 1000 дней

Внимание!
Стоимость участия в Клубе формулистов увеличивается 1 числа каждого месяца на 100 рублей.
При оформления подписки стоимость остаётся постоянной, пока подписка не будет отменена.







Первый взнос - 499 руб./30 дней + 500 байт.
Последующие взносы - 3,000 2400 руб./месяц + 512 байт.



Список уроков | фото | видео

# Название видеоурока Видео / Тесты Решило Рейтинг Доступ
1 FREE Вступление 00:05:24
1 тест
23 чел. ★ 4.8 Done
  Мы начинаем создание игры "MineSweeper" на языке Java.
В этом уроке мы поиграем в эту игру и подготовим картинки.
Рекомендую самостоятельно нарисовать блок-схему игры.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 14 мин. [Показать отчёт]
Научился: InellijIdea найдена в курсе, как IDE для выполнения уроков - надеюсь здесь не будет сюрпризов, как вчера, когда класс локализации курсора не отрабатывал как в уроке Со второго раза удалось открыть поле и не подорваться 
2 Блок-схема 00:09:09
1 тест
19 чел. ★ 5 Done
  На этом уроке мы составим блок-схему программы.
Что происходит в игре и как это всё связано друг с другом.
Обязательно нарисуйте схему от руки или на сайте draw.io.
В блок-схеме не хватает одного важно момента -
найдите, чего именно и дорисуйте на схеме.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 25 мин. [Показать отчёт]
Научился: paint в Java перерисовывает всю палитру, а не отдельные элементы, как в дотнет Блок-схема позволяет абстрагироваться от деталей и сформировать общую картину требуемого от программы draw.io - суперресурс для блок-схем, если нужно что-то приличнее каракулей от руки ) 
3 Окно проекта 00:13:51
1 тест
18 чел. ★ 5 Done
  На этом уроке мы начнём создание программы.
Создадим новый пустой Java-проект и создадим форму.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 46 мин. [Показать отчёт]
Научился: в Java есть 2 основных пакета для создания графических интерфейсов (Graphics User Interface): Abstract Windows Toolkit (AWT, использует виджеты операционной системы) и Swing. Для группировки компонент интерфейса используются контейнеры (Container) Для создания основного контейнера для приложения наиболее распространенный контейнер - это JFrame (есть еще JWindows и JApplet) Результат работы JFrame - на иллюстрациях к отчету 
4 Радуга картинок 00:24:07
1 тест
16 чел. ★ 5 Done
  На этом уроке мы загрузим в проект все картинки.
Проинициализируем массив с картинками.
Напишем функцию paint() для их отображения.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 2 час. 0 мин. [Показать отчёт]
Научился: https://prog-cpp.ru/miner/ - картинки доступны здесь Прозрачностью они уже не наделены, потому можно просто посмотреть на борьбу Евгения Витольдовича с непослушными транспарентными картинками ) Вывод на форму картинок по вертикали начинается с края формы, оттого требуется дополнительный марджин либо паддинг Вывод на форму осуществляется методом drawImage графики Graphics g 
5 Карта местности 00:18:01
16 чел. ★ 5 Done
  На этом уроке мы создадим матрицу map,
в которую случайным образом разместим мины.
Потом напишем функцию addOne() для проставки
цифр вокруг мин и отобразим это всё на экране.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 42 мин. [Показать отчёт]
Научился: по памяти от курса майнсвипера, функционал игры был разделен на «этажи», на надводный слой, видимый всегда и на подводный слой, где могли быть мины Заполнение минами сейчас сделали рандомом, вокруг них в цикле обходятся все клетки и в них добавляется по единичке, единицы суммируются, если мины рядом 
6 Философия сапёра 00:09:44
15 чел. ★ 4.9 Done
  На этом уроке мы возьмём новые картинки,
сконвертируем их в jpg чтобы убрать прозрачность.
После этого пофилософствуем об аналогии
компьютерного и реального мира.

Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: не важно, что ты скажешь собеседнику, важно что он услышит и тем более поймет История развития науки подтверждает, что гранит был крепок и давались победы никак не на блюдечке с голубой каемочкой Главный тормоз на пути развития Человека - его лень. Действительно, проще делать привычные манипуляции руками, чем попробовать сформировать новую картину мироздания и оседлать эту действительность. Кто в здравом уме, по времена Ивана Великого мог подумать, что граждане массово станут летать по небу и ездить в туристические маршруты на Северный полюс? За одни слова такие полагалось отлучение от всего чего возможно и всяческие ай-яй-яи. А тут дожили до того, что от большого ума уже от самолетов призывают отказываться) Океан, врут небось, изучен на 5 процентов всей своей площади под водой - это сколько еще не открыто и не понято. Потенциал огромен, но лень, но мракобесие и призывы поворачивать назад. А тащить себя к знаниям, как тот барон Мюнхаузен - это человека должна тема зацепить, войти как говорят младые, и воодушевить. Тогда прорыв возможен, но не гарантирован. Смотрю за «прогрессом» мобильников последние годы - ничего принципиально нового, одни украшательства и точение воды в ступе. Та же песня с автомобилями - из года в год перерисовывают мордахи, прикручивают ненужные опции, реагируют на конъюнктуру усыхающегося рынка, а о принципиально новых решениях - ни-ни. Те же машинки Тесла, как пишут, под днищем таскают тысячу - другую батареек 18650, как у меня в фонарике. Туда бы ядерный двигун с ежегодной заменой безопасных ТВЭЛов - вот бы прорыв... Стены и цепи излишни, когда тюрьма в голове определяет границы допустимого. 
Сложности: А возможно действительно, если не все, то многое, что и не приснится ))) 
Видеообзор: jga9v1RUVQg
7 Мины на панели 00:12:02
1 тест
15 чел. ★ 5 Done
  На этом уроке мы создадим подкласс MinePanel.
Именно на этой панели мы будем размещать картинки.
Сделаем всё необходимое, чтобы программа заработала.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 23 мин. [Показать отчёт]
Научился: класс созданный внутри класса имеет доступ к полям и методам родительского без дополнительных модификаторов доступа сразу Метод pack(); при расчёте размера окна учитывает лишь ранее добавленные элементы и элементы добавленные строками ниже им не учитываются 
8 Мышечный адаптер 00:12:30
1 тест
14 чел. ★ 5 Done
  На этом уроке мы добавим подкласс-адаптер
для обработки нажатий кнопки мышки.
Сделаем вычисление координат
и простые действия по нажатию
левой и правой кнопки мышки.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 3 час. 17 мин. [Показать отчёт]
Научился: после добавления привязки к панели в операторе panel.addMouseListener(new MinesAdapter()); ушла ошибка нажатия клавиши мыши в пределах лейбла в подвале окна игры MouseEvent.BUTTON1 - событие нажатия ЛКМ Батон2 - ПКМ ) Возможность ставить отметки на ячейках наводит на мысли, как переделать игру в подобие ведомости по пройденным шагам в моей подработке, где множество объектов требует координации и учета, но это так, задел на будущее. Однако, в своей учебе я начал нащупывать привязку к нуждам в реальной жизни, что приободряет ) e.getButton()== MouseEvent.BUTTON3 - это сила! 
9 Правый флаг 00:15:44
1 тест
13 чел. ★ 5 Done
  На этом уроке мы сделаем обработку правой кнопки мышки.
Для этого нам придётся добавить дополнительный массив,
в котором будет записано, что видно сверху нашего поля.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 49 мин. [Показать отчёт]
Научился: cчетчик мин плюсует и минусует успешно, вплоть до того, что смело и без ошибок уходит в минуса ) Массив отвечающий за второй слой подвергается проверке ветвлением ифэлзом, в зависимости от открытости ставит флаг либо его убирает Маус бат0н три == это правая клавиша мыши или тачпада 
10 Открывашка 00:16:46
1 тест
13 чел. ★ 5 Done
  На этом уроке мы сделаем фишку автоматического
открытия плашек для клеток, вокруг которых уже
все мины проставлены. В стандартном сапёре эта
функция вызывается двойным щелчком мышки.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 58 мин. [Показать отчёт]
Научился: при соответствии количества флагов около клетки номеру (цифре) клетки - открываем рядом стоящие клетки Реализовали пересчетом в цикле окружающих клеток и суммированием в переменную count 
Сложности: Найти причину малого количества мин на игровом поле 
11 Волшебный метод 00:23:39
1 тест
13 чел. ★ 4.8 Done
  На этом уроке мы создадим
волшебный метод cellOpen().
Именно в нём кроется вся магия логики игры.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 16 мин. [Показать отчёт]
Научился: рекурсия начинается с операторов прекращения рекурсии, затем в цикле перебирает ячейки справа и слева на единичку, в подцикле ячейки сверху и снизу по одной, если не вышли за пределы игрового поля, то открывает ячейки, вызывая саму себя со сдвигом на единицу снова. Так и открывает, пока не сработает останов, прописанный в начале метода Если его не прописать, этот останов, то конца и края работе рекурсивной функции не будет никогда ) 
Сложности: Понять, почему при увеличении переменной N_MINES не растет ожидаемо количество мин на игровом поле. Вопрос все еще открытый, советы приветствуются. 
12 Условие победы! 00:19:06
1 тест
13 чел. ★ 5 Done
  На этом уроке мы закончим создание сапёра -
сделаем проверку на окончание игры,
поздравление с победой, с проигрышем,
и запрограммируем начало новой игры.
Отчёт отправил: 17947. Dmitry Sinitsin Выполнено за 1 час. 51 мин. [Показать отчёт]
Научился: сообщение о победе или проигрыше реализовано тернарным оператором Проверки условия для развития игры выполнено на основе анализа содержимого ячеек массивов map и top (нижний и верхний этажи соответственно) Верхний этаж (top) имеет свойство открываться, показывая текущее состояние массива map В массиве map хранятся мины либо пустые ячейки 
  Итого:   12 видеоуроков 3 час. 00 мин.
10 тестов
13 чел. ★ 4.96  
  Финалисты:   Дмитрий,   Алексей В.,   Константин,   Новопашин Владимир,   Елена,   Иван Воронин,   Максим Лапшинов,   Сергей Соколов,   Tekashnik,   Babenko Oleg,   Reinis Stacevič,   Dmitry Sinitsin,   Anatoli .

Начинаем практику по языку C#





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.


Научился: Почему-то paintComponent в классе MinePanel, унаследованном от JPanel, так и не отрабатывает.
Трудности: Трудностей не возникло. Спасибо за урок!



Научился: Работать с панелью отдельно от формы
Трудности: Сложного - ничего, но всё новое.
Пока вопросов нет. Идем дальше.