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

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

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

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

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

После взноса  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:22:00
66 чел. ★ 4.9 Done
  Мы начинаем создание многопользовательской игры "Морской Бой".
В игру можно будет играть одновременно четырём участникам.
Будет реализована клиентская часть с графическим интерфейсом на C#.
Будет разработан протокол общения клиентских программ с сервером.
Будет спроектирована и создана серверная база данных на MySQL.
Будет написана серверная часть отработки протокола на PHP.
Будет создан клиент-класс отработки протокола на C#.
Будет реализована анимация всех событий в игре.
На этом уроке рассказано о структуре проекта.

Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт]
Научился: Все хорошо. 
Сложности: Пока сложно не было 
Комментарии: Все понятно изложено 
2 Интерфейс - Первый кораблик 00:32:33
58 чел. ★ 4.9 Done
  На этом уроке мы начнём создание проекта -
создадим проект, настроим форму, прикрепим иконку.
На самой форме разместим главную картинку - pictureMain.
А ещё нарисуем 4 картинки и добавим их в ресурсы проекта.
Далее создадим графику, подготовим картинки
и научимся их выводить на основную картинку.
Под конец урока сделаем размещение корабликов по щелчку мышки.
Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт]
Научился: Все получается, и уже понимаешь, что делаешь. 
Сложности: Все понятно. 
Комментарии: Вместо pictureMain.Image = pictureMain.Image; вспомнил, что уже видел еще один вариант : pictureMain.Refresh(); и решил его использовать. 
3 Интерфейс - А на море корабли 00:22:26
56 чел. ★ 4.9 Done
  На этом уроке мы нарисуем море с кораблями.
Пока у нас не будет матриц, размещение объектов будет случайным.
В конце урока напишем алгоритм позиционирования курсора мышки
над нашим морем и сделаем размещение "ударов" по морю.
Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт]
Научился: Повторил graphics.Draw, switch, использование ресурсов. 
Сложности: Все повторил. 
Комментарии: Почему-то в редакторе картинок картинки сделал 32 пикселя. а в программе почему-то рисуются в 42 пикселя. Какой-то глюк. Вывел в строку ширину картинк - все правильно-32. вывожу картинки, и вижу что они накладываются. Так что картинка у меня 32, а tilesize 42. 
4 Графика - Карта Морского флота 00:31:14
45 чел. ★ 5 Done
  На этом уроке мы создадим карту морского флота.
Это будет двумерный массив, в каждой клетке
которого записано одно из четырёх значений.
Мы напишем алгоритм размещения кораблей
и сделаем отображение карты на экране.
Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт]
Научился: Использование enum. Отметил для себя важную информацию, как надо называть переменные - должны быть осмысленными и не содержать отрицания. Закрепил, как надо делать клапан от зацикливания циклов. 
Сложности: Все понятно и очень увлекательно. К использованию enum надо будет еще привыкнуть. 
Комментарии: Понравилась красивая проверка на выход за пределы массива. 
5 Графика - Выстрелы по Кораблям 00:14:31
44 чел. ★ 5 Done
  На этом уроке мы наконец-таки сможем немножко поиграть
с компьютером и потопить весь компьютерный флот! :)
Сначала мы уберём вывод кораблей на экран,
потом переделаем функцию обработки клика мышки.
Добавим проверку точности удара и вывода результата.

Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт]
Научился: Узнал, что можно оставлять незаполненный case ( case Cell.none:                                                                                               case Cell.fail: map[x, y] = Cell.fail; break;)  
Сложности: Все интересно 
Комментарии: Оказывается в отчете на прошлый урок нашел ошибку, забыл поставить = в проверке на "близость" кораблей. В остальном все хорошо получилось. 
6 Графика - Рефакторинг 00:26:11
42 чел. ★ 4.9 Done
  На этом уроке мы займёмся рефакторингом кода.
