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#.
Будет реализована анимация всех событий в игре.
На этом уроке рассказано о структуре проекта.

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

Отчёт отправил: 11589. Yefim Выполнено за 1 час. 8 мин. [Показать отчёт]
Научился: Стрелять по короблям и мимо. 
Сложности: 7 пункт выполнить не удалось! 
6 Графика - Рефакторинг 00:26:11
42 чел. ★ 4.9 Done
  На этом уроке мы займёмся рефакторингом кода.
Создадим класс Graph, в который перенесём все
операции, связанные с графикой.
Код станет чище, понятней, хотя придётся
повозиться с его оптимизацией.
Отчёт отправил: 11589. Yefim Выполнено за 13 час. 6 мин. [Показать отчёт]
Научился: Производить рефакторинг кода через создание класса Graph. 
Сложности: При рефакторинге обнаружил некоторые мелкие свои ошибки. 
7 Анимация - Полёт снаряда 00:08:33
38 чел. ★ 4.8 Done
  На этом уроке мы составим список всех анимаций, которые будут в нашей игре. Твоя задача - нарисовать все кадры полёта снаряда.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 43 мин. [Показать отчёт]
Научился: Рисовать все кадры полёта снаряда. 
Сложности: Делать прозрачный фон 
8 Анимация - Отображение кадров 00:31:33
38 чел. ★ 4.9 Done
  На этом уроке мы создадим первую анимацию в нашем проекте.
Это будет летящий снаряд. Мы рассмотрим несколько способов его отображения, а также добавим его перемещение.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 56 мин. [Показать отчёт]
Научился: Создавать анимацию летящего снаряда  
Сложности: Всё получилось 
9 Анимация - Полёт по таймеру 00:28:19
37 чел. ★ 4.9 Done
  На этом уроке мы добавим таймер и реализуем полёт снаряда через функцию его события.
Для этого в функцию таймера нужно будет разместить внутренности цикла,
а также добавить проверки на начало и окончание полёта снаряда.
Потом мы оформим полёт снаряда в ту клетку моря, по которой был щелчёк мышки.
Отчёт отправил: 11589. Yefim Выполнено за 1 день 10 мин. [Показать отчёт]
Научился: Анимировать полет снаряда через таймер. 
Сложности: Не все гладко в коде. Надо еще поработать с синхронизацией при работе таймера. 
10 Архитектура - Перезагрузка проекта 00:24:35
37 чел. ★ 5 Done
  На этом уроке мы начнём всё заново.
Но уже на другом, качественно новом уровне.
Проработаем архитектуру будущей программы.
Создадим новый проект и создадим класс Ocean.
Пока программа будет простой, самое главное
в этом уроке - понять архитектуру проекта,
увидеть весь лес как бы сверху.
Отчёт отправил: 11589. Yefim Выполнено за 2 дня 16 час. 25 мин. [Показать отчёт]
Научился: Начнать новый проект заново. но уже на другом, качественно новом уровне. Создавать схему архитектуры проекта 
Сложности: Создавать схему архитектуры проекта Непонятно, как можно начинать решать задачу, не сформулировав ее условие. 
11 Архитектура - Карта Пиратов 00:34:23
36 чел. ★ 5 Done
  На этом уроке мы создадим карту Пиратов,
определимся с условными обозначениями (enum),
определим отдельные матрицы для размещения
кораблей и отметки совершённых по ним ударов.
Создадим метод для размещения кораблей
и потестируем всё это в пошаговом режиме.
Также добавим статистические переменные,
настоящие пираты должны знать сколько
было кораблей и сколько осталось.
Отчёт отправил: 11589. Yefim Выполнено за 8 час. 16 мин. [Показать отчёт]
Научился: Cоздавать класс карты Пиратов, Отличный урок!!!  
Сложности: ---- 
12 Архитектура - Наследие картинок 00:31:55
36 чел. ★ 4.9 Done
  На этом уроке мы займёмся картинками.
Создадим класс Box, унаследованный от PictureBox
и настроим его для использования в нашем проекте.
Далее, из него мы унаследуем классы для каждой из картинок.
Самое сложное в этом уроке - уловить идею наследования
и понять, почему и как эти картинки выводятся на экран.
Отчёт отправил: 11589. Yefim Выполнено за 15 час. 32 мин. [Показать отчёт]
Научился: Создавать класс Box, унаследованный от PictureBox.   Создавать 5 наследников Boxa: Unkn, None, Ship, Kill, Fail.   Реализовывать позиционирование картинок.  
Сложности:   Величтна: topx * (iconSize.Width * (Map.mapSize +1))   для каждого океана не меняется и вычислять ее каждый раз при выводе картинки   нет необходимости. 
13 Архитектура - Фабрика картинок 00:16:15
36 чел. ★ 5 Done
  На этом уроке мы настроим вывод карты на экран.
