Online обучение c#

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

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Статистика по видеоурокам

  • Всего просмотрено уроков: 84
  • Всего выполнено уроков: 60

Отчёты по видеоурокам

Дата Видеоурок Результат
2020-04-05 20:25 ASP.NET и GMaps Подключение Entity Framework + 10 19 час. 24 мин.
Создавать модель типа ADO.NET EDM.
Ничто.
2020-04-05 00:59 ASP.NET и GMaps Запуск ASP.NET MVC + 9 1 час. 36 мин.
Создавать контроллеры и представления.
Ничто.
2020-04-04 17:53 ASP.NET и GMaps Презентация + 8 19 мин.
Ничему новому.
Ничто.
2020-03-30 18:08 Боты Сапёра ИГРА - Матрица картинок + 9 2 час. 17 мин.
Ничему новому.
Для автоматического ресайзинга можно использовать событие формы ResizeEnd.
Ничто.
2020-03-28 21:19 Боты Сапёра ИГРА - Классные мины + 8 1 час. 30 мин.
Ничему новому.
Ничто.
2020-03-28 19:40 Боты Сапёра ИГРА - Минная картотека + 7 2 час. 8 мин.
Ничему новому.
Ничто.
2020-03-28 04:56 Сокобан Сокобан - Завершение + 11 6 час. 44 мин.
Ничему новому.
Можно было бы и одним конструктором обойтись:
public LabirintForm(int mode)
{
      this.mode = mode;
     
      myUser = 1;
      otherUser = 2;

      Init();
}
Ничто.
2020-03-27 03:21 Сокобан Сокобан - Игра - На двоих по сети + 9 9 час. 59 мин.
Ничему новому.
Чтобы сделать кнопку "Начать игру" неактивной (см. первый скриншот), нужно свойству TabIndex радиокнопки "Сервер" присвоить значение 0, и так по порядку.
Простите, но то, как решался в видеоуроке вопрос "синхронизации данных" - это откровенный костыль.
В классе Phone все установленные соединения и открытые потоки нужно корректно завершать и закрывать. Оставлять это без внимания - плохая практика в программировании.
Причина несогласованного перехода на следующий уровень заключается ни в каких-то там тайм-аутах (делегат Recv((byte)data) в классе Phone вызывается синхронно (по умолчанию в контексте текущего потока вызывается метод Invoke класса Recv (компилятор по вашему описанию делегата создаёт аж целый класс-делегат!)), и пока он не выполнится, дальнейшее чтение данных невозможно, но никаких ограничений на время его выполнения нет и не было!), а вот в чём: Если вы запустили отдельный поток, то вы не сможете из этого потока обращаться к элементам формы напрямую, так как вам будет выдаваться ошибка. Мол, вы обращаетесь к элементам, которые были созданы в другом потоке. Уберите try-catch - и вы убедитесь в правоте моих слов. Эта ситуация поправима, и мы сейчас рассмотрим решение (см. второй скриншот).
В целом же курс не плохой. Мне понравился. Спасибо вам, Евгений Витольдович, за ваш труд!
Ничто.
2020-03-25 17:40 Сокобан Сокобан - Телефон - TCP/IP протокол + 6 4 час. 17 мин.
Ничему новому.
Ничто.
2020-03-25 00:35 Сокобан Сокобан - Игра - На двоих + 8 1 час. 41 мин.
Ничему новому.
Ничто.
2020-03-24 22:50 Сокобан Сокобан - Редактор - На двоих + 8 5 час. 33 мин.
Ничему новому.
В видеоуроке добавили кнопочку второго игрока, изменили её имя, а всплывающую подсказку не изменили.
Ничто.
2020-03-23 02:48 Сокобан Сокобан - Игра - Автоходы + 10 7 час. 36 мин.
Ничему новому.
Отличный урок. Спасибо.
Ничто.
2020-03-22 04:41 Сокобан Сокобан - Решалка - Оптимизация + 12 2 час. 7 мин.
Оптимизировать данный алгоритм.
Урок интересный. Спасибо.
Ничто.
2020-03-22 02:30 Сокобан Сокобан - Решалка - Яблоко + 11 6 час. 28 мин.
Ничему новому не научился.
Но этот урок ещё интереснее предыдущего. Спасибо автору за его труд.
Сложностей не было.
2020-03-21 01:46 Сокобан Сокобан - Решалка - Мышка + 9 8 час. 1 мин.
Ничему новому не научился.
Но этот урок понравился больше предыдущих уроков из этого курса. Спасибо его создателю.
Сложностей не было.
2020-03-20 05:41 Сокобан Сокобан - Решалка - Тестер + 9 6 час. 8 мин.
Писать тестер.
Урок понравился. Спасибо его автору.
Ничто.
2020-03-19 12:14 Сокобан Сокобан - Игра - Управление + 9 13 час. 12 мин.
Ничему новому. Но урок снова понравился. Спасибо его автору.
Ничто.
2020-03-18 19:11 Сокобан Сокобан - Игра - Интерфейс + 11 4 час. 15 мин.
Ничему новому не научился, но урок понравился. Спасибо.
Ничто.
2020-03-18 03:33 Сокобан Сокобан - Создаём свои уровни + 8 3 час. 19 мин.
Создавать свои собственные уровни игры Sokoban.
Найти на это время.
2020-03-17 23:45 Сокобан Сокобан - Редактор - Классика уровней + 8 1 час. 27 мин.
Создавать классические уровни игры Sokoban.
Ничто.
2020-03-17 06:16 Сокобан Сокобан - Редактор - Улучшение + 8 9 час. 15 мин.
Ничему новому.
Можно переходить на любой уровень, просто вводя в поле "Уровень" его номер и нажимая <Enter>. А также отменять и повторять любое количество изменений, вводя их число и нажимая соответствующую кнопку. Отмену и повтор изменений реализовал с применением паттерна "Команда".
Ничто.
2020-03-16 02:16 Сокобан Сокобан - Редактор - Сохранение + 9 11 час. 58 мин.
Создавать функционал для сохранения уровня.
Не нравится код редактора. Чем дальше, тем всё неудобнее его писать. Может быть, удобнее создать отдельный обобщённый класс для работы с массивом. В нём - индексатор, в котором контролировался бы выход за границы массива, метод изменения размера массива и т. д.?!
Немного изменил код (см. первый скриншот, panel.Controls.Clear() в начале метода InitPictures).
В коде была ошибка: for (int p = newLength - 1; p > curr; p--) в методе SaveLevel класса LevelFile. Надо так: int len = curr + deltaRow; for (int p = newLength - 1; p > len; p--). Иначе, при записи первого уровня с 2 и более новыми строками возникнет ошибка выхода за границу массива lines.
Спасибо за интересный урок!
Ничто.
2020-03-14 22:07 Сокобан Сокобан - Редактор - Редактирование + 6 7 час. 7 мин.
Создавать функционал для редактирования уровня.
Ничто.
2020-03-14 05:43 Сокобан Сокобан - Редактор - Интерфейс + 4 4 час. 12 мин.
Ничему новому.
Подписываться на событие можно не только так:
      picture.MouseClick += new MouseEventHandler(pictureBox_MouseClick); // полная форма