Создадим класс Graph, в который перенесём все
операции, связанные с графикой.
Код станет чище, понятней, хотя придётся
повозиться с его оптимизацией.
Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт]
Научился: Рефакторинг кода.  Использование internal. 
Сложности: Рефакторинг -  
Комментарии: Все как в жизни. Переезд хуже пожара!  Быстро рефакторить не получается. И с internal придется разбираться долго. А что будет если вместо internal поставить public? Поставил - все работает.  В гугле уже все почитал, но ясности не прибавилось. написано:  Этот модификатор определяет доступность члена во всех файлах сборки и его недоступность за пределами сборки. А что такое "сборка"? Спасибо за урок! Пока не могу сказать, что было просто, т.к. не уверен, что сам бы до этого всего додумался. 
7 Анимация - Полёт снаряда 00:08:33
38 чел. ★ 4.8 Done
  На этом уроке мы составим список всех анимаций, которые будут в нашей игре. Твоя задача - нарисовать все кадры полёта снаряда.
Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт]
Научился: рисовать 
Сложности: найти карандаш 
Комментарии: Жду продолжения! 
8 Анимация - Отображение кадров 00:31:33
38 чел. ★ 4.9 Done
  На этом уроке мы создадим первую анимацию в нашем проекте.
Это будет летящий снаряд. Мы рассмотрим несколько способов его отображения, а также добавим его перемещение.
Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт]
Научился: Убедился, что можно не только на форму добавлять компоненты, но и на любой компонент.(  this.pictureMain.Controls.Add(pictureFire2);) 
Сложности: Все оказалось просто. 
Комментарии: Интересно, что будет дальше. 
9 Анимация - Полёт по таймеру 00:28:19
37 чел. ★ 4.9 Done
  На этом уроке мы добавим таймер и реализуем полёт снаряда через функцию его события.
Для этого в функцию таймера нужно будет разместить внутренности цикла,
а также добавить проверки на начало и окончание полёта снаряда.
Потом мы оформим полёт снаряда в ту клетку моря, по которой был щелчёк мышки.
Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт]
Научился: Интересный алгоритм нахождения клетки. Очень понравился! 
Сложности: С Вами все просто! 
Комментарии: Решил не видео записать, а сделать gif ку : http://s017.radikal.ru/i425/1511/94/ef5b9b1c4731.gif  
10 Архитектура - Перезагрузка проекта 00:24:35
37 чел. ★ 5 Done
  На этом уроке мы начнём всё заново.
Но уже на другом, качественно новом уровне.
Проработаем архитектуру будущей программы.
Создадим новый проект и создадим класс Ocean.
Пока программа будет простой, самое главное
в этом уроке - понять архитектуру проекта,
увидеть весь лес как бы сверху.
Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт]
Научился: Потренировался в составлении схем. 
Сложности: Идем дальше 
Комментарии: Это точно, что лучше делать заново, чем ремонтировать и латать дыры. 
11 Архитектура - Карта Пиратов 00:34:23
36 чел. ★ 5 Done
  На этом уроке мы создадим карту Пиратов,
определимся с условными обозначениями (enum),
определим отдельные матрицы для размещения
кораблей и отметки совершённых по ним ударов.
Создадим метод для размещения кораблей
и потестируем всё это в пошаговом режиме.
Также добавим статистические переменные,
настоящие пираты должны знать сколько
было кораблей и сколько осталось.
Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт]
Научился: Проектировать игру! 
Сложности: Все поддалось! 
Комментарии: Решил все-таки вывести самым простым способом что у нас получилось! 
12 Архитектура - Наследие картинок 00:31:55
36 чел. ★ 4.9 Done
  На этом уроке мы займёмся картинками.
Создадим класс Box, унаследованный от PictureBox
и настроим его для использования в нашем проекте.
Далее, из него мы унаследуем классы для каждой из картинок.
Самое сложное в этом уроке - уловить идею наследования
и понять, почему и как эти картинки выводятся на экран.
Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Работа с Сontrol ами! Это еще надо будет осмыслить. 
Сложности: Controls Непривычно, что создали конрол в классе океан, а инициализировали начальное значение в основной форме! С таким встретился в первый раз. 
Комментарии: Очень понравился алгоритм размещения четырех квадратов : int topx = place % 2;             int topy = place / 2; Очень изящное решение! Интересно, а можно было бы этот главный контрол в конструкторе передавать? Непривычно, что создали конрол в классе океан, а инициализировали начальное значение в основной форме! Все получилось! 
13 Архитектура - Фабрика картинок 00:16:15
36 чел. ★ 5 Done
  На этом уроке мы настроим вывод карты на экран.