Нам понадобится фабрика картинок - статический
метод Box.Create и волшебная функция превращения
EnumShips x EnumFires в EnumIcons.
Отчёт отправил: 11589. Yefim Выполнено за 4 час. 13 мин. [Показать отчёт]
Научился: Создавать Фабрику картинок.   Тестировать работу программы в разных режимах.        
Сложности: Отличный урок! 
14 Архитектура - Мышкой по кораблям 00:21:27
36 чел. ★ 4.9 Done
  На этом уроке мы научимся по щелчку мышки стрелять по кораблям.
Для этого нам понадобится создать обработчик MouseClick,
и подцепить его к каждой картинке. Используя делегаты
мы будем свистать всех на верх - до класса Form1,
из которого будем спускаться по иерархии опять вниз,
для пометки выстрела и отображения его на карте.
Отчёт отправил: 11589. Yefim Выполнено за 1 день 2 час. 22 мин. [Показать отчёт]
Научился: Стрелять по кораблям  по щелчку мышки с помощью делегата. Отображать  визуальный рещультат стрельбы. 
Сложности: Отличный урок! 
15 База Морского Флота - INFO 00:11:16
42 чел. ★ 4.8 Done
  На этом уроке мы начнём проектировать Базу данных серверного флота.
Пока мы создадим эскиз только для одной таблицы - info,
в которой будет поле status. Для него мы составим схему состояний,
и условия перехода из одного состояния в другое.

Отчёт отправил: 11589. Yefim Выполнено за 13 час. 37 мин. [Показать отчёт]
Научился: Проектировать структуру Базы данных серверного флота. Создавать эскиз для  таблицы - info. 
Сложности: ----- 
16 База Морского Флота - SHIP 00:10:47
42 чел. ★ 4.9 Done
  На этом уроке мы создадим таблицу для хранения координат
кораблей и их состояния. В таблице ship будет 5 полей.
Отдельное внимание уделено вопросу перезарядки пушек.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 10 мин. [Показать отчёт]
Научился: Создавать схему таблицы для хранения координат кораблей и их состояния. Создавать блок-схему изменения состояния кораблей.  
Сложности: Всё ясно! 
17 База Морского Флота - GAME 00:12:00
40 чел. ★ 5 Done
  На этом уроке мы создадим таблицу событий в нашей игре,
в которой будут хранится транзакции всех выстрелов
и их результатов. В таблице game будет 6 полей,
при каждом выстреле в неё будет добавляться две записи.
Отчёт отправил: 11589. Yefim Выполнено за 42 мин. [Показать отчёт]
Научился: Рисовать схему таблицы game.  
Сложности: В этот раз почему-то забыли указать типы данных  
18 База Морского Флота - phpMyAdmin 00:12:49
39 чел. ★ 4.9 Done
  На этом уроке мы наконец-таки возьмёмся за практику.
Запустим phpMyAdmin и создадим в нём все три таблицы.

