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

Формула программиста
основатель — Волосатов Евгений Витольдович
Вступай в Телеграм чат проекта
Вебинар «Мы начинаем PHP + Yii2» начнётся через 2 дня 1 час. 51 мин.

Морской Флот

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


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


Хочу купить!

Купить в рассрочку за мегахеши

Цена: 3000 p.


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

# Название видеоурока Решило Рейтинг Доступ
1 Вступление 00:22:00 61 чел. ★ 4.9 Free
  Мы начинаем создание многопользовательской игры "Морской Бой".
В игру можно будет играть одновременно четырём участникам.
Будет реализована клиентская часть с графическим интерфейсом на C#.
Будет разработан протокол общения клиентских программ с сервером.
Будет спроектирована и создана серверная база данных на MySQL.
Будет написана серверная часть отработки протокола на PHP.
Будет создан клиент-класс отработки протокола на C#.
Будет реализована анимация всех событий в игре.
На этом уроке рассказано о структуре проекта.
 
6409. Виктор
7871. Мария
9156. Dimon
6696. Владимир Борисенко
2 Интерфейс - Первый кораблик 00:32:33 52 чел. ★ 4.9 Demo
  На этом уроке мы начнём создание проекта -
создадим проект, настроим форму, прикрепим иконку.
На самой форме разместим главную картинку - pictureMain.
А ещё нарисуем 4 картинки и добавим их в ресурсы проекта.
Далее создадим графику, подготовим картинки
и научимся их выводить на основную картинку.
Под конец урока сделаем размещение корабликов по щелчку мышки.
 
1947. Denis
6282. Михаил
7119. Новопашин Владимир
7541. Максим
3 Интерфейс - А на море корабли 00:22:26 50 чел. ★ 4.9 Demo
  На этом уроке мы нарисуем море с кораблями.
Пока у нас не будет матриц, размещение объектов будет случайным.
В конце урока напишем алгоритм позиционирования курсора мышки
над нашим морем и сделаем размещение "ударов" по морю.
 
4004. Елена
4342. Алекс
6847. дима
6409. Виктор
4 Графика - Карта Морского флота 00:31:14 39 чел. ★ 5 Demo
  На этом уроке мы создадим карту морского флота.
Это будет двумерный массив, в каждой клетке
которого записано одно из четырёх значений.
Мы напишем алгоритм размещения кораблей
и сделаем отображение карты на экране.
 
3397. Sergey
6627. Иван
14740. volld
6925. Артём
5 Графика - Выстрелы по Кораблям 00:14:31 38 чел. ★ 5 Demo
  На этом уроке мы наконец-таки сможем немножко поиграть
с компьютером и потопить весь компьютерный флот! :)
Сначала мы уберём вывод кораблей на экран,
потом переделаем функцию обработки клика мышки.
Добавим проверку точности удара и вывода результата.
 
5029. Андрей Поляков
4780. Дмитрий
1947. Denis
5369. Archi
6 Графика - Рефакторинг 00:26:11 37 чел. ★ 4.8 Demo
  На этом уроке мы займёмся рефакторингом кода.
Создадим класс Graph, в который перенесём все
операции, связанные с графикой.
Код станет чище, понятней, хотя придётся
повозиться с его оптимизацией.
 
10494. Алексей В.
791. Валерий Жданов
8275. Tekashnik
7276. Ильшат
7 Анимация - Полёт снаряда 00:08:33 33 чел. ★ 4.8 $
  На этом уроке мы составим список всех анимаций, которые будут в нашей игре. Твоя задача - нарисовать все кадры полёта снаряда.
 
9323. Алексей
4004. Елена
6289. Екатерина
6282. Михаил
8 Анимация - Отображение кадров 00:31:33 33 чел. ★ 4.9 $
  На этом уроке мы создадим первую анимацию в нашем проекте.
Это будет летящий снаряд. Мы рассмотрим несколько способов его отображения, а также добавим его перемещение.
 
5286. Коваленко Дмитрий
6632. Волнухин Владимир
6627. Иван
1947. Denis
9 Анимация - Полёт по таймеру 00:28:19 32 чел. ★ 4.9 $
  На этом уроке мы добавим таймер и реализуем полёт снаряда через функцию его события.
Для этого в функцию таймера нужно будет разместить внутренности цикла,
а также добавить проверки на начало и окончание полёта снаряда.
Потом мы оформим полёт снаряда в ту клетку моря, по которой был щелчёк мышки.
 
6282. Михаил
689. Igorenzia
7119. Новопашин Владимир
8275. Tekashnik
10 Архитектура - Перезагрузка проекта 00:24:35 32 чел. ★ 5 $
  На этом уроке мы начнём всё заново.