Нам понадобится фабрика картинок - статический
метод Box.Create и волшебная функция превращения
EnumShips x EnumFires в EnumIcons.
Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт]
Научился: Еще не использовал вложенные Switch 
Сложности: :) 
Комментарии: Удивительно  и , надеюсь, в дальнейшем повторимо! Одна строчка и на каждом поле появляется корабль - здорово! Программа всё улучшается! 
14 Архитектура - Мышкой по кораблям 00:21:27
36 чел. ★ 4.9 Done
  На этом уроке мы научимся по щелчку мышки стрелять по кораблям.
Для этого нам понадобится создать обработчик MouseClick,
и подцепить его к каждой картинке. Используя делегаты
мы будем свистать всех на верх - до класса Form1,
из которого будем спускаться по иерархии опять вниз,
для пометки выстрела и отображения его на карте.
Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт]
Научился: Еще раз попрактиковал делегаты.  
Сложности: Делегаты все-таки остались самым сложным, уж больно много для них надо инициализаций. 
Комментарии: Продвигаюсь вперед , и это радует. На мой взгляд получается красиво. 
15 База Морского Флота - INFO 00:11:16
42 чел. ★ 4.8 Done
  На этом уроке мы начнём проектировать Базу данных серверного флота.
Пока мы создадим эскиз только для одной таблицы - info,
в которой будет поле status. Для него мы составим схему состояний,
и условия перехода из одного состояния в другое.

Отчёт отправил: 2146. Иван Выполнено за 15 мин. [Показать отчёт]
Научился: Сначала продумывать структуру, и только потом писать какой-нибудь код. 
Сложности: :) 
Комментарии: Код для создания таблицы , наверное, такой: CREATE TABLE IF NOT EXISTS `Info` (   `status` int(11) enum('play','wait','stop'),   `ships` int(11) ,   `fire_ticks` int(11) ,   `cool_ticks` int(11) ) ENGINE=InnoDB DEFAULT CHARSET=utf8  ; 
16 База Морского Флота - SHIP 00:10:47
42 чел. ★ 4.9 Done
  На этом уроке мы создадим таблицу для хранения координат
кораблей и их состояния. В таблице ship будет 5 полей.
Отдельное внимание уделено вопросу перезарядки пушек.
Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт]
Научился: Тренируемся анализировать. 
Сложности: Просто 
Комментарии: Вперед на всех парусах. 
17 База Морского Флота - GAME 00:12:00
40 чел. ★ 5 Done
  На этом уроке мы создадим таблицу событий в нашей игре,
в которой будут хранится транзакции всех выстрелов
и их результатов. В таблице game будет 6 полей,
при каждом выстреле в неё будет добавляться две записи.
Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт]
Научился: все интересно 
Сложности: :) 
Комментарии: У матросов нет вопросов. Жду следующего урока. 
18 База Морского Флота - phpMyAdmin 00:12:49
39 чел. ★ 4.9 Done
  На этом уроке мы наконец-таки возьмёмся за практику.
Запустим phpMyAdmin и создадим в нём все три таблицы.

Отчёт отправил: 2146. Иван Выполнено за 25 мин. [Показать отчёт]
Научился: Повторил, как создавать  таблицы в консоле. 
Сложности: :) 
Комментарии: Чувствую, что самое интересное как раз сейчас начнется! 
19 База Морского флота - Экспресс SQL 00:40:56
37 чел. ★ 4.9 Done
  На этом уроке мы сделаем краткий экспресс-обзор языка структурированных запросов. Кратко рассмотрим все основные команды SQL.
Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт]
Научился: Запросам mysql. Все очень нужное и полезное. 
Сложности: :) 
Комментарии: Очень все понравилось.  
20 База Морского Флота - Запросы SQL 00:41:23
36 чел. ★ 4.9 Done
  На этом уроке мы от души повеселимся с таблицами info и ship -