Но и так:
      picture.MouseClick += pictureBox_MouseClick; // сокращённая форма
В этом случае используется техника предположения делегата (её ещё называют групповым преобразованием метода).
Заметка к 3 уроку: out и ref - это модификаторы (квалификаторы, спецификаторы) параметров методов, указывающие, что аргументы передаются не по значению, а по ссылке.
Ничто.
2020-03-13 22:00 Сокобан Сокобан - Редактор - Загрузка + 5 4 час. 11 мин.
Загружать уровни из файла :-).
Извиняюсь, что поместилась не вся матрица cell. Поймите, экран маленький, и не хочется ради одного отчёта менять кучу настроек, в том числе, и в VS. Тем более, что уроки по созданию редактора уровней простенькие, и не хочется здесь задерживаться надолго, а хочется уже посмотреть программирование логики игры, что, согласитесь, гораздо интереснее.
И ещё, я убрал в "switch" методов CharToCell и CellToChar первую ветку (ведь, в "default" и так возвращается Cell.none и ' ' соответственно).
Решить: менять кучу настроек ради одного отчёта, или нет (см. комментарий).
2020-03-13 17:40 Сокобан Сокобан - Подготовка - Картинки и лабиринт + 5 31 мин.
Подготовил картинки и лабиринт.
Ничто.
2020-03-02 23:41 Итератор Итератор. Список простых чисел. + 7 14 мин.
Пока ничему новому.
Ничто.
2020-03-02 19:05 Итератор Итератор. Волшебное слово yield. + 7 53 мин.
Пока ничему новому.
"yield" - это, по сути, и есть итератор (точнее, ссылка на него (см. второй скриншот, строку "return (IEnumerator) ienumerableGetEnumeratorD3;" функции "GetEnumerator")).
Ничто.
2020-03-02 05:20 Итератор Итератор. Зачем нужно два класса + 10 1 час. 9 мин.
Пока ничему новому.
Ничто.
2020-03-02 04:08 Итератор Итератор. Перебор простых чисел. + 10 14 мин.
Пока ничему.
Ничто.
2020-03-02 02:52 Итератор Итератор. Перебор чисел в итераторе. + 8 32 мин.
Пока ничему.
Ничто.
2020-03-02 01:53 Итератор Итератор. Создание пустого итератора. + 8 1 час. 23 мин.
Пока ничему новому.
Итератор - это то, что позволяет нам последовательно перебрать элементы какого-то набора.
Ничто.
2020-03-02 00:25 Итератор Итератор. Разложение числа на простые множители. + 7 36 мин.
Пока ничему новому.
Ничто.
2020-03-01 04:53 Сокобан Сокобан - Вступление + 6 4 час. 15 мин.
Играть в Sokoban.
Были незначительные сложности с управлением: иногда кладовщик толкал ящик слишком сильно.
2018-11-13 00:36 Повторение задач Stop. Think. Act. Review. + 16 46 мин.
Ничему.
Если вы, Евгений Витольдович, позволите, то мне хотелось бы решить эти задачи не только на C++, но и на других языках.
С уважением, Дмитрий.
2018-10-05 01:45 Шахматы по сети План Шахматного проекта + 18 52 мин.
Узнал о новом интересном курсе.
Опыт работы с:
1. C# - 1 год;
2. Unity, ASP.NET, MS-SQL, Entity Framework - около 6 месяцев.
В шахматы играю уже 17 лет.
Ничто.
2018-07-22 11:52 Нано-игры Арканоид - Уровень и ракетка + 19 11 час. 8 мин.
Ничему новому. Но урок интересный. Спасибо.
Ничто.
2018-07-22 00:35 Боты Сапёра ИГРА - Счастливый сапёр + 19 23 час. 51 мин.
Создавать блок-схему проекта.
Извините, в предыдущем отчёте ошибся в операторе цикла с предусловием (вместо "НЕ КОНЕЦ?" написал "КОНЕЦ?").
Ничто.
2018-07-17 03:11 Демо софт Текстовый процессор + 17 1 день 4 мин.
Ничему.
Ничто.
2018-07-16 03:05 Демо софт Менеджер паролей + 16 3 час. 51 мин.
Ничему новому. Но за урок спасибо: "Повторение - мать учения".
Ничто.
2018-07-15 04:18 Демо софт Английские карточки + 17 11 дней 13 час. 13 мин.
Работать с компонентом "Windows Media Player". Спасибо за интересный урок.
Ничто.
2018-07-12 03:15 Web API Создание Web API проекта + 18 15 час. 26 мин.
Создавать Web API. Спасибо за интересный урок.
Ничто.
2018-07-09 20:48 Простой WPF WPF. Простая змейка. VIP урок. Длина тела. + 18 29 мин.
Научился простым и правильным способом (который меня лично очень впечатлил, так как редко встречаешь что-то подобное) удлинять змейку. Спасибо за превосходный урок.
Сложностей не возникло.
2018-07-09 20:16 Простой WPF WPF. Простая змейка. Победа и поражение. + 18 1 час. 39 мин.
Ничему. Но урок получился интересный. Спасибо.
Я бы добавил панель с очками; увеличение скорости движения змейки после сбора еды; уровни, различной сложности; возможность начать каждый уровень заново (в случае проигрыша); настройку игры. Может быть, позже всё это реализую.
Ничто.
2018-07-09 18:35 Простой WPF WPF. Простая змейка. Управление движением. + 18 30 мин.
Ничему. Но урок понравился. Спасибо.
Ничто.
2018-07-09 18:03 Простой WPF WPF. Простая змейка. Таймер для еды. + 18 46 мин.
Научился добавлять таймер в WPF. Спасибо за интересный урок.
Ничто.
2018-07-09 13:59 Простой WPF WPF. Простая змейка. Эллипс на канвасе + 18 1 час. 44 мин.
Научился создавать графические объекты технологией WPF. Спасибо за интересный урок.
Ничто.
2018-07-09 02:53 Простой WPF WPF. Конвертер валюты. Ньютон против Паскаля. + 17 3 час. 23 мин.
Десериализировать JSON в класс. Позже добавлю возможность конвертации в другие валюты и элемент "ComboBox".
Ничто.
2018-07-08 20:30 Простой WPF WPF. Конвертер валюты. Курс валют в JSON. + 17 2 дня 2 час. 43 мин.
Научился работать с JSON.
Ничто.
2018-07-06 17:44 Простой WPF WPF. Конвертер валюты. Класс конвертации. + 16 33 мин.
Ничему новому, но урок всё равно интересный.
Ничто.
2018-07-03 23:16 Простой WPF WPF. Конвертер валюты. Макет программы + 18 59 мин.
Создавать макет программы, применяя технологию WPF.
Спасибо за интересный урок.
Ничто.
2018-07-01 23:08 Демо игры Камень ножницы бумага + 18 10 час. 2 мин.
Ничему новому. Но урок интересный. Получил от него большое удовольствие.
Ничто.
2018-07-01 01:47 Демо игры Бот для Быстрощёлка + 16 3 час. 9 мин.
Научился работать с элементом "TrackBar", создавать ботов. Прикоснулся к системному программированию (работа с мышью), которое меня лично очень интересует.
Спасибо, Евгений Витольдович, за великолепнейший урок. Побольше бы таких уроков.
Ничто.
2018-06-30 22:22 Демо игры Игра Быстрощёлк + 16 21 час. 52 мин.
Переводить тики в секунды.
В методе "stopGame" изменил формат вывода числа с "#.#" на "0.00":

