C# обучение видео

Формула программиста
основатель — Волосатов Евгений Витольдович

Морской Флот

Серия из 50 коротких уроков по созданию
многопользовательской "Морской Флот".
Будет серверная часть на PHP с Базой данных MySQL.
также будут использованы анимированные спрайты
для оформления клиентской части программы.


Объём: 50 уроков.
Срок: 50 дней.


5,000 руб.


Для подписки на пакет необходимо авторизоваться.

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

# Название видеоурока Решило Рейтинг Доступ
1 Вступление 00:22:00 51 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 40 мин. [Показать отчёт]
Научился: каков план действий 
Сложности: смотреть 
Комментарии: =) 
2 Интерфейс - Первый кораблик 00:32:33 46 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: отображать графические элементы 
Сложности: рисовать 
Комментарии: no comments =) 
3 Интерфейс - А на море корабли 00:22:26 45 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: 1. размещать изображения со свойством фона transparent поверх других 2. преобразовывать координаты мышки для размещения картинок строго в ячейках 
Сложности: преобразовывать координаты мышки для размещения картинок строго в ячейках 
Комментарии: =) 
4 Графика - Карта Морского флота 00:31:14 35 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: алгоритм проверки занятости ячеек в диапазоне 
Сложности: особо ничего 
Комментарии: =) 
5 Графика - Выстрелы по Кораблям 00:14:31 35 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 50 мин. [Показать отчёт]
Научился: топить корабли компьютера) 
Сложности: попадать в одноклеточных 
Комментарии: 7 из 7 при поле 49? Я правильно понимаю, что в лучшем случае вероятноть составит: 7/49*6/40*5/34*4/28*3/22*2/16*1/12=0,00006% ? 
6 Графика - Рефакторинг 00:26:11 34 чел. ★ 4.8 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 20 мин. [Показать отчёт]
Научился: рефакторинг созданного ранее кода 
Сложности: какие функции вынести в отдельный класс, чтобы все заработало 
Комментарии: рефакторинг вызывает некоторое внутреннее сопротивление, т.к. все будет "поломано")) 
7 Анимация - Полёт снаряда 00:08:33 30 чел. ★ 4.7 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: рисовать снаряд 
Сложности: рисовать не умею 
Комментарии: =) 
8 Анимация - Отображение кадров 00:31:33 30 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: делать анимацию движения и взрыва снаряда 
Сложности: сделать скриншот полета снаряда 
Комментарии: =) 
9 Анимация - Полёт по таймеру 00:28:19 29 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: 1) использовать таймер для отображения анимации в отдельном потоке 2) функции изменения координат по таймеру 
Сложности: функция изменения координат по таймеру и приведение координат от абстрактных к пикчербоксовским 
Комментарии: Oo== -----o-----------\\|// 
10 Архитектура - Перезагрузка проекта 00:24:35 29 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: суровой правде рефакторинга 
Сложности: начать заново 
Комментарии: no comments 
11 Архитектура - Карта Пиратов 00:34:23 29 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 30 мин. [Показать отчёт]
Научился: распределять карту выстрелов и кораблей по различным массивам 
Сложности: большое количество перечислений 
Комментарии: чувствуется серьезный подход к планированию в этой программе) 
12 Архитектура - Наследие картинок 00:31:55 29 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: 1. Наследованию от класса PictureBox и использованию конструкции :base() 2. Передавать в класс контрол с главной формы через Control.ControlCollection 3. Задавать размещение игровых полей и пикчербоксов через одну формулу  
Сложности: размещение игровых полей и пикчербоксов через одну формулу 
Комментарии: а можно ли было не передавать пикчербокс с главной формы, а использовать делегат для его обновления/заполнения? 
13 Архитектура - Фабрика картинок 00:16:15 29 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 40 мин. [Показать отчёт]
Научился: Заполнять пикчербоксы значениями на основе различных состояний массива 
Сложности: большое количество взаимосвязанных элементов 
Комментарии: массивно выглядит ) 
14 Архитектура - Мышкой по кораблям 00:21:27 29 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 40 мин. [Показать отчёт]
Научился: обрабатывать событие выстрела по карте мышкой, передавая данные от пикчербокса через делегат в форму и из формы обратно к наследным классам 
Сложности: большое количество переходов между уровнями наследования 
Комментарии: очень здорово реализован клик мышкой). я сначала не стал делать доп. делегат, а сделал ф-ию BoxClicked - static, но она тогда не видит ocean[], который не статик, так что пришлось переделать как надо)) 
15 База Морского Флота - INFO 00:11:16 35 чел. ★ 4.8 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: составлять схему таблицы БД и схему состояний 
Сложности: особо ничего 
Комментарии: =) 
16 База Морского Флота - SHIP 00:10:47 35 чел. ★ 4.8 Done
  Отчёт отправил: 4780. Дмитрий Решено за 40 мин. [Показать отчёт]