посоставляем самые разные запросы к ним, которые в будущем
нам пригодятся при проектировании Серверного протокола.
Эти запросы будут выполняться в PHP на серверной
части при обработке клиентских запросов.
Отчёт отправил: 2146. Иван Выполнено за 1 час. 10 мин. [Показать отчёт]
Научился: Составлять запросы mysql 
Сложности: Хорошо, когда есть видео. 
Комментарии: Очень полезный урок, особенно когда понимаешь, что все это надо будет использовать. 
21 Протокол - Список команд 00:12:40
30 чел. ★ 4.8 Done
  На этом уроке мы начнём проектировать протокол общения клиентской программы с сервеной частью. Перечислим все клиентские команды и кратко пройдёмся по каждой. Составить xml-формат сервеных ответов нужно будет самостоятельно.
Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Пока не понял чему научился 
Сложности: Не сложно, Но пока нахожусь в кромешной тьме, так как каких-то ключевых знаний не хватает... 
Комментарии: Честно признаюсь, что подсмотрел отчеты, кто уже выполнял это задание. Что такое протокол - понял. Это запрос и ответ на запрос. А причем тут xml не понял. Надеюсь в следующих уроках станет понятно что такое ?do, и зачем нужен знак $. 
22 Протокол - Команды INFO и SHIP 00:53:55
29 чел. ★ 5 Done
  На этом уроке мы проработаем клиентский запрос "info" и "ship".
Выпишем все варианты ответа сервера, и, самое главное,
напишем SQL-запросы для проверки всех возможных случаев.
Урок сложный, но после такой проработки создание
серверного РНР скрипта будет сплошным удовольствием :)
Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Большая практика в составлении запросов и их обработка! 
Сложности: С mysql все понятно. Очень все хорошо объяснено! 
Комментарии: С php дело  не имел, так что в этом пока для меня будет самая большая сложность. 
23 Протокол - Команда FIRE 00:56:38
29 чел. ★ 5 Done
  На этом уроке мы проработаем клиентский запрос "fire".
Выпишем все варианты ответа сервера, и, самое главное,
напишем SQL-запросы для проверки всех возможных случаев.
Во второй части урока мы три раза пройдёмся по алгоритму,
выполняя все написанные SQL запросы.
Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Продолжаю погружение в vysql 
Сложности: Все очень подробно. 
Комментарии: Отличная практика составления запросов. Все очень нравится! 
24 Протокол - Команда GAME 00:11:13
29 чел. ★ 5 Done
  На этом уроке мы разберём последнюю команду протокола - game.
Команда простая, но очень важная - именно она будет чаще всего
выполняться, благодаря ей все клиенты будут знать,
что происходит на море, что куда летит и с каким результатом.
Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт]
Научился: Продолжаем освоение протокола игры 
Сложности: Медленно, но верно двигаемся к цели. 
Комментарии: Все понятно. Жду продолжения! 
25 Серверный флот - FTP подключение 00:06:50
29 чел. ★ 5 Done
  На этом уроке мы подключимся к FTP серверу,
создадим там свою папку и создадим файл init.php.
Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт]
Научился: :) 
Сложности: :) 
Комментарии: Все пока получилось.  
26 Серверный флот - Как PHP дружит с MySQL 00:07:35
28 чел. ★ 5 Done
  На этом уроке мы создадим на РНР подключение к базе данных MySQL.
Организуем подключение, выберем базу данных,
выполним запрос, и напечатеем результат.
Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт]
Научился: . Напиcать mysqli_connect 2. Напиcать mysqli_select_db 3. Напиcать mysqli_query 4. Напиcать mysqli_fetch_assoc 5. Напиcать print_r Все новое, все интересное! 
Сложности: Не сразу разобрался что и как будет у меня называется: где имя пользователя, где имя базы 
Комментарии: Прямо блиц обучение! По книгам, наверное , месяц бы разбирался. А тут 7 минут урок - и готово! Уже можно выводить таблицы на страницу html! 
27 Серверный флот - Рефакторинг РНР-кода 00:20:37
28 чел. ★ 5 Done
  На этом уроке мы займёмся рефакторингом, если у кого-нибудь