Отчёт отправил: 11589. Yefim Выполнено за 4 час. 43 мин. [Показать отчёт]
Научился: Запускать phpMyAdmin и создавать в нём все таблицы.  
Сложности: Запустить phpMyAdmin на своем сайте не удалось :( 
19 База Морского флота - Экспресс SQL 00:40:56
37 чел. ★ 4.9 Done
  На этом уроке мы сделаем краткий экспресс-обзор языка структурированных запросов. Кратко рассмотрим все основные команды SQL.
Отчёт отправил: 11589. Yefim Выполнено за 1 день 9 час. 53 мин. [Показать отчёт]
Научился: Делать некоторые запросы на MySQL. Отличный урок. Очень информативный!!!  
Сложности: Найти время 
20 База Морского Флота - Запросы SQL 00:41:23
36 чел. ★ 4.9 Done
  На этом уроке мы от души повеселимся с таблицами info и ship -
посоставляем самые разные запросы к ним, которые в будущем
нам пригодятся при проектировании Серверного протокола.
Эти запросы будут выполняться в PHP на серверной
части при обработке клиентских запросов.
Отчёт отправил: 11589. Yefim Выполнено за 10 час. 29 мин. [Показать отчёт]
Научился: Составлять SQL-запросы, которые будем использовать в программном коде на языке PHP. 
Сложности: Отличный урок! Все было ясно! 
21 Протокол - Список команд 00:12:40
30 чел. ★ 4.8 Done
  На этом уроке мы начнём проектировать протокол общения клиентской программы с сервеной частью. Перечислим все клиентские команды и кратко пройдёмся по каждой. Составить xml-формат сервеных ответов нужно будет самостоятельно.
Отчёт отправил: 11589. Yefim Выполнено за 10 час. 18 мин. [Показать отчёт]
Научился: Проектировать протокол общения клиентской программы с сервеной частью.  
Сложности: Дабавление поля в таблицу ff_info я сделал на предыдущих уроках, когда увидел его при изучкеии запросов. Тогда я не понял откужа оно взялось. Списал это на свою невнимательность. С редатированием поля также была проблема, которую решил с помошью запроса.  
22 Протокол - Команды INFO и SHIP 00:53:55
29 чел. ★ 5 Done
  На этом уроке мы проработаем клиентский запрос "info" и "ship".
Выпишем все варианты ответа сервера, и, самое главное,
напишем SQL-запросы для проверки всех возможных случаев.
Урок сложный, но после такой проработки создание
серверного РНР скрипта будет сплошным удовольствием :)
Отчёт отправил: 11589. Yefim Выполнено за 11 час. 37 мин. [Показать отчёт]
Научился: Проработывать клиентский запрос "info" и "ship"и все варианты ответа сервера. Обрабатывать ошибки после SQL-запросов для проверки основных возможных случаев. Отличный урок: информационно ёмкий и очень полезный.  
Сложности: Найти время. 
23 Протокол - Команда FIRE 00:56:38
29 чел. ★ 5 Done
  На этом уроке мы проработаем клиентский запрос "fire".
Выпишем все варианты ответа сервера, и, самое главное,
напишем SQL-запросы для проверки всех возможных случаев.
Во второй части урока мы три раза пройдёмся по алгоритму,
выполняя все написанные SQL запросы.
Отчёт отправил: 11589. Yefim Выполнено за 8 час. 20 мин. [Показать отчёт]
Научился: Проработывать клиентский запрос "fire" и все варианты ответа сервера. Обрабатывать ошибки после SQL-запросов для проверки основных возможных случаев. Отличный урок! 
Сложности: Найти время! 
24 Протокол - Команда GAME 00:11:13
29 чел. ★ 5 Done
  На этом уроке мы разберём последнюю команду протокола - game.
Команда простая, но очень важная - именно она будет чаще всего
выполняться, благодаря ей все клиенты будут знать,
что происходит на море, что куда летит и с каким результатом.
Отчёт отправил: 11589. Yefim Выполнено за 1 день 2 час. 50 мин. [Показать отчёт]
Научился: Планировать протокол game.  
Сложности: Постепенно вырисовываются правила игры, хотя об этом следовало бы сказать в начале курса.  
25 Серверный флот - FTP подключение 00:06:50
29 чел. ★ 5 Done
  На этом уроке мы подключимся к FTP серверу,
создадим там свою папку и создадим файл init.php.
Отчёт отправил: 11589. Yefim Выполнено за 3 час. 15 мин. [Показать отчёт]
Научился: Устанавливать свои фпйлы ( init.php) на сервер http://yefim4u.ru/ship/zy/init.php 
Сложности: Я воаользовался  своим сайтом http://yefim4u.ru Не понял, что должно быть ы файлу index.php на данном этапе?  
26 Серверный флот - Как PHP дружит с MySQL 00:07:35
28 чел. ★ 5 Done
  На этом уроке мы создадим на РНР подключение к базе данных MySQL.