Но уже на другом, качественно новом уровне.
Проработаем архитектуру будущей программы.
Создадим новый проект и создадим класс Ocean.
Пока программа будет простой, самое главное
в этом уроке - понять архитектуру проекта,
увидеть весь лес как бы сверху.
 
6620. Юрий
6620. Юрий
7276. Ильшат
7276. Ильшат
11 Архитектура - Карта Пиратов 00:34:23 32 чел. ★ 5 $
  На этом уроке мы создадим карту Пиратов,
определимся с условными обозначениями (enum),
определим отдельные матрицы для размещения
кораблей и отметки совершённых по ним ударов.
Создадим метод для размещения кораблей
и потестируем всё это в пошаговом режиме.
Также добавим статистические переменные,
настоящие пираты должны знать сколько
было кораблей и сколько осталось.
 
1967. Дмитрий
4780. Дмитрий
4342. Алекс
6632. Волнухин Владимир
12 Архитектура - Наследие картинок 00:31:55 32 чел. ★ 4.9 $
  На этом уроке мы займёмся картинками.
Создадим класс Box, унаследованный от PictureBox
и настроим его для использования в нашем проекте.
Далее, из него мы унаследуем классы для каждой из картинок.
Самое сложное в этом уроке - уловить идею наследования
и понять, почему и как эти картинки выводятся на экран.
 
1947. Denis
4342. Алекс
6696. Владимир Борисенко
6203. Николай Миролюбов
13 Архитектура - Фабрика картинок 00:16:15 32 чел. ★ 5 $
  На этом уроке мы настроим вывод карты на экран.
Нам понадобится фабрика картинок - статический
метод Box.Create и волшебная функция превращения
EnumShips x EnumFires в EnumIcons.
 
1947. Denis
1947. Denis
4342. Алекс
689. Igorenzia
14 Архитектура - Мышкой по кораблям 00:21:27 32 чел. ★ 4.9 $
  На этом уроке мы научимся по щелчку мышки стрелять по кораблям.
Для этого нам понадобится создать обработчик MouseClick,
и подцепить его к каждой картинке. Используя делегаты
мы будем свистать всех на верх - до класса Form1,
из которого будем спускаться по иерархии опять вниз,
для пометки выстрела и отображения его на карте.
 
5286. Коваленко Дмитрий
1947. Denis
24. Олюшка
24. Олюшка
15 База Морского Флота - INFO 00:11:16 38 чел. ★ 4.8 $
  На этом уроке мы начнём проектировать Базу данных серверного флота.
Пока мы создадим эскиз только для одной таблицы - info,
в которой будет поле status. Для него мы составим схему состояний,
и условия перехода из одного состояния в другое.
 
6627. Иван
791. Валерий Жданов
689. Igorenzia
5407. Дмитрий 199
16 База Морского Флота - SHIP 00:10:47 37 чел. ★ 4.8 $
  На этом уроке мы создадим таблицу для хранения координат
кораблей и их состояния. В таблице ship будет 5 полей.
Отдельное внимание уделено вопросу перезарядки пушек.
 
6614. Александр
1947. Denis
5219. Nromik
5219. Nromik
17 База Морского Флота - GAME 00:12:00 35 чел. ★ 4.9 $
  На этом уроке мы создадим таблицу событий в нашей игре,
в которой будут хранится транзакции всех выстрелов
и их результатов. В таблице game будет 6 полей,
при каждом выстреле в неё будет добавляться две записи.
 
791. Валерий Жданов
6620. Юрий
6620. Юрий
5286. Коваленко Дмитрий
18 База Морского Флота - phpMyAdmin 00:12:49 35 чел. ★ 4.9 $
  На этом уроке мы наконец-таки возьмёмся за практику.
Запустим phpMyAdmin и создадим в нём все три таблицы.
 
5407. Дмитрий 199
5407. Дмитрий 199
6614. Александр
6632. Волнухин Владимир
19 База Морского флота - Экспресс SQL 00:40:56 33 чел. ★ 4.9 $
  На этом уроке мы сделаем краткий экспресс-обзор языка структурированных запросов. Кратко рассмотрим все основные команды SQL.
 
6282. Михаил
6627. Иван
5133. Aleksandr
4004. Елена
20 База Морского Флота - Запросы SQL 00:41:23 32 чел. ★ 4.9 $
  На этом уроке мы от души повеселимся с таблицами info и ship -
посоставляем самые разные запросы к ним, которые в будущем
нам пригодятся при проектировании Серверного протокола.
Эти запросы будут выполняться в PHP на серверной
части при обработке клиентских запросов.
 