повернётся язык назвать этим словом то, чем мы здесь будем заниматься...
Мы переделаем файл init.php в подключаемый -
в нём будет только подключение к базе и две полезные функции.
В конце урока мы создадим файл battle.php,
в котором сделаем include и протестируем.
Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт]
Научился: Писать функции и вызвать их в другом файле. 
Сложности: Хорошо, что до этого уже что-то знал про программирование. 
Комментарии: Шаг  за шагом , неспеша!Евгений Витольдович, спасибо за объяснения каждого слова и каждой строчки! Это очень помогает. 
28 Серверный флот - Функция do_info 00:11:33
28 чел. ★ 5 Done
  На этом уроке мы создадим структуру файла battle.php
и напишем заглушки для всех функций протокола.
Далее, реализуем команду info в функции do_info()
Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт]
Научился: Все новое: запрос get, Весь код новый! 
Сложности: Все-таки ошибки у меня были, но найти удалось! 
Комментарии: Решил воспользоваться ftp плагином для Notepad++ очень удобная штука. Обновляет файл на сервере без лишних вопросов, нажатием одной кнопки upload. Перед этим пользовался коммандером, но для постоянных обновлений файла, удобнее пользоваться Notepad++, чего и всем желаю.  10 звезд! 
29 Серверный флот - Капитан очевидность 00:19:04
28 чел. ★ 5 Done
  На этом уроке мы исправим несколько мелких недочётов.
Добавим в таблицу info поле oceans, соответственно изменим функцию do_info().
Добавим в файл init.php две новые функции select_scalar() и now_ticks ().
Также нам придётся изменить тип полей для хранения тиков с int на bigint.
Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт]
Научился: Закрепляю изученное 
Сложности: Закрепляю изученное 
Комментарии: Тренируюсь делать коллажи из скриншотов  
30 Серверный флот - Функция do_ship 00:50:43
28 чел. ★ 5 Done
  На этом уроке мы напишем функцию do_ship().
Разберём ещё раз все возможные ошибки расстановки кораблей,
сформируем код и текст ошибки, который вернём в xml.
После успешного размещения всех кораблей
мы поменяем статус игры на "play" и начнём уже играть.
Отчёт отправил: 2146. Иван Выполнено за 3 час. 10 мин. [Показать отчёт]
Научился: Писать код php. Искать ошибки в php. 
Сложности: Особенно сложна отладка. 
Комментарии: За один вечер не удалось все сделать.  Если еще учесть, что хостинг у меня тоже тормозной, то , наверное, можно считать, что быстро справился. 
31 Серверный флот - Функция do_fire 00:46:57
28 чел. ★ 4.9 Done
  На этом уроке мы напишем функцию do_fire().
Разберём ещё раз все возможные ошибки при выполнении выстрела,
сформируем код и текст ошибки, который вернём в xml.
После успешного выстрела мы проверим количество оставшихся океанов.
В конце функции добавим все транзакции в таблицу game.
Отчёт отправил: 2146. Иван Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Осваиваю протокол игры 
Сложности: Найти все ошибки. 
Комментарии: Этот урок дался чуть-чуть легче. Хорошо, что php подсказывает ошибки, а то вообще не возможно было бы разобраться. 
32 Серверный флот - Функция do_game 00:14:08
27 чел. ★ 5 Done
  На этом уроке мы напишем функцию do_game().
Будем получать список всех выстрелов с результатами.
Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт]
Научился: Продолжаем осваивать программирование протокола для php и xml 
Сложности: До сих пор осмысливаю склеивание xml. 
Комментарии: Функция do=game позволила найти еще 5 ошибок! 
33 ПОЛУФИНАЛЬНЫЙ УРОК. Большая игра 00:19:58
26 чел. ★ 5 Done
  На этом уроке мы поиграем в Морской флот через адресную строку.
Устроим соревнование из шести участников. Битва будет что надо! :)

В начале урока мы допишем в протокольчик команду перезапуска игры и стартанём.
В конце урока я покажу, как написан скрипт map.php для отображения статуса игры.

В этом уроке нужно поиграть самому и ЗАПИСАТЬ видеообзор игры.
Отчёт отправил: 2146. Иван Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Еще больше практики в php. 
Сложности: Реализовать передачу данных через форму. Ничего сложного вроде бы и не было, тем более,что  метод я оставил Get. C методом post не стал пока разбираться.  А то этот отчет еще через неделю бы отправлял. 
Комментарии: Сначала решил просто переписать весь скрипт, который выводит моря. Потом все-таки решил сделать по-своему. Может он  реализован менее красиво, но в нем мне понятна каждая строчка. И если бы я просто копировал, то я бы так и не понял, как же тут все работает. 
34 Клиентский флот - Подключение к серверу 00:16:05
28 чел. ★ 5 Done
  На этом уроке мы создадим класс Server,