labelResult.Text = clicksPerSecond.ToString("0.00") + " кликов\n\rза секунду";

, т. к. при записи "#.#" число 0,5 отображается вот так: ,5.
Не удалось побить рекорд Евгения Витольдовича по быстрощёлканью.
2018-06-30 00:29 Демо игры Лабиринт 2D - игра + 16 23 час. 17 мин.
Хочу кое-что объяснить. Я пришёл на этот сайт уже со стандартным набором знаний по C# в надежде дополнить его до профессионального. Поэтому я в большинстве случаев и пишу в отчётах, что ничего нового на уроке не узнал. Вы уж не обижайтесь и не считайте меня каким-то "Знайкой-Зазнайкой" :-). Я пришёл сюда, как и многие, учиться, делиться знаниями и опытом программирования на C# (и не только на нём), набираться ещё большего опыта. Тем более, что его-то мне катастрофически не хватает.
Несмотря на вышесказанное, урок был очень интересным. При тестировании 2-го уровня у меня были случаи, когда после прохождения 1-го уровня курсор мышки на доли секунды оставался на поле "Финиш" 2-го уровня и я попадал сразу на 3-ий.  Эту проблему я решил, добавив в метод-обработчик события "labelFinish_MouseEnter" условие: "Если дверь открыта, тогда завершить уровень":
private void labelFinish_MouseEnter(object sender, EventArgs e)
{
    if (! labelDoor.Visible) FinishGame();
}
. Интересно получается: вроде поле "Финиш" закрыто дверью, и на него не попадёшь, пока ключ не возьмёшь, но в действительности это не так. И я думаю, что Евгений Витольдович специально оставил этот баг, так сказать, на "засыпку".
Ещё я столкнулся с тем, что при запуске по центру родительского контейнера у меня, в отличие от Евгения Витольдовича, 2-я, 3-я и 4-я формы налезали на заголовок окна 1-й. Поэтому я не стал убирать у них рамку, а оформил их так же, как 1-ую. Но столкнулся со следующей проблемой: на первых порах (пока не прописано, что за боковые стены заходить нельзя) при сворачивании последующей формы видна предыдущая. Посоветуйте, пожалуйста, как решить эту проблему. Сейчас, благодаря появлению модального окна при заходе на боковые стены, свернуть основное окно невозможно. Но всё-таки хочется запускать все формы в одном окне и сохранить при этом возможность сворачивать окно. Заранее благодарен всем откликнувшимся.
Разместить 2-ую и последующие формы в нужном месте.
2018-06-29 00:15 Демо игры Лабиринт 2D - меню + 17 5 час. 32 мин.
Работать с классом SoundPlayer.
Спасибо за интересный урок.
Воспроизвести wav-файлы (System.InvalidOperationException: "Звуковой API поддерживает воспроизведение только волновых файлов PCM"). Устранил проблему конвертацией wav в wav с кодеком PCM.
2018-06-28 17:23 Демо игры Картинка с секретом + 17 1 день 1 час. 29 мин.
Урок замечательный, но я ,к сожалению, ничего нового не узнал.
Ничто.
2018-06-28 02:12 Демо софт Двенадцать месяцев + 18 2 дня 6 мин.
Работать с календарём.
Чтобы программа корректно закрывалась после появления сообщения об ошибке, необходимо создать обработчик события загрузки формы, сделав по ней двойной клик мышью, и вызвать метод "Show_MonthPicture" непосредственно из него:
private void FormTwelveMonths_Load(object sender, EventArgs e)
{
  Show_MonthPicture();
}
. В "catch" же использовать метод "Close":
catch
{
  MessageBox.Show("Файлы с картинками не найдены!", "Ошибка");
  this.Close();
}
.
Ничто.
2018-06-27 15:51 Демо игры C# чего начать программировать + 17 12 мин.
Хочу стать .Net Developer.