Научился: записывать состояния объекта схематически 
Сложности: рисовать схемы) 
Комментарии: =) 
17 База Морского Флота - GAME 00:12:00 33 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: составлять схему и таблицу для Game 
Сложности: представить как это все будет реализовано 
Комментарии: =) 
18 База Морского Флота - phpMyAdmin 00:12:49 33 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 45 мин. [Показать отчёт]
Научился: создавать таблицы в PHPMyAdmin 
Сложности: все, я в БД "0" 
Комментарии: no comments 
19 База Морского флота - Экспресс SQL 00:40:56 31 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 30 мин. [Показать отчёт]
Научился: выполнять запросы MySQL через PHPMyAdmin 
Сложности: новый синтаксис. да все новое) 
Комментарии: =) 
20 База Морского Флота - Запросы SQL 00:41:23 30 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 20 мин. [Показать отчёт]
Научился: выполнять различные MySql команды применительно к таблицам базы данных 
Сложности: особо ничего 
Комментарии: Я в БД и серверах вообще 0. Выбрал первый бесплатный хостинг 000webhost.com, где и сделал БД. Там есть поддержка MySQL + PhpMyAdmin, но там нет варианта InnoDB, я выбрал Memory. Надеюсь, это не принципиально. 
21 Протокол - Список команд 00:12:40 24 чел. ★ 4.7 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: порядку взаимосвязи между клиентом и БД через веб-сервер 
Сложности: много нового: xml, PHP, mySql 
Комментарии: no comments 
22 Протокол - Команды INFO и SHIP 00:53:55 23 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 30 мин. [Показать отчёт]
Научился: писать sql запросы 
Сложности: комбинация различных языков 
Комментарии: вроде принцип понятен 
23 Протокол - Команда FIRE 00:56:38 23 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 40 мин. [Показать отчёт]
Научился: выполнять выстрелы в БД и обновлять результаты в таблице состояний игры 
Сложности: много копипаста и не совсем удобно писать в блокнот после Visual Studio, кажется что код висит в воздухе) 
Комментарии: =) 
24 Протокол - Команда GAME 00:11:13 23 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: составил sql запрос к базе 
Сложности: ожидание php 
Комментарии: no comments 
25 Серверный флот - FTP подключение 00:06:50 23 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 2 час. 00 мин. [Показать отчёт]
Научился: что такое домен, хостинг и что это не бесплатно) 
Сложности: разобраться что к чему 
Комментарии: раньше доменты не регистрировал, как и хостинги, незнакомый зверь. Но интересно) 
26 Серверный флот - Как PHP дружит с MySQL 00:07:35 23 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 2 час. 50 мин. [Показать отчёт]
Научился: подсоединяться к БД MySQL при помощи скрипта PHP и выводить содержание таблицы БД 
Сложности: решать всякие непонятки с соединениями, доменами, ftp, подсоединением к БД. 
Комментарии: почему -то по русски пхп сообщения хром выдает абракадаброй. английские echo сообщения - нормально. 
27 Серверный флот - Рефакторинг РНР-кода 00:20:37 23 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: создавать функции для SQL-запроса и выбора строки в PHP, подключать файлы по include, возвращать описание ошибки через mysqli_errno($my_link) 
Сложности: Уже так привык к подсказкам и помощи и предкомпиляцонной проверке ошибок в Visual Studio, что поиск синтаксической ошибки в текстовом файле .php кажется дикостью. Где вообще точки останова?))) 
Комментарии: так или иначе, но работает, результат выдает. приятно) 
28 Серверный флот - Функция do_info 00:11:33 23 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: вытаскивать переменные из массива, формировать .xml файл и выводить его 
Сложности: незнакомые функции 
Комментарии: в принципе выводит, только неровно как-то 
29 Серверный флот - Капитан очевидность 00:19:04 23 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 40 мин. [Показать отчёт]
Научился: получать пронумерованный массив из БД, следить за временем при помощи функции microtime() 
Сложности: ничего, новые функции только 
Комментарии: почему капитан очевидность только не понял) 
30 Серверный флот - Функция do_ship 00:50:43 23 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 3 час. 00 мин. [Показать отчёт]
Научился: 1. передавать значения переменных программе прямо через адресную строку конструкцией http://dimasian.ru/battle.php?do=info и при помощи php функции intval($_GET["ocean"]); 2. лучше стал понимать как PHP и MySQL работают в связке 
Сложности: размер функции do_ship() - тяжело искать ошибки, особенно, если не знаешь где 
Комментарии: кроме таблички с результатом почему-то выводятся многочисленные Array([0]=>0) значения 
31 Серверный флот - Функция do_fire 00:46:57 23 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 2 час. 30 мин. [Показать отчёт]
Научился: Выполнять выстрел по морям при помощи php и MySql, проверять условие победы. Обновлять значения в таблице БД. 
Сложности: тяжело представить себе взаимодействие между элементами программы, т.к. все функции расположены в одном файле 
Комментарии: вроде работает)) 
32 Серверный флот - Функция do_game 00:14:08 22 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 40 мин. [Показать отчёт]
Научился: формировать .xml запрос из нескольких частей 
Сложности: синтаксические ошибки исправлять 
Комментарии: совсем новое направление все эти xml, sql, php, но, как ни странно, более-менее понятно 
33 ПОЛУФИНАЛЬНЫЙ УРОК. Большая игра 00:19:58 21 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: выводить в браузер отображение изменений в БД MySQL при помощи языка php и запросов sql 
Сложности: понять содержание примера map.php 
Комментарии: очень интересный пример с map.php, хотя сам бы я не смог на данный момент такое написать 
Видеообзор: https://youtu.be/TY0Qy5x3FWk
34 Клиентский флот - Подключение к серверу 00:16:05 23 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: делать веб-запрос из приложение winforms при помощи класса WebRequest или WebClient 
Сложности: пока что ничего 
Комментарии: хорошо, что все классы уже придуманы до нас) 
35 Клиентский флот - Парсинг XML 00:21:34 20 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 50 мин. [Показать отчёт]
Научился: парсить xml документы при помощи классов XmlDocument.LoadXml(для загрузки) и XmlNodeList.GetElementsByTagName(для обращения к конкретному элементу документа) 
Сложности: когда не заработало с первого раза, пришлось вывести содержание ошибки через catch (Exception ex)=>errMessage= ex.ToString(); Оказалось - ошибка в теге в самом документе .php 
Комментарии: интересный урок, парсинг xml оказался проще, чем я думал 
36 Клиентский флот - Класс ServerInfo 00:25:00 20 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: каким образом будет реализована модель классов сервера 
Сложности: что оставить, а что перенести 
Комментарии: no comments ) 
37 Клиентский флот - Класс ServerShip 00:34:41 20 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: 1. запускать функцию do=ship на сервере через клиент 2. извлекать координаты кораблей из двумерного массива 
Сложности: извлечение координат и составление строки запроса 
Комментарии: =) 
38 Клиентский флот - Класс ServerFire 00:31:08 19 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 50 мин. [Показать отчёт]
Научился: выполнять выстрелы из клиента при помощи строки запроса и формировать xml ответ 
Сложности: комбинация инструментов 
Комментарии: после перерыва сложно вспомнить вообще что к чему) 
39 Клиентский флот - Класс ServerGame 00:37:13 18 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 30 мин. [Показать отчёт]
Научился: парсить xml 
Сложности: вообще сложный урок) 
Комментарии: почему-то после размещения кораблей на океане 0, сразу переходит в режим play и не дает размещать остальные корабли 
40 Одинокий капитан - Прицел 00:16:57 18 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: добавили класс для отображения прицела 
Сложности: особо ничего 
Комментарии: =) 
41 Одинокий капитан - Выстрелы 00:15:24 18 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 40 мин. [Показать отчёт]
Научился: отображать прицел на экранной форме в момент выполнения выстрела 
Сложности: ничего 
Комментарии: =) 
42 Одинокий капитан - Победа! 00:25:02 18 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 00 мин. [Показать отчёт]
Научился: обновлять состояние программы по таймеру 
Сложности: исправлять свои ошибки 
Комментарии: =) 
43 Финишная миля. Перезагрузка. 00:04:15 17 чел. ★ 4.8 Done
  Отчёт отправил: 4780. Дмитрий Решено за 20 мин. [Показать отчёт]