Организуем подключение, выберем базу данных,
выполним запрос, и напечатеем результат.
Отчёт отправил: 11589. Yefim Выполнено за 15 час. 23 мин. [Показать отчёт]
Научился: Ничему :( Требуется помощь! 
Сложности: Я столкнулся с проблемой (урок 26 "Серверный флот - Как PHP  дружит с MySQL". До этого урока я формировал базу данных на  своем компьютере с помощью OSpanel. Хотел работать с базой данных сразу на своем сайте но возникли проблемы. А ответа на свои вопросы, я не получил. Я экспортировал базу данных на своем компе в файл ship_game.sql, но не ясно, где его размещать. С параметрами функции  mysql_connect("localhost", "ship_game", ""); тоже не все ясно.Параметр "localhost" подходит для моего случая? Третий параметр  - пароль. О каком пароле идет речь? Для входа в базу данных?  На сайт? Я даже сделал проверку соединения и она показала, что его нет. Кто поопытней, подскажите, где моя ошибка?  
27 Серверный флот - Рефакторинг РНР-кода 00:20:37
28 чел. ★ 5 Done
  На этом уроке мы займёмся рефакторингом, если у кого-нибудь
повернётся язык назвать этим словом то, чем мы здесь будем заниматься...
Мы переделаем файл init.php в подключаемый -
в нём будет только подключение к базе и две полезные функции.
В конце урока мы создадим файл battle.php,
в котором сделаем include и протестируем.
Отчёт отправил: 11589. Yefim Выполнено за 1 день 14 час. 56 мин. [Показать отчёт]
Научился: Наконец мне удалось  решить проблему прошлого урока. См. 1 скрншот Создавать function my_query() и тестировать её. Создавать function select_row() и тестировать её. Отличный урок получился!!!  
Сложности: Подключаться к базе данных на реалном сайте  reg.ru. 
28 Серверный флот - Функция do_info 00:11:33
28 чел. ★ 5 Done
  На этом уроке мы создадим структуру файла battle.php
и напишем заглушки для всех функций протокола.
Далее, реализуем команду info в функции do_info()
Отчёт отправил: 11589. Yefim Выполнено за 2 час. 32 мин. [Показать отчёт]
Научился: Создавать структуру файла battle.php Написать заглушки для всех функций протокола. Реализовывать команду info в функции do_info(). 
Сложности: Хотелось бы знать причину, почему не рекоммендуется использовать функцию extract($row)?  
29 Серверный флот - Капитан очевидность 00:19:04
28 чел. ★ 5 Done
  На этом уроке мы исправим несколько мелких недочётов.
Добавим в таблицу info поле oceans, соответственно изменим функцию do_info().
Добавим в файл init.php две новые функции select_scalar() и now_ticks ().
Также нам придётся изменить тип полей для хранения тиков с int на bigint.
Отчёт отправил: 11589. Yefim Выполнено за 3 час. 44 мин. [Показать отчёт]
Научился: Добавлять в таблицу info поле oceans. Добавлять в файл init.php две новые функции select_scalar() и now_ticks (). Изменить тип полей для хранения тиков с int на bigint. 
Сложности: Непонятно, почему мои микросекунды значительно меньше. 
30 Серверный флот - Функция do_ship 00:50:43
28 чел. ★ 5 Done
  На этом уроке мы напишем функцию do_ship().
Разберём ещё раз все возможные ошибки расстановки кораблей,
сформируем код и текст ошибки, который вернём в xml.
После успешного размещения всех кораблей
мы поменяем статус игры на "play" и начнём уже играть.
Отчёт отправил: 11589. Yefim Выполнено за 1 день 22 час. 30 мин. [Показать отчёт]
Научился: Реализовывать функцию do_ship() с тестированием функционала программы по обработке большинства возможных ошибок. Отличный и очень полезный урок!  
Сложности: Очень трудоемкий урок! Но он того стоит!  
31 Серверный флот - Функция do_fire 00:46:57
28 чел. ★ 4.9 Done
  На этом уроке мы напишем функцию do_fire().
Разберём ещё раз все возможные ошибки при выполнении выстрела,
сформируем код и текст ошибки, который вернём в xml.
После успешного выстрела мы проверим количество оставшихся океанов.
В конце функции добавим все транзакции в таблицу game.
Отчёт отправил: 11589. Yefim Выполнено за 3 дня 3 час. 35 мин. [Показать отчёт]
Научился: Реализовывать функцию do_fire() с тестированием обработкм большинства возможных ошибок. Отличный и очень полезный урок!  
Сложности: Не удалось выполнить урок в один присест. У меня не работает код, где имя переменной  совпадает с одноименной функцией now_tick() Непонятно почему у Игромистра работает? В таких случая я пользовался переменной $ticks. 
32 Серверный флот - Функция do_game 00:14:08
27 чел. ★ 5 Done
  На этом уроке мы напишем функцию do_game().
Будем получать список всех выстрелов с результатами.
Отчёт отправил: 11589. Yefim Выполнено за 12 час. 50 мин. [Показать отчёт]
Научился: Реализовывать функцию do_game(). Получать список всех выстрелов с результатами в формате XML  
Сложности: Всё получилось, хотя и не сразу. Вопрос: Как отображать ошибки РНР в браузере?  
33 ПОЛУФИНАЛЬНЫЙ УРОК. Большая игра 00:19:58
26 чел. ★ 5 Done
  На этом уроке мы поиграем в Морской флот через адресную строку.
Устроим соревнование из шести участников. Битва будет что надо! :)

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

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

Примечание
Если ваша сеть использует для подключения к интернету
особые настройки прокси-сервера, то необходимо добавить
в программу считывание системных Proxy-настроек, см. пример.
Отчёт отправил: 11589. Yefim Выполнено за 1 день 10 час. 26 мин. [Показать отчёт]
Научился: Создавать класс Server, который подключается к PHP скрипту, чтобы отправлять запросы и получать ответы.  
Сложности: Код работает нестабильно: Иногда ответ есть, иногда нет. Почему? 
35 Клиентский флот - Парсинг XML 00:21:34
25 чел. ★ 5 Done
  На этом уроке мы научимся парсить XML документ.
Мы напишем метод RequestInfo(), который выудит
все нужные значения из XML-документы и вернёт
их в основную программу.
Отчёт отправил: 11589. Yefim Выполнено за 11 час. 20 мин. [Показать отчёт]
Научился: Реализовывать метод RequestInfo(), который извлекает все нужные значения из XML-документы и возвращает их в основную программу.  
Сложности: Всё получилось! 
36 Клиентский флот - Класс ServerInfo 00:25:00
25 чел. ★ 5 Done
  На этом уроке мы займёмся рефакторингом -
вынесем повторяющиеся действия в отдельные методы,
уберём параметры метода RequestInfo(),
запишем их во внутренние поля класса.
Потом вынесем всё хозяйство для Info-запроса
в отдельный класс ServerInfo.
Оптимизируем ещё некоторые процедуры
и уберём try-блоки в базовый класс.
Отчёт отправил: 11589. Yefim Выполнено за 8 час. 40 мин. [Показать отчёт]
Научился: Заменять повторяющиеся действия в отдельные методы.  
Сложности: Отличный Рефакторинг! 
37 Клиентский флот - Класс ServerShip 00:34:41
25 чел. ★ 5 Done
  На этом уроке мы создадим класс ServerShip
для размещения кораблей. В нём будет
вспомогательный метод ExtractShipCoords(),
который матрицу кораблей сконвертирует
в строчку GET данных для передачи их
в РНР скрипт. Также будут некоторые сложности
для получения этой матрицы в коде основной
программы, нам придётся добавить новый
метод в класс Ocean, изменить права
доступа к матрице ships в классе Map.
Отчёт отправил: 11589. Yefim Выполнено за 3 дня 2 час. 52 мин. [Показать отчёт]
Научился: Создавать класс ServerShip для размещения кораблей. Реализовывать метод ExtractShipCoords(), формирующий в строчку GET данных для передачи их в РНР скрипт. Изменять права доступа к матрице ships в классе Map.  
Сложности: Непонятно, почему в методе Create() класса Ocean мы должны вызывать метод map.PlaceShip(); 2, 3, или 4 раза? Ведь количество размещаемых кораблей определено в таблице ff_info.  
38 Клиентский флот - Класс ServerFire 00:31:08
24 чел. ★ 5 Done
  На этом уроке мы создадим класс ServerFire.
Мы научим нашу программу отправлять на сервер
приказы о выстрелах! Правда, мы пока ещё не
будем знать о результатах выстрела.
Зато мы доработаем РНР функцию, чтобы она
в XML возвращала координаты выстрелившего
корабля, чтобы организовать правильную
анимацию.

Отчёт отправил: 11589. Yefim Выполнено за 1 день 23 час. 19 мин. [Показать отчёт]
Научился: Создавать класс ServerFire со своим методом Request().  
Сложности: Система работает нестабильно. Иногда ответ сервера приходится долго (около минуты) ждать. Иногда ответ вообще не приходит. Однако, если запрос осуществлять в адресной строке браузера все работает довольно быстро. Примечание от Дмитрия не помогает. Добавленные тэги xml-теги of_x и of_y не возвращаются.  
39 Клиентский флот - Класс ServerGame 00:37:13
23 чел. ★ 5 Done
  На этом уроке мы проработаем клиентский запрос "game"
для получения списка транзакций всех участников игры.
Мы создадим класс ServerGame, создадим структуру Actions,
доработаем методы из базового класса и реализуем
заполнение массива считанными с XML данными.
Отчёт отправил: 11589. Yefim Выполнено за 1 день 1 час. 54 мин. [Показать отчёт]
Научился: Создавать класс ServerGame со структурой Actions.  
Сложности: Выяснилось, что где-то в РНР файлах затаилась ошибка.  
40 Одинокий капитан - Прицел 00:16:57
22 чел. ★ 5 Done
  На этом уроке мы нарисуем новую пиктограмму
для нашей игры - знак прицела. И пропишем
его добавление в уже созданные классы.
Это пиктограмма будет использоваться для
отметки полей, по которым сделан выстрел,
но пока ещё не известен результат.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 11 мин. [Показать отчёт]
Научился: Рисовать новую пиктограмму для нашей игры - знак прицела. Создавать классик FireBox : Fire. Изменять в классе Map методы Icon/Fire/Kill/Fail. 
Сложности: Всё получилось! 
41 Одинокий капитан - Выстрелы 00:15:24
22 чел. ★ 5 Done
  На этом уроке мы обработаем массив actions
со списком полученных от сервера транзакций.
Сделаем отображение результатов, для этого
придётся исправить мелкие ошибки прошлого
урока в классе Box: Create(EnumIcons icon)
Отчёт отправил: 11589. Yefim Выполнено за 3 дня 5 час. 43 мин. [Показать отчёт]
Научился: Обрабатывать массив actions со списком полученных от сервера транзакций.  
Сложности: Всё получилось! 
42 Одинокий капитан - Победа! 00:25:02
22 чел. ★ 5 Done
  На этом уроке мы добавим на форму таймер
и флаг состояния игры. После этого мы поиграем
в одинокого капитана - будем стрелять
по всем океанам без ответного огня.
Отчёт отправил: 11589. Yefim Выполнено за 2 час. 59 мин. [Показать отчёт]
Научился: Добавлять на форму таймер и реализовывать его обработчик в зависимости от флага состояния игры. Тестировать игру в качестве одинокого капитана, стреляющего по всем океанам без ответного огня.  
Сложности: Классно получилось!  
43 Финишная миля. Перезагрузка. 00:04:15
21 чел. ★ 4.9 Done
  На этом уроке мы добавим функцию перезапуска в РНР файл.
Отчёт отправил: 11589. Yefim Выполнено за 2 час. 36 мин. [Показать отчёт]
Научился: Реализовывать функцию перезапуска в РНР файл.  
Сложности: Всё получилось! 
44 Финишная миля. Мой океан. 00:42:18
20 чел. ★ 5 Done
  На этом уроке мы добавим две важные функции в наш проект.
1. Определение номера свободного океана при запуске.
2. Случайное размещение кораблей на выбранном океане.
Отчёт отправил: 11589. Yefim Выполнено за 21 час. 42 мин. [Показать отчёт]
Научился: Определzять номера свободного океана при запуске. Осуществлять случайное размещение кораблей на выбранном океане.  
Сложности: Всё получилось.  
45 Финишная миля. Найти победителя 00:20:28
19 чел. ★ 4.9 Done
  На этом уроке мы наконец-таки немножко поиграем :)
