# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Мы начинаем создание многопользовательской игры "Морской Бой". В игру можно будет играть одновременно четырём участникам. Будет реализована клиентская часть с графическим интерфейсом на C#. Будет разработан протокол общения клиентских программ с сервером. Будет спроектирована и создана серверная база данных на MySQL. Будет написана серверная часть отработки протокола на PHP. Будет создан клиент-класс отработки протокола на C#. Будет реализована анимация всех событий в игре. На этом уроке рассказано о структуре проекта. Отчёт отправил: 11589. Yefim Выполнено за 14 час. 29 мин. [Показать отчёт] Научился: Ознакомился с правилами будущей игры Сложности: Рисовать картинки |
|||||
2 | Интерфейс - Первый кораблик |
|
|||
На этом уроке мы начнём создание проекта - создадим проект, настроим форму, прикрепим иконку. На самой форме разместим главную картинку - pictureMain. А ещё нарисуем 4 картинки и добавим их в ресурсы проекта. Далее создадим графику, подготовим картинки и научимся их выводить на основную картинку. Под конец урока сделаем размещение корабликов по щелчку мышки. Отчёт отправил: 11589. Yefim Выполнено за 12 час. 2 мин. [Показать отчёт] Научился: Повторил знакомый материал. Сложности: Долго провозился с прозрачным фоном для картинок. Вопрос: Что предпочтительней? pictureMain.Refresh(); или pictureMain.Image = pictureMain.Image; и почему? |
|||||
3 | Интерфейс - А на море корабли |
|
|||
На этом уроке мы нарисуем море с кораблями. Пока у нас не будет матриц, размещение объектов будет случайным. В конце урока напишем алгоритм позиционирования курсора мышки над нашим морем и сделаем размещение "ударов" по морю. Отчёт отправил: 11589. Yefim Выполнено за 15 час. 42 мин. [Показать отчёт] Научился: Рисовать море с кораблями. Сложности: Столкнулся с проблемой: Но перерисовав картинки все получилось. |
|||||
4 | Графика - Карта Морского флота |
|
|||
На этом уроке мы создадим карту морского флота. Это будет двумерный массив, в каждой клетке которого записано одно из четырёх значений. Мы напишем алгоритм размещения кораблей и сделаем отображение карты на экране. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 42 мин. [Показать отчёт] Научился: Реализовыать алгоритм размещения кораблей. Сложности: Непонятно почему не сформулированы правила будущей игры? |
|||||
5 | Графика - Выстрелы по Кораблям |
|
|||
На этом уроке мы наконец-таки сможем немножко поиграть с компьютером и потопить весь компьютерный флот! :) Сначала мы уберём вывод кораблей на экран, потом переделаем функцию обработки клика мышки. Добавим проверку точности удара и вывода результата. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 8 мин. [Показать отчёт] Научился: Стрелять по короблям и мимо. Сложности: 7 пункт выполнить не удалось! |
|||||
6 | Графика - Рефакторинг |
|
|||
На этом уроке мы займёмся рефакторингом кода. Создадим класс Graph, в который перенесём все операции, связанные с графикой. Код станет чище, понятней, хотя придётся повозиться с его оптимизацией. Отчёт отправил: 11589. Yefim Выполнено за 13 час. 6 мин. [Показать отчёт] Научился: Производить рефакторинг кода через создание класса Graph. Сложности: При рефакторинге обнаружил некоторые мелкие свои ошибки. |
|||||
7 | Анимация - Полёт снаряда |
|
|||
На этом уроке мы составим список всех анимаций, которые будут в нашей игре. Твоя задача - нарисовать все кадры полёта снаряда.
Отчёт отправил: 11589. Yefim Выполнено за 1 час. 43 мин. [Показать отчёт] Научился: Рисовать все кадры полёта снаряда. Сложности: Делать прозрачный фон |
|||||
8 | Анимация - Отображение кадров |
|
|||
На этом уроке мы создадим первую анимацию в нашем проекте. Это будет летящий снаряд. Мы рассмотрим несколько способов его отображения, а также добавим его перемещение. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 56 мин. [Показать отчёт] Научился: Создавать анимацию летящего снаряда Сложности: Всё получилось |
|||||
9 | Анимация - Полёт по таймеру |
|
|||
На этом уроке мы добавим таймер и реализуем полёт снаряда через функцию его события. Для этого в функцию таймера нужно будет разместить внутренности цикла, а также добавить проверки на начало и окончание полёта снаряда. Потом мы оформим полёт снаряда в ту клетку моря, по которой был щелчёк мышки. Отчёт отправил: 11589. Yefim Выполнено за 1 день 10 мин. [Показать отчёт] Научился: Анимировать полет снаряда через таймер. Сложности: Не все гладко в коде. Надо еще поработать с синхронизацией при работе таймера. |
|||||
10 | Архитектура - Перезагрузка проекта |
|
|||
На этом уроке мы начнём всё заново. Но уже на другом, качественно новом уровне. Проработаем архитектуру будущей программы. Создадим новый проект и создадим класс Ocean. Пока программа будет простой, самое главное в этом уроке - понять архитектуру проекта, увидеть весь лес как бы сверху. Отчёт отправил: 11589. Yefim Выполнено за 2 дня 16 час. 25 мин. [Показать отчёт] Научился: Начнать новый проект заново. но уже на другом, качественно новом уровне. Создавать схему архитектуры проекта Сложности: Создавать схему архитектуры проекта Непонятно, как можно начинать решать задачу, не сформулировав ее условие. |
|||||
11 | Архитектура - Карта Пиратов |
|
|||
На этом уроке мы создадим карту Пиратов, определимся с условными обозначениями (enum), определим отдельные матрицы для размещения кораблей и отметки совершённых по ним ударов. Создадим метод для размещения кораблей и потестируем всё это в пошаговом режиме. Также добавим статистические переменные, настоящие пираты должны знать сколько было кораблей и сколько осталось. Отчёт отправил: 11589. Yefim Выполнено за 8 час. 16 мин. [Показать отчёт] Научился: Cоздавать класс карты Пиратов, Отличный урок!!! Сложности: ---- |
|||||
12 | Архитектура - Наследие картинок |
|
|||
На этом уроке мы займёмся картинками. Создадим класс Box, унаследованный от PictureBox и настроим его для использования в нашем проекте. Далее, из него мы унаследуем классы для каждой из картинок. Самое сложное в этом уроке - уловить идею наследования и понять, почему и как эти картинки выводятся на экран. Отчёт отправил: 11589. Yefim Выполнено за 15 час. 32 мин. [Показать отчёт] Научился: Создавать класс Box, унаследованный от PictureBox. Создавать 5 наследников Boxa: Unkn, None, Ship, Kill, Fail. Реализовывать позиционирование картинок. Сложности: Величтна: topx * (iconSize.Width * (Map.mapSize +1)) для каждого океана не меняется и вычислять ее каждый раз при выводе картинки нет необходимости. |
|||||
13 | Архитектура - Фабрика картинок |
|
|||
На этом уроке мы настроим вывод карты на экран. Нам понадобится фабрика картинок - статический метод Box.Create и волшебная функция превращения EnumShips x EnumFires в EnumIcons. Отчёт отправил: 11589. Yefim Выполнено за 4 час. 13 мин. [Показать отчёт] Научился: Создавать Фабрику картинок. Тестировать работу программы в разных режимах. Сложности: Отличный урок! |
|||||
14 | Архитектура - Мышкой по кораблям |
|
|||
На этом уроке мы научимся по щелчку мышки стрелять по кораблям. Для этого нам понадобится создать обработчик MouseClick, и подцепить его к каждой картинке. Используя делегаты мы будем свистать всех на верх - до класса Form1, из которого будем спускаться по иерархии опять вниз, для пометки выстрела и отображения его на карте. Отчёт отправил: 11589. Yefim Выполнено за 1 день 2 час. 22 мин. [Показать отчёт] Научился: Стрелять по кораблям по щелчку мышки с помощью делегата. Отображать визуальный рещультат стрельбы. Сложности: Отличный урок! |
|||||
15 | База Морского Флота - INFO |
|
|||
На этом уроке мы начнём проектировать Базу данных серверного флота. Пока мы создадим эскиз только для одной таблицы - info, в которой будет поле status. Для него мы составим схему состояний, и условия перехода из одного состояния в другое. Отчёт отправил: 11589. Yefim Выполнено за 13 час. 37 мин. [Показать отчёт] Научился: Проектировать структуру Базы данных серверного флота. Создавать эскиз для таблицы - info. Сложности: ----- |
|||||
16 | База Морского Флота - SHIP |
|
|||
На этом уроке мы создадим таблицу для хранения координат кораблей и их состояния. В таблице ship будет 5 полей. Отдельное внимание уделено вопросу перезарядки пушек. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 10 мин. [Показать отчёт] Научился: Создавать схему таблицы для хранения координат кораблей и их состояния. Создавать блок-схему изменения состояния кораблей. Сложности: Всё ясно! |
|||||
17 | База Морского Флота - GAME |
|
|||
На этом уроке мы создадим таблицу событий в нашей игре, в которой будут хранится транзакции всех выстрелов и их результатов. В таблице game будет 6 полей, при каждом выстреле в неё будет добавляться две записи. Отчёт отправил: 11589. Yefim Выполнено за 42 мин. [Показать отчёт] Научился: Рисовать схему таблицы game. Сложности: В этот раз почему-то забыли указать типы данных |
|||||
18 | База Морского Флота - phpMyAdmin |
|
|||
На этом уроке мы наконец-таки возьмёмся за практику. Запустим phpMyAdmin и создадим в нём все три таблицы. Отчёт отправил: 11589. Yefim Выполнено за 4 час. 43 мин. [Показать отчёт] Научился: Запускать phpMyAdmin и создавать в нём все таблицы. Сложности: Запустить phpMyAdmin на своем сайте не удалось :( |
|||||
19 | База Морского флота - Экспресс SQL |
|
|||
На этом уроке мы сделаем краткий экспресс-обзор языка структурированных запросов. Кратко рассмотрим все основные команды SQL.
Отчёт отправил: 11589. Yefim Выполнено за 1 день 9 час. 53 мин. [Показать отчёт] Научился: Делать некоторые запросы на MySQL. Отличный урок. Очень информативный!!! Сложности: Найти время |
|||||
20 | База Морского Флота - Запросы SQL |
|
|||
На этом уроке мы от души повеселимся с таблицами info и ship - посоставляем самые разные запросы к ним, которые в будущем нам пригодятся при проектировании Серверного протокола. Эти запросы будут выполняться в PHP на серверной части при обработке клиентских запросов. Отчёт отправил: 11589. Yefim Выполнено за 10 час. 29 мин. [Показать отчёт] Научился: Составлять SQL-запросы, которые будем использовать в программном коде на языке PHP. Сложности: Отличный урок! Все было ясно! |
|||||
21 | Протокол - Список команд |
|
|||
На этом уроке мы начнём проектировать протокол общения клиентской программы с сервеной частью. Перечислим все клиентские команды и кратко пройдёмся по каждой. Составить xml-формат сервеных ответов нужно будет самостоятельно.
Отчёт отправил: 11589. Yefim Выполнено за 10 час. 18 мин. [Показать отчёт] Научился: Проектировать протокол общения клиентской программы с сервеной частью. Сложности: Дабавление поля в таблицу ff_info я сделал на предыдущих уроках, когда увидел его при изучкеии запросов. Тогда я не понял откужа оно взялось. Списал это на свою невнимательность. С редатированием поля также была проблема, которую решил с помошью запроса. |
|||||
22 | Протокол - Команды INFO и SHIP |
|
|||
На этом уроке мы проработаем клиентский запрос "info" и "ship". Выпишем все варианты ответа сервера, и, самое главное, напишем SQL-запросы для проверки всех возможных случаев. Урок сложный, но после такой проработки создание серверного РНР скрипта будет сплошным удовольствием :) Отчёт отправил: 11589. Yefim Выполнено за 11 час. 37 мин. [Показать отчёт] Научился: Проработывать клиентский запрос "info" и "ship"и все варианты ответа сервера. Обрабатывать ошибки после SQL-запросов для проверки основных возможных случаев. Отличный урок: информационно ёмкий и очень полезный. Сложности: Найти время. |
|||||
23 | Протокол - Команда FIRE |
|
|||
На этом уроке мы проработаем клиентский запрос "fire". Выпишем все варианты ответа сервера, и, самое главное, напишем SQL-запросы для проверки всех возможных случаев. Во второй части урока мы три раза пройдёмся по алгоритму, выполняя все написанные SQL запросы. Отчёт отправил: 11589. Yefim Выполнено за 8 час. 20 мин. [Показать отчёт] Научился: Проработывать клиентский запрос "fire" и все варианты ответа сервера. Обрабатывать ошибки после SQL-запросов для проверки основных возможных случаев. Отличный урок! Сложности: Найти время! |
|||||
24 | Протокол - Команда GAME |
|
|||
На этом уроке мы разберём последнюю команду протокола - game. Команда простая, но очень важная - именно она будет чаще всего выполняться, благодаря ей все клиенты будут знать, что происходит на море, что куда летит и с каким результатом. Отчёт отправил: 11589. Yefim Выполнено за 1 день 2 час. 50 мин. [Показать отчёт] Научился: Планировать протокол game. Сложности: Постепенно вырисовываются правила игры, хотя об этом следовало бы сказать в начале курса. |
|||||
25 | Серверный флот - FTP подключение |
|
|||
На этом уроке мы подключимся к FTP серверу, создадим там свою папку и создадим файл init.php. Отчёт отправил: 11589. Yefim Выполнено за 3 час. 15 мин. [Показать отчёт] Научился: Устанавливать свои фпйлы ( init.php) на сервер http://yefim4u.ru/ship/zy/init.php Сложности: Я воаользовался своим сайтом http://yefim4u.ru Не понял, что должно быть ы файлу index.php на данном этапе? |
|||||
26 | Серверный флот - Как PHP дружит с MySQL |
|
|||
На этом уроке мы создадим на РНР подключение к базе данных MySQL. Организуем подключение, выберем базу данных, выполним запрос, и напечатеем результат. Отчёт отправил: 11589. Yefim Выполнено за 15 час. 23 мин. [Показать отчёт] Научился: Ничему :( Требуется помощь! Сложности: Я столкнулся с проблемой (урок 26 "Серверный флот - Как PHP дружит с MySQL". До этого урока я формировал базу данных на своем компьютере с помощью OSpanel. Хотел работать с базой данных сразу на своем сайте но возникли проблемы. А ответа на свои вопросы, я не получил. Я экспортировал базу данных на своем компе в файл ship_game.sql, но не ясно, где его размещать. С параметрами функции mysql_connect("localhost", "ship_game", ""); тоже не все ясно.Параметр "localhost" подходит для моего случая? Третий параметр - пароль. О каком пароле идет речь? Для входа в базу данных? На сайт? Я даже сделал проверку соединения и она показала, что его нет. Кто поопытней, подскажите, где моя ошибка? |
|||||
27 | Серверный флот - Рефакторинг РНР-кода |
|
|||
На этом уроке мы займёмся рефакторингом, если у кого-нибудь повернётся язык назвать этим словом то, чем мы здесь будем заниматься... Мы переделаем файл init.php в подключаемый - в нём будет только подключение к базе и две полезные функции. В конце урока мы создадим файл battle.php, в котором сделаем include и протестируем. Отчёт отправил: 11589. Yefim Выполнено за 1 день 14 час. 56 мин. [Показать отчёт] Научился: Наконец мне удалось решить проблему прошлого урока. См. 1 скрншот Создавать function my_query() и тестировать её. Создавать function select_row() и тестировать её. Отличный урок получился!!! Сложности: Подключаться к базе данных на реалном сайте reg.ru. |
|||||
28 | Серверный флот - Функция do_info |
|
|||
На этом уроке мы создадим структуру файла battle.php и напишем заглушки для всех функций протокола. Далее, реализуем команду info в функции do_info() Отчёт отправил: 11589. Yefim Выполнено за 2 час. 32 мин. [Показать отчёт] Научился: Создавать структуру файла battle.php Написать заглушки для всех функций протокола. Реализовывать команду info в функции do_info(). Сложности: Хотелось бы знать причину, почему не рекоммендуется использовать функцию extract($row)? |
|||||
29 | Серверный флот - Капитан очевидность |
|
|||
На этом уроке мы исправим несколько мелких недочётов. Добавим в таблицу 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 |
|
|||
На этом уроке мы напишем функцию do_ship(). Разберём ещё раз все возможные ошибки расстановки кораблей, сформируем код и текст ошибки, который вернём в xml. После успешного размещения всех кораблей мы поменяем статус игры на "play" и начнём уже играть. Отчёт отправил: 11589. Yefim Выполнено за 1 день 22 час. 30 мин. [Показать отчёт] Научился: Реализовывать функцию do_ship() с тестированием функционала программы по обработке большинства возможных ошибок. Отличный и очень полезный урок! Сложности: Очень трудоемкий урок! Но он того стоит! |
|||||
31 | Серверный флот - Функция do_fire |
|
|||
На этом уроке мы напишем функцию do_fire(). Разберём ещё раз все возможные ошибки при выполнении выстрела, сформируем код и текст ошибки, который вернём в xml. После успешного выстрела мы проверим количество оставшихся океанов. В конце функции добавим все транзакции в таблицу game. Отчёт отправил: 11589. Yefim Выполнено за 3 дня 3 час. 35 мин. [Показать отчёт] Научился: Реализовывать функцию do_fire() с тестированием обработкм большинства возможных ошибок. Отличный и очень полезный урок! Сложности: Не удалось выполнить урок в один присест. У меня не работает код, где имя переменной совпадает с одноименной функцией now_tick() Непонятно почему у Игромистра работает? В таких случая я пользовался переменной $ticks. |
|||||
32 | Серверный флот - Функция do_game |
|
|||
На этом уроке мы напишем функцию do_game(). Будем получать список всех выстрелов с результатами. Отчёт отправил: 11589. Yefim Выполнено за 12 час. 50 мин. [Показать отчёт] Научился: Реализовывать функцию do_game(). Получать список всех выстрелов с результатами в формате XML Сложности: Всё получилось, хотя и не сразу. Вопрос: Как отображать ошибки РНР в браузере? |
|||||
33 | ПОЛУФИНАЛЬНЫЙ УРОК. Большая игра |
|
|||
На этом уроке мы поиграем в Морской флот через адресную строку. Устроим соревнование из шести участников. Битва будет что надо! :) В начале урока мы допишем в протокольчик команду перезапуска игры и стартанём. В конце урока я покажу, как написан скрипт map.php для отображения статуса игры. В этом уроке нужно поиграть самому и ЗАПИСАТЬ видеообзор игры. Отчёт отправил: 11589. Yefim Выполнено за 2 дня 7 час. 54 мин. [Показать отчёт] Научился: Реализовывать скрипт map.php для отображения состояния игры во всех океанах. а также протокол команды перезапуска игры. Сложности: Тестировал программу через адресную строку. Процесс игры за шестерых оказался довольно трудоемким. Для облегчения работы я использовал 2 разных браузера. В одном адресная строка управляла отображением карты, в другом - осуществляла выстрелы. Надеюсь, в конечном коде эти 2 действия будут более комфортными, сама игра будет более зрелищной и тогда будет что показать на видео. |
|||||
34 | Клиентский флот - Подключение к серверу |
|
|||
На этом уроке мы создадим класс Server, который будет подключаться к нашему PHP скрипту. Будет отправлять запрос и получать ответ. Примечание Если ваша сеть использует для подключения к интернету особые настройки прокси-сервера, то необходимо добавить в программу считывание системных Proxy-настроек, см. пример. Отчёт отправил: 11589. Yefim Выполнено за 1 день 10 час. 26 мин. [Показать отчёт] Научился: Создавать класс Server, который подключается к PHP скрипту, чтобы отправлять запросы и получать ответы. Сложности: Код работает нестабильно: Иногда ответ есть, иногда нет. Почему? |
|||||
35 | Клиентский флот - Парсинг XML |
|
|||
На этом уроке мы научимся парсить XML документ. Мы напишем метод RequestInfo(), который выудит все нужные значения из XML-документы и вернёт их в основную программу. Отчёт отправил: 11589. Yefim Выполнено за 11 час. 20 мин. [Показать отчёт] Научился: Реализовывать метод RequestInfo(), который извлекает все нужные значения из XML-документы и возвращает их в основную программу. Сложности: Всё получилось! |
|||||
36 | Клиентский флот - Класс ServerInfo |
|
|||
На этом уроке мы займёмся рефакторингом - вынесем повторяющиеся действия в отдельные методы, уберём параметры метода RequestInfo(), запишем их во внутренние поля класса. Потом вынесем всё хозяйство для Info-запроса в отдельный класс ServerInfo. Оптимизируем ещё некоторые процедуры и уберём try-блоки в базовый класс. Отчёт отправил: 11589. Yefim Выполнено за 8 час. 40 мин. [Показать отчёт] Научился: Заменять повторяющиеся действия в отдельные методы. Сложности: Отличный Рефакторинг! |
|||||
37 | Клиентский флот - Класс ServerShip |
|
|||
На этом уроке мы создадим класс 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 |
|
|||
На этом уроке мы создадим класс ServerFire. Мы научим нашу программу отправлять на сервер приказы о выстрелах! Правда, мы пока ещё не будем знать о результатах выстрела. Зато мы доработаем РНР функцию, чтобы она в XML возвращала координаты выстрелившего корабля, чтобы организовать правильную анимацию. Отчёт отправил: 11589. Yefim Выполнено за 1 день 23 час. 19 мин. [Показать отчёт] Научился: Создавать класс ServerFire со своим методом Request(). Сложности: Система работает нестабильно. Иногда ответ сервера приходится долго (около минуты) ждать. Иногда ответ вообще не приходит. Однако, если запрос осуществлять в адресной строке браузера все работает довольно быстро. Примечание от Дмитрия не помогает. Добавленные тэги xml-теги of_x и of_y не возвращаются. |
|||||
39 | Клиентский флот - Класс ServerGame |
|
|||
На этом уроке мы проработаем клиентский запрос "game" для получения списка транзакций всех участников игры. Мы создадим класс ServerGame, создадим структуру Actions, доработаем методы из базового класса и реализуем заполнение массива считанными с XML данными. Отчёт отправил: 11589. Yefim Выполнено за 1 день 1 час. 54 мин. [Показать отчёт] Научился: Создавать класс ServerGame со структурой Actions. Сложности: Выяснилось, что где-то в РНР файлах затаилась ошибка. |
|||||
40 | Одинокий капитан - Прицел |
|
|||
На этом уроке мы нарисуем новую пиктограмму для нашей игры - знак прицела. И пропишем его добавление в уже созданные классы. Это пиктограмма будет использоваться для отметки полей, по которым сделан выстрел, но пока ещё не известен результат. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 11 мин. [Показать отчёт] Научился: Рисовать новую пиктограмму для нашей игры - знак прицела. Создавать классик FireBox : Fire. Изменять в классе Map методы Icon/Fire/Kill/Fail. Сложности: Всё получилось! |
|||||
41 | Одинокий капитан - Выстрелы |
|
|||
На этом уроке мы обработаем массив actions со списком полученных от сервера транзакций. Сделаем отображение результатов, для этого придётся исправить мелкие ошибки прошлого урока в классе Box: Create(EnumIcons icon) Отчёт отправил: 11589. Yefim Выполнено за 3 дня 5 час. 43 мин. [Показать отчёт] Научился: Обрабатывать массив actions со списком полученных от сервера транзакций. Сложности: Всё получилось! |
|||||
42 | Одинокий капитан - Победа! |
|
|||
На этом уроке мы добавим на форму таймер и флаг состояния игры. После этого мы поиграем в одинокого капитана - будем стрелять по всем океанам без ответного огня. Отчёт отправил: 11589. Yefim Выполнено за 2 час. 59 мин. [Показать отчёт] Научился: Добавлять на форму таймер и реализовывать его обработчик в зависимости от флага состояния игры. Тестировать игру в качестве одинокого капитана, стреляющего по всем океанам без ответного огня. Сложности: Классно получилось! |
|||||
43 | Финишная миля. Перезагрузка. |
|
|||
На этом уроке мы добавим функцию перезапуска в РНР файл.
Отчёт отправил: 11589. Yefim Выполнено за 2 час. 36 мин. [Показать отчёт] Научился: Реализовывать функцию перезапуска в РНР файл. Сложности: Всё получилось! |
|||||
44 | Финишная миля. Мой океан. |
|
|||
На этом уроке мы добавим две важные функции в наш проект. 1. Определение номера свободного океана при запуске. 2. Случайное размещение кораблей на выбранном океане. Отчёт отправил: 11589. Yefim Выполнено за 21 час. 42 мин. [Показать отчёт] Научился: Определzять номера свободного океана при запуске. Осуществлять случайное размещение кораблей на выбранном океане. Сложности: Всё получилось. |
|||||
45 | Финишная миля. Найти победителя |
|
|||
На этом уроке мы наконец-таки немножко поиграем :) Потом сделаем определение победителя. Из-за чего в конец запутаемся в коде класса Form1. Примем решение на следующем уроке переписать его. Отчёт отправил: 11589. Yefim Выполнено за 12 час. 53 мин. [Показать отчёт] Научился: Тестировать программу путем запуска 4-х экзэшников и игры за четверых. Реализовать алгоритм по определению океана-победителя. Сложности: Получилось как в уроке. |
|||||
46 | Свежий взгляд. Схема проекта. |
|
|||
На этом уроке мы опять начнём всё сызнова. Рассмотрим шесть основных состояний нашей программы. Создадим новый проект и настроим его. Отчёт отправил: 11589. Yefim Выполнено за 2 час. 14 мин. [Показать отчёт] Научился: Планировать всё сызнова. Выделять шесть основных состояний программы: Init, wait ship, load, play и stop. Сложности: Проблем не было. |
|||||
47 | Свежий взгляд. Управление из таймера. |
|
|||
На этом уроке мы заложим фундамент нашей программы - шесть методов do*() и вызов их из таймера. Отчёт отправил: 11589. Yefim Выполнено за 1 час. 24 мин. [Показать отчёт] Научился: Закладывать ... фундамент программы (шесть методов, обрабатывающих соответствующий статус) Сложности: Я перенес загрузку заставку в метод Prepare() иначе загружается с опозданием. |
|||||
48 | Свежий взгляд. Ожидание запуска. |
|
|||
На этом уроке мы напишем метод showMessage() для отображения сообщений игры. Далее, мы добавим в наш проект уже написанные классы Server* и Map. Также разместим кнопку Start для запуска игры. Отчёт отправил: 11589. Yefim Выполнено за 1 день 23 час. 40 мин. [Показать отчёт] Научился: Создавать метод showMessage() для отображения сообщений о состоянии игры. Добавлять в проект классы Server* и Map написанные в другом проекте. Сложности: Всё получилось. Однако, иногда ответ от сервера требует много (до 2-х минут) времени. |
|||||
49 | Свежий взгляд. Размещение кораблей. |
|
|||
На этом уроке мы напишем метод doShip() для размещения кораблей. Для этого нам потребуется добавить уже написанные классы Box и Ocean. Также придётся немного поменять функцию создания и размещения кораблей. Отчёт отправил: 11589. Yefim Выполнено за 2 час. 5 мин. [Показать отчёт] Научился: Реализовывать метод doShip() для размещения кораблей. Сложности: Всё получилось! |
|||||
50 | Свежий взгляд. Завершение проекта. |
|
|||
На этом уроке МЫ ЗАКОНЧИМ создание программы. Напишем обработку состояний play и stop. Отчёт отправил: 11589. Yefim Выполнено за 20 час. 27 мин. [Показать отчёт] Научился: Обрабатывать состояния play и stop. Удалось протестировать программу на двух удаленных компьютерах. Сложности: Однажды в одном из океанов отобразилось лишь 2 корабля. Причину не нашел. |
|||||
51 | ФИНАЛЬНЫЙ УРОК. |
|
|||
На этом уроке мы поиграем по сети с участниками вебинара. Твоя задача - записать видеообзор созданного проекта. Какой курс ты будешь проходить следующим? |
|||||
Итого: 51 видеоурок |
19 час. 44 мин. |
9 чел. | |||
Финалисты: Андрей Поляков, Елена, Юрий, Олюшка, Иван, Tekashnik, Дмитрий, Ильшат, Николай Денисов . |