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

Формула программиста
основатель — Волосатов Евгений Витольдович
1-2-3 мая - Создай online игру!

Морской Флот

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


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


Хочу купить!

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

Цена: 3000 p.


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

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

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

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

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

Какой курс ты будешь проходить следующим?
 
4004. Елена
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#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Записывать видеообзор
Трудности: Собраться с духом и найти общий язык с фантазией.
Первооткрывателем (то есть первоокончателем) этого курса быть не получилось. Но я его усе-таки закончила!
Научился: тестировать свою программу, записывать видеообзор
Трудности: не вериться что это уже все, я уже с роднилась с этим классным куром!
УРА!!! УРА и еще раз УРА!!! Я сделала самую суперскую игру!!! Какая же я Умничка!!! Спасибо Женя за этот шикарный курс, пусть кто-то скажет что он и затянут и может быть кому-нибудь не понравятся то что мы переделывали, начинали несколько раз все с нуля, однако мне это все безумно понравилось и только благодаря этому мне все понятно как создается проект, как пишется программа, для меня это очень важно и ценно!!! Я получила отличный опыт и практику, море новых знаний и сейчас уже намного увереннее себя чувствую в программировании, мое количество уже переросло в качество и это меня делает очень счастливой, это стоит того!!! ❤️