6614. Александр
6620. Юрий
6620. Юрий
1967. Дмитрий
21 Протокол - Список команд 00:12:40 26 чел. ★ 4.7 $
  На этом уроке мы начнём проектировать протокол общения клиентской программы с сервеной частью. Перечислим все клиентские команды и кратко пройдёмся по каждой. Составить xml-формат сервеных ответов нужно будет самостоятельно.
 
4004. Елена
4004. Елена
7119. Новопашин Владимир
7119. Новопашин Владимир
22 Протокол - Команды INFO и SHIP 00:53:55 25 чел. ★ 5 $
  На этом уроке мы проработаем клиентский запрос "info" и "ship".
Выпишем все варианты ответа сервера, и, самое главное,
напишем SQL-запросы для проверки всех возможных случаев.
Урок сложный, но после такой проработки создание
серверного РНР скрипта будет сплошным удовольствием :)
 
4342. Алекс
7541. Максим
6627. Иван
1947. Denis
23 Протокол - Команда FIRE 00:56:38 25 чел. ★ 5 $
  На этом уроке мы проработаем клиентский запрос "fire".
Выпишем все варианты ответа сервера, и, самое главное,
напишем SQL-запросы для проверки всех возможных случаев.
Во второй части урока мы три раза пройдёмся по алгоритму,
выполняя все написанные SQL запросы.
 
5286. Коваленко Дмитрий
5286. Коваленко Дмитрий
9323. Алексей
9323. Алексей
24 Протокол - Команда GAME 00:11:13 25 чел. ★ 5 $
  На этом уроке мы разберём последнюю команду протокола - game.
Команда простая, но очень важная - именно она будет чаще всего
выполняться, благодаря ей все клиенты будут знать,
что происходит на море, что куда летит и с каким результатом.
 
6632. Волнухин Владимир
1947. Denis
7541. Максим
10494. Алексей В.
25 Серверный флот - FTP подключение 00:06:50 25 чел. ★ 5 $
  На этом уроке мы подключимся к FTP серверу,
создадим там свою папку и создадим файл init.php.
 
3397. Sergey
2146. Иван
1947. Denis
9323. Алексей
26 Серверный флот - Как PHP дружит с MySQL 00:07:35 24 чел. ★ 5 $
  На этом уроке мы создадим на РНР подключение к базе данных MySQL.
Организуем подключение, выберем базу данных,
выполним запрос, и напечатеем результат.
 
5286. Коваленко Дмитрий
6282. Михаил
1537. Сергей
689. Igorenzia
27 Серверный флот - Рефакторинг РНР-кода 00:20:37 24 чел. ★ 5 $
  На этом уроке мы займёмся рефакторингом, если у кого-нибудь
повернётся язык назвать этим словом то, чем мы здесь будем заниматься...
Мы переделаем файл init.php в подключаемый -
в нём будет только подключение к базе и две полезные функции.
В конце урока мы создадим файл battle.php,
в котором сделаем include и протестируем.
 
1537. Сергей
24. Олюшка
24. Олюшка
4004. Елена
28 Серверный флот - Функция do_info 00:11:33 24 чел. ★ 5 $
  На этом уроке мы создадим структуру файла battle.php
и напишем заглушки для всех функций протокола.
Далее, реализуем команду info в функции do_info()
 
9323. Алексей
4004. Елена
8275. Tekashnik
3397. Sergey
29 Серверный флот - Капитан очевидность 00:19:04 24 чел. ★ 5 $
  На этом уроке мы исправим несколько мелких недочётов.
Добавим в таблицу info поле oceans, соответственно изменим функцию do_info().
Добавим в файл init.php две новые функции select_scalar() и now_ticks ().
Также нам придётся изменить тип полей для хранения тиков с int на bigint.
 
6632. Волнухин Владимир
6632. Волнухин Владимир
6203. Николай Миролюбов
6203. Николай Миролюбов
30 Серверный флот - Функция do_ship 00:50:43 24 чел. ★ 5 $
  На этом уроке мы напишем функцию do_ship().
Разберём ещё раз все возможные ошибки расстановки кораблей,
сформируем код и текст ошибки, который вернём в xml.
После успешного размещения всех кораблей
мы поменяем статус игры на "play" и начнём уже играть.
 
4342. Алекс
791. Валерий Жданов
791. Валерий Жданов
6203. Николай Миролюбов
31 Серверный флот - Функция do_fire 00:46:57 24 чел. ★ 4.9 $
  На этом уроке мы напишем функцию do_fire().