который будет подключаться к нашему PHP скрипту.
Будет отправлять запрос и получать ответ.

Примечание
Если ваша сеть использует для подключения к интернету
особые настройки прокси-сервера, то необходимо добавить
в программу считывание системных Proxy-настроек, см. пример.
Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт]
Научился: Познакомился новым для меня классом System.Net  и его методами. 
Сложности: Очень все понятно изложено 
Комментарии: Интересно, что будет дальше. 
35 Клиентский флот - Парсинг XML 00:21:34
25 чел. ★ 5 Done
  На этом уроке мы научимся парсить XML документ.
Мы напишем метод RequestInfo(), который выудит
все нужные значения из XML-документы и вернёт
их в основную программу.
Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Парсить xml! 
Сложности: Нашел ошибку довольно быстро и вспомнил, что читал в отчетах, как ее победить. 
Комментарии: Спасибо Владимиру Волнухину (http://www.videosharp.info/6632/checking/game7=377) за подсказку, как решить проблему с ошибкой, которая заключалась в переводе строки перед <?xml version =\"1.0\"?>. После этой строки в файле battle.php надо обязательно вызвать функцию ob_clean(); Именно она помогла избежать ошибки. Может стоит для будущих курсантов добавить информацию про эту функцию в описание урока? Еще оказалось, что в php очень надо следить за лишними пробелами: такая команда работать не будет $_GET ['ocean'] ( с пробелом после GET). А в sql не будет работать COUNT (*)(после count тут тоже пробел). Только слитное написание правильное COUNT(*).  Не проверял, но возможно и intval() c пробелом тоже не работает?! Возможно все это знают, но может кому поможет описание моих ошибок . Очень долго работает WebClient, и пока идет соединение и запрос xmla с серверa программа подвисает. У всех так? 
36 Клиентский флот - Класс ServerInfo 00:25:00
25 чел. ★ 5 Done
  На этом уроке мы займёмся рефакторингом -
вынесем повторяющиеся действия в отдельные методы,
уберём параметры метода RequestInfo(),
запишем их во внутренние поля класса.
Потом вынесем всё хозяйство для Info-запроса
в отдельный класс ServerInfo.
Оптимизируем ещё некоторые процедуры
и уберём try-блоки в базовый класс.
Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Хороший понятный пример использования virual и override 
Сложности: Все получается 
Комментарии: Получается, что все что сделали на прошлом уроке не понадобилось. Но без прошлого урока было бы на самом деле  все менее понятно. А так увидели много решений одно задачи - это здорово. Спасибо за урок. 
37 Клиентский флот - Класс ServerShip 00:34:41
25 чел. ★ 5 Done
  На этом уроке мы создадим класс ServerShip
для размещения кораблей. В нём будет
вспомогательный метод ExtractShipCoords(),
который матрицу кораблей сконвертирует
в строчку GET данных для передачи их
в РНР скрипт. Также будут некоторые сложности
для получения этой матрицы в коде основной
программы, нам придётся добавить новый
метод в класс Ocean, изменить права
доступа к матрице ships в классе Map.
Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: public ServerShip(string url)             : base(url)         { }.  Научился(еще раз) использовать базовый конструктор, да еще и с аргументом. 
Сложности: Все получается. 
Комментарии: Все получилось. 
38 Клиентский флот - Класс ServerFire 00:31:08
24 чел. ★ 5 Done
  На этом уроке мы создадим класс ServerFire.
Мы научим нашу программу отправлять на сервер
приказы о выстрелах! Правда, мы пока ещё не
будем знать о результатах выстрела.
Зато мы доработаем РНР функцию, чтобы она
в XML возвращала координаты выстрелившего
корабля, чтобы организовать правильную
анимацию.

Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: Практика связи php и с#! 
Сложности: Получается. 
Комментарии: Все думал, почему of_x и  of_y не приходят.?Оказалось забыл обновить файл battle.php на сервере :) 
39 Клиентский флот - Класс ServerGame 00:37:13
23 чел. ★ 5 Done
  На этом уроке мы проработаем клиентский запрос "game"