Научился: сбрасывать данные в базе данных через php 
Сложности: ничего 
Комментарии: no comments) 
44 Финишная миля. Мой океан. 00:42:18 16 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 1 час. 30 мин. [Показать отчёт]
Научился: рефакторингу) 
Сложности: программа разрослась, а общей схемы нет, часто тяжело понять где что искать 
Комментарии: =) 
45 Финишная миля. Найти победителя 00:20:28 16 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 40 мин. [Показать отчёт]
Научился: играть за четверых 
Сложности: ничего 
Комментарии: почему-то побеждать он не хочет пока, только проигрывать) 
46 Свежий взгляд. Схема проекта. 00:14:46 15 чел. ★ 4.9 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: иногда все начинается заново 
Сложности: начать заново) 
Комментарии: =) 
47 Свежий взгляд. Управление из таймера. 00:11:34 15 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: запускать события по таймеру 
Сложности: ничего 
Комментарии: давно хотелось примерно так и переделать этот проект)) 
48 Свежий взгляд. Ожидание запуска. 00:17:02 15 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 30 мин. [Показать отчёт]
Научился: использовать старые наработки) 
Сложности: ничего 
Комментарии: no comments) 
49 Свежий взгляд. Размещение кораблей. 00:18:37 15 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 40 мин. [Показать отчёт]
Научился: размещать корабли при помощи класса Ocean 
Сложности: ничего 
Комментарии: no comments) 
50 Свежий взгляд. Завершение проекта. 00:21:42 15 чел. ★ 5 Done
  Отчёт отправил: 4780. Дмитрий Решено за 50 мин. [Показать отчёт]
Научился: завершать проект) 
Сложности: ничего 
Комментарии: даже не верится, что программа дописана)) хотя... анимации не хватает) 
51 ФИНАЛЬНЫЙ УРОК. 00:03:29 8 чел. ★ 5 Open
52 VIP урок. Змейка 01:08:56 1 чел. ★ 5 $
  Итого:   52 видеоурока общей продолжительностью 20 час. 53 мин. 1 чел. ★ 4.95  
  Финалисты:   Ильшат .

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




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Повторил создание видео обзоров.
Трудности: Проблем не было.
Отличный курс, рекомендую всем, кто хочет познакомиться с работой клиент-серверных приложений. Следующий курс - Морской бой.
Смотреть видеозапись: https://youtu.be/Y3x3tYy5O3U
Научился: На этом уроке поиграл с друзьями в собственную игру
Трудности: Найти людей для игры в Морской флот.
Курс был очень долгим и изматывающим, но при этом, конечно, очень полезным. Я очень рад, что прошел этот путь до конца!
Смотреть видеозапись: https://yadi.sk/i/1TKrvBpnkfJWB