Потом сделаем определение победителя.
Из-за чего в конец запутаемся в коде класса Form1.
Примем решение на следующем уроке переписать его.
Отчёт отправил: 11589. Yefim Выполнено за 12 час. 53 мин. [Показать отчёт]
Научился: Тестировать программу путем запуска 4-х экзэшников и игры за четверых. Реализовать алгоритм по определению океана-победителя.  
Сложности: Получилось как в уроке.  
46 Свежий взгляд. Схема проекта. 00:14:46
18 чел. ★ 4.9 Done
  На этом уроке мы опять начнём всё сызнова.
Рассмотрим шесть основных состояний нашей программы.
Создадим новый проект и настроим его.

Отчёт отправил: 11589. Yefim Выполнено за 2 час. 14 мин. [Показать отчёт]
Научился: Планировать всё сызнова. Выделять шесть основных состояний программы: Init, wait ship, load, play и stop.  
Сложности: Проблем не было.  
47 Свежий взгляд. Управление из таймера. 00:11:34
18 чел. ★ 5 Done
  На этом уроке мы заложим фундамент
нашей программы - шесть методов do*()
и вызов их из таймера.

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

Какой курс ты будешь проходить следующим?
  Итого:   51 видеоурок 19 час. 44 мин.
9 чел. ★ 4.96  
  Финалисты:   Андрей Поляков,   Елена,   Юрий,   Олюшка,   Иван,   Tekashnik,   Дмитрий,   Ильшат,   Николай Денисов .

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





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

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

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

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


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


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