Разберём ещё раз все возможные ошибки при выполнении выстрела,
сформируем код и текст ошибки, который вернём в xml.
После успешного выстрела мы проверим количество оставшихся океанов.
В конце функции добавим все транзакции в таблицу game.
 
1967. Дмитрий
1967. Дмитрий
3397. Sergey
3397. Sergey
32 Серверный флот - Функция do_game 00:14:08 23 чел. ★ 5 $
  На этом уроке мы напишем функцию do_game().
Будем получать список всех выстрелов с результатами.
 
6627. Иван
10494. Алексей В.
1537. Сергей
5286. Коваленко Дмитрий
33 ПОЛУФИНАЛЬНЫЙ УРОК. Большая игра 00:19:58 22 чел. ★ 5 $
  На этом уроке мы поиграем в Морской флот через адресную строку.
Устроим соревнование из шести участников. Битва будет что надо! :)

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

В этом уроке нужно поиграть самому и ЗАПИСАТЬ видеообзор игры.
 
6620. Юрий
6620. Юрий
24. Олюшка
6632. Волнухин Владимир
34 Клиентский флот - Подключение к серверу 00:16:05 24 чел. ★ 5 $
  На этом уроке мы создадим класс Server,
который будет подключаться к нашему PHP скрипту.
Будет отправлять запрос и получать ответ.

Примечание
Если ваша сеть использует для подключения к интернету
особые настройки прокси-сервера, то необходимо добавить
в программу считывание системных Proxy-настроек, см. пример.
 
5029. Андрей Поляков
6632. Волнухин Владимир
6632. Волнухин Владимир
3397. Sergey
35 Клиентский флот - Парсинг XML 00:21:34 21 чел. ★ 5 $
  На этом уроке мы научимся парсить XML документ.
Мы напишем метод RequestInfo(), который выудит
все нужные значения из XML-документы и вернёт
их в основную программу.
 
6632. Волнухин Владимир
6632. Волнухин Владимир
3397. Sergey
3397. Sergey
36 Клиентский флот - Класс ServerInfo 00:25:00 21 чел. ★ 5 $
  На этом уроке мы займёмся рефакторингом -
вынесем повторяющиеся действия в отдельные методы,
уберём параметры метода RequestInfo(),
запишем их во внутренние поля класса.
Потом вынесем всё хозяйство для Info-запроса
в отдельный класс ServerInfo.
Оптимизируем ещё некоторые процедуры
и уберём try-блоки в базовый класс.
 
10494. Алексей В.
1537. Сергей
7276. Ильшат
7276. Ильшат
37 Клиентский флот - Класс ServerShip 00:34:41 21 чел. ★ 5 $
  На этом уроке мы создадим класс ServerShip
для размещения кораблей. В нём будет
вспомогательный метод ExtractShipCoords(),
который матрицу кораблей сконвертирует
в строчку GET данных для передачи их
в РНР скрипт. Также будут некоторые сложности
для получения этой матрицы в коде основной
программы, нам придётся добавить новый
метод в класс Ocean, изменить права
доступа к матрице ships в классе Map.
 
6632. Волнухин Владимир
6632. Волнухин Владимир
1947. Denis
3397. Sergey
38 Клиентский флот - Класс ServerFire 00:31:08 20 чел. ★ 5 $
  На этом уроке мы создадим класс ServerFire.
Мы научим нашу программу отправлять на сервер
приказы о выстрелах! Правда, мы пока ещё не
будем знать о результатах выстрела.
Зато мы доработаем РНР функцию, чтобы она
в XML возвращала координаты выстрелившего
корабля, чтобы организовать правильную
анимацию.
 
1967. Дмитрий
4004. Елена
5286. Коваленко Дмитрий
5286. Коваленко Дмитрий
39 Клиентский флот - Класс ServerGame 00:37:13 19 чел. ★ 5 $
  На этом уроке мы проработаем клиентский запрос "game"
для получения списка транзакций всех участников игры.
Мы создадим класс ServerGame, создадим структуру Actions,
доработаем методы из базового класса и реализуем
заполнение массива считанными с XML данными.
 
7541. Максим
5029. Андрей Поляков
5029. Андрей Поляков
3397. Sergey
40 Одинокий капитан - Прицел 00:16:57 19 чел. ★ 5 $
  На этом уроке мы нарисуем новую пиктограмму
для нашей игры - знак прицела. И пропишем
его добавление в уже созданные классы.
Это пиктограмма будет использоваться для
отметки полей, по которым сделан выстрел,
но пока ещё не известен результат.
 
7276. Ильшат
7276. Ильшат
689. Igorenzia
8275. Tekashnik
41 Одинокий капитан - Выстрелы 00:15:24 19 чел. ★ 5 $
  На этом уроке мы обработаем массив actions