2018-06-26 02:03 Демо софт Вступительное слово + 17 1 час. 56 мин.
Познакомился с сайтом.

Visual Studio использую уже 3 года. Месяц назад установил себе Visual Studio 2017 (русская версия). Программированием занимаюсь 14 лет. Сейчас перехожу с C++ на C#. Недавно написал на нём "Пятнашки".

Мне очень нравятся ваши, Евгений Витольдович, видеоуроки. Я представляю сколько труда было в них вложено. Спасибо вам за это. Что я жду от этих уроков? Наверное, возможность узнать о программировании больше.
Отправить отчёт :-) (произошёл автоматический выход из аккаунта).
  Шарики Шарики. Вступление   Открыто


  Демо игры ФИНАЛЬНЫЙ УРОК   Открыто


  Демо софт Квадратный калейдоскоп   Открыто


  БД - Книжка оценок Проектирование БД «Книжка оценок»   Открыто


  Микроигры Игра 15 - Кнопки   Открыто


  Сокобан ФИНАЛЬНЫЙ урок. Видео-обзор проекта Сокобан   Открыто


  Хранитель экрана Создаём графику   Открыто


  БД - Управление гостиницей Вступление   Открыто


  Новые технологии Модульное тестирование   Открыто


  Базовый ASP.ект Мы начинаем ASP.NET с MVC   Открыто


  Бинарная жизнь Правила игры   Открыто


  Фотошарп 256 оттенков серого   Открыто


  Итератор Итератор. Один метод вместо классов.   Открыто


  Entity Framework Введение в EF   Открыто


  Мат Конём и Слоном Постановка задачи   Открыто


  Боты Сапёра ИГРА - Карта минного поля   Открыто


  ASP.NET и GMaps Золотой ключик api   Открыто


  Футбольная база Структура турнирной таблицы   Открыто


  Начало здесь День №1. Создание микро-Привычки.   Открыто


  Дневник успеха Рефлексия уходящего года   Открыто


  Записи вебинаров GIT-практикум   Открыто


  Повторение задач 10% Процесс пошёл!   Открыто


  marafon Новогодний Марафон - Вариант участия   Открыто


  Платформер на Unity 1. Вступление   Открыто


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





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

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

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

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


Научился: Ничему новому. Подписываться на событие можно не только так: picture.MouseClick += new MouseEventHandler(pictureBox_MouseClick); // полная форма Но и так: picture.MouseClick += pictureBox_MouseClick; // сокращённая форма В этом случае используется техника предположения делегата (её ещё называют групповым преобразованием метода). Заметка к 3 уроку: out и ref - это модификаторы (квалификаторы, спецификаторы) параметров методов, указывающие, что аргументы передаются не по значению, а по ссылке.



Научился: Десериализировать JSON в класс. Позже добавлю возможность конвертации в другие валюты и элемент "ComboBox".