для получения списка транзакций всех участников игры.
Мы создадим класс ServerGame, создадим структуру Actions,
доработаем методы из базового класса и реализуем
заполнение массива считанными с XML данными.
Отчёт отправил: 2146. Иван Выполнено за 50 мин. [Показать отчёт]
Научился: Еще раз закрепил  public string status { get; private set; }  
Сложности: Все получилось! 
Комментарии: Еще нашел одну блоху в файле php. Это  хорошо , что у нас массив action содержит только последние не просмотренные действия.  Спасибо за урок! 
40 Одинокий капитан - Прицел 00:16:57
22 чел. ★ 5 Done
  На этом уроке мы нарисуем новую пиктограмму
для нашей игры - знак прицела. И пропишем
его добавление в уже созданные классы.
Это пиктограмма будет использоваться для
отметки полей, по которым сделан выстрел,
но пока ещё не известен результат.
Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт]
Научился: :) 
Сложности: Не самый сложный урок. 
Комментарии: Жду следующего урока. 
41 Одинокий капитан - Выстрелы 00:15:24
22 чел. ★ 5 Done
  На этом уроке мы обработаем массив actions
со списком полученных от сервера транзакций.
Сделаем отображение результатов, для этого
придётся исправить мелкие ошибки прошлого
урока в классе Box: Create(EnumIcons icon)
Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт]
Научился: Не бояться создавать классы. Их уже набралось в этой программе штук 17. 
Сложности: Уследить за логикой. 
Комментарии: Урок сделал довольно быстро. В целом все было понятно. Но пересмотрю ка я его еще раз! Урок не так прост как кажется! 
42 Одинокий капитан - Победа! 00:25:02
22 чел. ★ 5 Done
  На этом уроке мы добавим на форму таймер
и флаг состояния игры. После этого мы поиграем
в одинокого капитана - будем стрелять
по всем океанам без ответного огня.
Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт]
Научился: Все очень интересно! 
Сложности: Пока экспериментирую с двумя океанами. 
Комментарии: Первое соединение с сервером у меня идет секунд 20-30, поэтому решил сделать, чтобы курсор менялся на песочные часы. Еще одна проблема возникла, что пока программа соединяется, она успевала еще  несколько запросов послать. Сделал, что пока ответ от сервера не пришел, таймер на это время выключается. 
43 Финишная миля. Перезагрузка. 00:04:15
21 чел. ★ 4.9 Done
  На этом уроке мы добавим функцию перезапуска в РНР файл.
Отчёт отправил: 2146. Иван Выполнено за 10 мин. [Показать отчёт]
Научился: Все просто 
Сложности: Все просто 
Комментарии: Все просто 
44 Финишная миля. Мой океан. 00:42:18
20 чел. ★ 5 Done
  На этом уроке мы добавим две важные функции в наш проект.
1. Определение номера свободного океана при запуске.
2. Случайное размещение кораблей на выбранном океане.
Отчёт отправил: 2146. Иван Выполнено за 1 час. 20 мин. [Показать отчёт]
Научился: Двигаемся вперед. 
Сложности: Отловить ошибки в php. 
Комментарии: Получилось, но не с первого раза 
45 Финишная миля. Найти победителя 00:20:28
19 чел. ★ 4.9 Done
  На этом уроке мы наконец-таки немножко поиграем :)
Потом сделаем определение победителя.
Из-за чего в конец запутаемся в коде класса Form1.
Примем решение на следующем уроке переписать его.
Отчёт отправил: 2146. Иван Выполнено за 2 час. 00 мин. [Показать отчёт]
Научился: Добавил вывод океана за который играем  в название формы.  
Сложности: Интересно следить, как все три технологии работают вместе : sql, php и c# 
Комментарии: Вчера что-то мой хостинг плохо работал с базой. Пришлось ждать благоприятного коннекта к базе данных. И вот, наконец, дождался! Сегодня все работало как надо, и получилось протестировать нашу программу. Была проблема вывода множества окон из-за включенного таймер. Решил проблему остановкой таймера после вывода сообщений. Ошибки еще остались, но думаю, что в следующих уроках все равно придется все переписывать с нуля. При нажатии кнопки рестарт вызваю рестарт php, включаю таймер. И еще удаляю все boxы, чтобы нарисовать новые при рестарте. Но, к сожалению, на второй открытой программе почему-то не срабатывает. 
46 Свежий взгляд. Схема проекта. 00:14:46
18 чел. ★ 4.9 Done
  На этом уроке мы опять начнём всё сызнова.