со списком полученных от сервера транзакций.
Сделаем отображение результатов, для этого
придётся исправить мелкие ошибки прошлого
урока в классе Box: Create(EnumIcons icon)
 
5286. Коваленко Дмитрий
5286. Коваленко Дмитрий
8275. Tekashnik
4780. Дмитрий
42 Одинокий капитан - Победа! 00:25:02 19 чел. ★ 5 $
  На этом уроке мы добавим на форму таймер
и флаг состояния игры. После этого мы поиграем
в одинокого капитана - будем стрелять
по всем океанам без ответного огня.
 
6620. Юрий
10494. Алексей В.
689. Igorenzia
5029. Андрей Поляков
43 Финишная миля. Перезагрузка. 00:04:15 18 чел. ★ 4.8 $
  На этом уроке мы добавим функцию перезапуска в РНР файл.
 
6282. Михаил
6203. Николай Миролюбов
6203. Николай Миролюбов
4780. Дмитрий
44 Финишная миля. Мой океан. 00:42:18 17 чел. ★ 4.9 $
  На этом уроке мы добавим две важные функции в наш проект.
1. Определение номера свободного океана при запуске.
2. Случайное размещение кораблей на выбранном океане.
 
7541. Максим
8275. Tekashnik
6203. Николай Миролюбов
6203. Николай Миролюбов
45 Финишная миля. Найти победителя 00:20:28 16 чел. ★ 4.9 $
  На этом уроке мы наконец-таки немножко поиграем :)
Потом сделаем определение победителя.
Из-за чего в конец запутаемся в коде класса Form1.
Примем решение на следующем уроке переписать его.
 
1537. Сергей
4004. Елена
6203. Николай Миролюбов
6203. Николай Миролюбов
46 Свежий взгляд. Схема проекта. 00:14:46 15 чел. ★ 4.9 $
  На этом уроке мы опять начнём всё сызнова.
Рассмотрим шесть основных состояний нашей программы.
Создадим новый проект и настроим его.
 
1537. Сергей
7276. Ильшат
8275. Tekashnik
5286. Коваленко Дмитрий
47 Свежий взгляд. Управление из таймера. 00:11:34 15 чел. ★ 5 $
  На этом уроке мы заложим фундамент
нашей программы - шесть методов do*()
и вызов их из таймера.
 
4004. Елена
4004. Елена
5029. Андрей Поляков
8275. Tekashnik
48 Свежий взгляд. Ожидание запуска. 00:17:02 15 чел. ★ 5 $
  На этом уроке мы напишем метод showMessage()
для отображения сообщений игры.
Далее, мы добавим в наш проект
уже написанные классы Server* и Map.
Также разместим кнопку Start для запуска игры.
 
8275. Tekashnik
8275. Tekashnik
5286. Коваленко Дмитрий
5286. Коваленко Дмитрий
49 Свежий взгляд. Размещение кораблей. 00:18:37 15 чел. ★ 5 $
  На этом уроке мы напишем метод doShip() для размещения кораблей.
Для этого нам потребуется добавить уже написанные классы Box и Ocean.
Также придётся немного поменять функцию создания и размещения кораблей.
 
1947. Denis
2146. Иван
6203. Николай Миролюбов
5286. Коваленко Дмитрий
50 Свежий взгляд. Завершение проекта. 00:21:42 15 чел. ★ 5 $
  На этом уроке МЫ ЗАКОНЧИМ создание программы.
Напишем обработку состояний play и stop.
 
2146. Иван
24. Олюшка
24. Олюшка
7276. Ильшат
51 ФИНАЛЬНЫЙ УРОК. 00:03:29 8 чел. ★ 5 $
  На этом уроке мы поиграем по сети с участниками вебинара.
Твоя задача - записать видеообзор созданного проекта.

Какой курс ты будешь проходить следующим?
 
8275. Tekashnik
24. Олюшка
2146. Иван
2146. Иван
52 VIP урок. Змейка 01:08:56 2 чел. ★ 5 $
  Создаём популярную игру «Змейка».
На примере простых объектов демонстрация основ ООП.
 
7276. Ильшат
7276. Ильшат
8275. Tekashnik
8275. Tekashnik
  Итого:   52 видеоурока общей продолжительностью 20 час. 53 мин. 2 чел. ★ 4.95  
  Финалисты:   Ильшат,   Tekashnik .

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




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

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

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

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


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


Научился: Повторил создание видео обзоров.
Отличный курс, рекомендую всем, кто хочет познакомиться с работой клиент-серверных приложений. Следующий курс - Морской бой.