Рассмотрим шесть основных состояний нашей программы.
Создадим новый проект и настроим его.

Отчёт отправил: 2146. Иван Выполнено за 10 мин. [Показать отчёт]
Научился: Повторяем , закрепляем 
Сложности: --- 
Комментарии: Подготовился, можно идти дальше. 
47 Свежий взгляд. Управление из таймера. 00:11:34
18 чел. ★ 5 Done
  На этом уроке мы заложим фундамент
нашей программы - шесть методов do*()
и вызов их из таймера.

Отчёт отправил: 2146. Иван Выполнено за 10 мин. [Показать отчёт]
Научился: Все подготовил 
Сложности: --- 
Комментарии: Жду следующего урока. 
48 Свежий взгляд. Ожидание запуска. 00:17:02
18 чел. ★ 5 Done
  На этом уроке мы напишем метод showMessage()
для отображения сообщений игры.
Далее, мы добавим в наш проект
уже написанные классы Server* и Map.
Также разместим кнопку Start для запуска игры.
Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт]
Научился: Повторил подключение собственных классов 
Сложности: Радует, что сложностей не возникает. 
Комментарии: Жаль, что осталось уже очень мало видео-уроков в этом курсе. 
49 Свежий взгляд. Размещение кораблей. 00:18:37
18 чел. ★ 5 Done
  На этом уроке мы напишем метод doShip() для размещения кораблей.
Для этого нам потребуется добавить уже написанные классы Box и Ocean.
Также придётся немного поменять функцию создания и размещения кораблей.
Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт]
Научился: :) 
Сложности: :) 
Комментарии: Внимание, и еще раз внимание при копировании кода! 
50 Свежий взгляд. Завершение проекта. 00:21:42
18 чел. ★ 5 Done
  На этом уроке МЫ ЗАКОНЧИМ создание программы.
Напишем обработку состояний play и stop.
Отчёт отправил: 2146. Иван Выполнено за 50 мин. [Показать отчёт]
Научился: Быть внимательным 
Сложности: :) 
Комментарии: Сразу не запустилось. Так как не сразу  заметил, что не все скопировал.  ... Работает! 
51 ФИНАЛЬНЫЙ УРОК. 00:03:29
9 чел. ★ 5 Done
  На этом уроке мы поиграем по сети с участниками вебинара.
Твоя задача - записать видеообзор созданного проекта.

Какой курс ты будешь проходить следующим?
Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт]
Научился: На курсе изучил php, mysql, и , конечно, программирование на с#. Узнал множество разных технологий и научился их совместно использовать. 
Сложности: Дождаться тишины. 
Комментарии: Спасибо за великолепный курс! Очень все понравилось! Много узнал нового и интересного! Теперь надо пробовать придумать на этой основе что-то свое. Оказывается не нажал в youtube кнопку publish 
Видеообзор: https://youtu.be/VBVSqRQYWpo
  Итого:   51 видеоурок 19 час. 44 мин.
9 чел. ★ 4.96  
  Финалисты:   Андрей Поляков,   Елена,   Юрий,   Олюшка,   Иван,   Tekashnik,   Дмитрий,   Ильшат,   Николай Денисов .

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





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

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

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

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


Научился: Записывать видеообзор
Трудности: Собраться с духом и найти общий язык с фантазией.
Первооткрывателем (то есть первоокончателем) этого курса быть не получилось. Но я его усе-таки закончила!


Научился: В очередной раз записывать видеообзор
Трудности: придумать, что было самым сложным
Ну что хочется сказать, спасибо за курс! Очень, ёмкий, насыщенный полезный! Переплетение технологий легко наглядно и просто. Всем рекомендую)