# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Мы начинаем создание многопользовательской игры "Морской Бой". В игру можно будет играть одновременно четырём участникам. Будет реализована клиентская часть с графическим интерфейсом на C#. Будет разработан протокол общения клиентских программ с сервером. Будет спроектирована и создана серверная база данных на MySQL. Будет написана серверная часть отработки протокола на PHP. Будет создан клиент-класс отработки протокола на C#. Будет реализована анимация всех событий в игре. На этом уроке рассказано о структуре проекта. Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт] Научился: Рисовать картинки Сложности: Ничего Комментарии: Все будет впереди, пока что выполнено самое простое. |
|||||
2 | Интерфейс - Первый кораблик |
|
|||
На этом уроке мы начнём создание проекта - создадим проект, настроим форму, прикрепим иконку. На самой форме разместим главную картинку - pictureMain. А ещё нарисуем 4 картинки и добавим их в ресурсы проекта. Далее создадим графику, подготовим картинки и научимся их выводить на основную картинку. Под конец урока сделаем размещение корабликов по щелчку мышки. Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт] Научился: Обрабатывать события мышки, использовать ресурсы. Сложности: Ничего Комментарии: Все получилось. |
|||||
3 | Интерфейс - А на море корабли |
|
|||
На этом уроке мы нарисуем море с кораблями. Пока у нас не будет матриц, размещение объектов будет случайным. В конце урока напишем алгоритм позиционирования курсора мышки над нашим морем и сделаем размещение "ударов" по морю. Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт] Научился: Определять клетку моря по координатам мышки. Сложности: Ничего. Новым было определение центра клетки по координатам мышки. Комментарии: Чтобы не исправлять картинки и сделать промежутки между ними, я исправила константу tileSize = 34. В результате картинки раздвинулись (видно на скриншоте). |
|||||
4 | Графика - Карта Морского флота |
|
|||
На этом уроке мы создадим карту морского флота. Это будет двумерный массив, в каждой клетке которого записано одно из четырёх значений. Мы напишем алгоритм размещения кораблей и сделаем отображение карты на экране. Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт] Научился: Работать с матрицей моря. Сложности: ничего Комментарии: Продолжение следует... |
|||||
5 | Графика - Выстрелы по Кораблям |
|
|||
На этом уроке мы наконец-таки сможем немножко поиграть с компьютером и потопить весь компьютерный флот! :) Сначала мы уберём вывод кораблей на экран, потом переделаем функцию обработки клика мышки. Добавим проверку точности удара и вывода результата. Отчёт отправил: 4004. Елена Выполнено за 40 мин. [Показать отчёт] Научился: "Подглядывать" на карту кораблей. Сложности: Подбить весь флот за 7 ударов. Комментарии: Статистику и MessageBox надо поменять местами. На самом деле там 7 ударов и 0 кораблей. |
|||||
6 | Графика - Рефакторинг |
|
|||
На этом уроке мы займёмся рефакторингом кода. Создадим класс Graph, в который перенесём все операции, связанные с графикой. Код станет чище, понятней, хотя придётся повозиться с его оптимизацией. Отчёт отправил: 4004. Елена Выполнено за 50 мин. [Показать отчёт] Научился: Рефакторингу кода. Сложности: Не запутаться в классах. Комментарии: Полезная вещь этот рефакторинг. Позволяет взглянуть на программу по-новому. |
|||||
7 | Анимация - Полёт снаряда |
|
|||
На этом уроке мы составим список всех анимаций, которые будут в нашей игре. Твоя задача - нарисовать все кадры полёта снаряда.
Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Рисовать анимационные картинки Сложности: Найти эскиз взрыва Комментарии: нашла эскиз всего из 9 картинок. |
|||||
8 | Анимация - Отображение кадров |
|
|||
На этом уроке мы создадим первую анимацию в нашем проекте. Это будет летящий снаряд. Мы рассмотрим несколько способов его отображения, а также добавим его перемещение. Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Создавать анимацию. Сложности: Создание анимации, прозрачный фон. Комментарии: Убрала артефакты, добавив в цикл две строчки: for (int j = 0; j < 10; j++) { pictureFire.Image = Properties.Resources.fire10; // картинка с прозрачным фоном pictureFire.Refresh(); pictureFire.Image = FireAnimate[j]; pictureFire.Location = new Point(50+j*4, 50+j*7); pictureFire.Refresh(); Thread.Sleep(100); } А взрыв и правда красивый получился. |
|||||
9 | Анимация - Полёт по таймеру |
|
|||
На этом уроке мы добавим таймер и реализуем полёт снаряда через функцию его события. Для этого в функцию таймера нужно будет разместить внутренности цикла, а также добавить проверки на начало и окончание полёта снаряда. Потом мы оформим полёт снаряда в ту клетку моря, по которой был щелчёк мышки. Отчёт отправил: 4004. Елена Выполнено за 45 мин. [Показать отчёт] Научился: Использовать таймер для анимации Сложности: ничего Комментарии: Урок очень понравился. Все здорово. Только у меня успешно "стреляет" по всей форме, а не только в пределах поля. Подняла пару строк if (!IsOnTheMap(x, y)) return; и поставила после graph.ExtractCoords(e.X, e.Y, out x, out y); Может, что-то в уроке просмотрела. А может, это пригодится в игре на нескольких полях. А то сейчас |
|||||
10 | Архитектура - Перезагрузка проекта |
|
|||
На этом уроке мы начнём всё заново. Но уже на другом, качественно новом уровне. Проработаем архитектуру будущей программы. Создадим новый проект и создадим класс Ocean. Пока программа будет простой, самое главное в этом уроке - понять архитектуру проекта, увидеть весь лес как бы сверху. Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт] Научился: Начала разбираться с диаграммами классов Сложности: Составить диаграмму Комментарии: Интересно разобраться с составлением диаграмм классов. Жаль, что Express версия Visual Studio не позволяет составлять UML-диаграммы по коду программы. Мне кажется, что пока моя диаграмма весьма приближенно отражает то, что в итоге будет содержаться в программе. |
|||||
11 | Архитектура - Карта Пиратов |
|
|||
На этом уроке мы создадим карту Пиратов, определимся с условными обозначениями (enum), определим отдельные матрицы для размещения кораблей и отметки совершённых по ним ударов. Создадим метод для размещения кораблей и потестируем всё это в пошаговом режиме. Также добавим статистические переменные, настоящие пираты должны знать сколько было кораблей и сколько осталось. Отчёт отправил: 4004. Елена Выполнено за 45 мин. [Показать отчёт] Научился: Генерировать методы классов Сложности: ничего Комментарии: Когда решала олимпиадную задачу "Морской бой" очень не хватало еще одного состояния - когда точно знаешь, что в этой клетке корабля нет. Здесь это учтено. |
|||||
12 | Архитектура - Наследие картинок |
|
|||
На этом уроке мы займёмся картинками. Создадим класс Box, унаследованный от PictureBox и настроим его для использования в нашем проекте. Далее, из него мы унаследуем классы для каждой из картинок. Самое сложное в этом уроке - уловить идею наследования и понять, почему и как эти картинки выводятся на экран. Отчёт отправил: 4004. Елена Выполнено за 45 мин. [Показать отчёт] Научился: Использовать наследование встроенных классов (на примере PictureBox) Сложности: ничего Комментарии: Замечательный урок по наследованию классов. |
|||||
13 | Архитектура - Фабрика картинок |
|
|||
На этом уроке мы настроим вывод карты на экран. Нам понадобится фабрика картинок - статический метод Box.Create и волшебная функция превращения EnumShips x EnumFires в EnumIcons. Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт] Научился: Использовать вложенные switch Сложности: ничего Комментарии: Чтобы "растянуть" фон под корабликами можно воспользоваться this.BackgroundImageLayout = ImageLayout.Stretch; |
|||||
14 | Архитектура - Мышкой по кораблям |
|
|||
На этом уроке мы научимся по щелчку мышки стрелять по кораблям. Для этого нам понадобится создать обработчик MouseClick, и подцепить его к каждой картинке. Используя делегаты мы будем свистать всех на верх - до класса Form1, из которого будем спускаться по иерархии опять вниз, для пометки выстрела и отображения его на карте. Отчёт отправил: 4004. Елена Выполнено за 10 мин. [Показать отчёт] Научился: Создавать обработчики события для динамических объектов (на примере PictureBox) Сложности: Успевать все в реальном времени (на вебинаре) Комментарии: Все получилось сделать в прямом эфире (во время вебинара), поэтому затраченное время указала 10 минут (только на составление отчета) |
|||||
15 | База Морского Флота - INFO |
|
|||
На этом уроке мы начнём проектировать Базу данных серверного флота. Пока мы создадим эскиз только для одной таблицы - info, в которой будет поле status. Для него мы составим схему состояний, и условия перехода из одного состояния в другое. Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт] Научился: Составлять структуру базы данных Сложности: Ничего Комментарии: На мой взгляд, процедура restart здесь не нужна (см. блок-схему). Просто в случае status=stop алгоритм заканчивается. |
|||||
16 | База Морского Флота - SHIP |
|
|||
На этом уроке мы создадим таблицу для хранения координат кораблей и их состояния. В таблице ship будет 5 полей. Отдельное внимание уделено вопросу перезарядки пушек. Отчёт отправил: 4004. Елена Выполнено за 15 мин. [Показать отчёт] Научился: Составлять схему таблицы базы данных Сложности: проработать алгоритм изменения значения флага корабля Комментарии: Самое интересное впереди :) |
|||||
17 | База Морского Флота - GAME |
|
|||
На этом уроке мы создадим таблицу событий в нашей игре, в которой будут хранится транзакции всех выстрелов и их результатов. В таблице game будет 6 полей, при каждом выстреле в неё будет добавляться две записи. Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт] Научился: Представлять ход игры в виде таблицы Сложности: ничего Комментарии: За время этого урока на вебинаре у меня 3 раза "отваливался" Интернет :(. Поэтому смотреть пришлось в записи. |
|||||
18 | База Морского Флота - phpMyAdmin |
|
|||
На этом уроке мы наконец-таки возьмёмся за практику. Запустим phpMyAdmin и создадим в нём все три таблицы. Отчёт отправил: 4004. Елена Выполнено за 10 мин. [Показать отчёт] Научился: Создавать таблицы вручную на удаленном сервере. Сложности: Сложно было не мне, а серверу во время вебинара. Комментарии: Все получилось. С нетерпением жду протоколов. |
|||||
19 | База Морского флота - Экспресс SQL |
|
|||
На этом уроке мы сделаем краткий экспресс-обзор языка структурированных запросов. Кратко рассмотрим все основные команды SQL.
Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Расширила "словарный запас" MySQL Сложности: ничего Комментарии: Некоторых ключевых слов раньше не слышала, таких как LIKE, GROUP BY, DISTINCT. Так что мне удалось расширить свои познания в MySQL |
|||||
20 | База Морского Флота - Запросы SQL |
|
|||
На этом уроке мы от души повеселимся с таблицами info и ship - посоставляем самые разные запросы к ним, которые в будущем нам пригодятся при проектировании Серверного протокола. Эти запросы будут выполняться в PHP на серверной части при обработке клиентских запросов. Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Создавать комбинированные запросы Сложности: ничего Комментарии: Еще раз "С пополнением словарного запаса" меня :) |
|||||
21 | Протокол - Список команд |
|
|||
На этом уроке мы начнём проектировать протокол общения клиентской программы с сервеной частью. Перечислим все клиентские команды и кратко пройдёмся по каждой. Составить xml-формат сервеных ответов нужно будет самостоятельно.
Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт] Научился: Обновлять значения полей в таблице Сложности: ВСЕ!!! Комментарии: Наверное, это самый сложный урок для понимания за все время на проекте. Пока нет полного представления того, что мы хотим получить. Знаний XML в достаточном объеме не имею. Очень надеюсь на дальнейшее "прояснение". Единственное, что было просто - это добавить поле в таблицу info. |
|||||
22 | Протокол - Команды INFO и SHIP |
|
|||
На этом уроке мы проработаем клиентский запрос "info" и "ship". Выпишем все варианты ответа сервера, и, самое главное, напишем SQL-запросы для проверки всех возможных случаев. Урок сложный, но после такой проработки создание серверного РНР скрипта будет сплошным удовольствием :) Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: "Прокачала" SQL-запросы, некоторые я бы не смогла составить Сложности: уже стало проще. Правда, по-прежнему XML принимаю на веру. Комментарии: Попыталась записать код на PHP. Интересно потом сравнить :) |
|||||
23 | Протокол - Команда FIRE |
|
|||
На этом уроке мы проработаем клиентский запрос "fire". Выпишем все варианты ответа сервера, и, самое главное, напишем SQL-запросы для проверки всех возможных случаев. Во второй части урока мы три раза пройдёмся по алгоритму, выполняя все написанные SQL запросы. Отчёт отправил: 4004. Елена Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Вести лог игры Сложности: подставлять данные в запросы при проверке Комментарии: Интересно уже запустить весь этот battle.php Забыла как считывать данные из адресной строки через глобальный массив $_GET. |
|||||
24 | Протокол - Команда GAME |
|
|||
На этом уроке мы разберём последнюю команду протокола - game. Команда простая, но очень важная - именно она будет чаще всего выполняться, благодаря ей все клиенты будут знать, что происходит на море, что куда летит и с каким результатом. Отчёт отправил: 4004. Елена Выполнено за 25 мин. [Показать отчёт] Научился: Части протокола, касающейся таблицы GAME Сложности: ничего Комментарии: Теперь весь протокол сформирован |
|||||
25 | Серверный флот - FTP подключение |
|
|||
На этом уроке мы подключимся к FTP серверу, создадим там свою папку и создадим файл init.php. Отчёт отправил: 4004. Елена Выполнено за 5 мин. [Показать отчёт] Научился: Подключаться к серверу по FTP Сложности: Сложным - ничего, новым - все (почти) Комментарии: Вот и первый "Привет, Сервер!" Все успела во время вебинара, поэтому времени мало заняло. |
|||||
26 | Серверный флот - Как PHP дружит с MySQL |
|
|||
На этом уроке мы создадим на РНР подключение к базе данных MySQL. Организуем подключение, выберем базу данных, выполним запрос, и напечатеем результат. Отчёт отправил: 4004. Елена Выполнено за 10 мин. [Показать отчёт] Научился: Подключаться к базе занных Сложности: ничего Комментарии: Теперь буду расширять "словарный запас PHP" |
|||||
27 | Серверный флот - Рефакторинг РНР-кода |
|
|||
На этом уроке мы займёмся рефакторингом, если у кого-нибудь повернётся язык назвать этим словом то, чем мы здесь будем заниматься... Мы переделаем файл init.php в подключаемый - в нём будет только подключение к базе и две полезные функции. В конце урока мы создадим файл battle.php, в котором сделаем include и протестируем. Отчёт отправил: 4004. Елена Выполнено за 10 мин. [Показать отчёт] Научился: Разделять код PHP на функции Сложности: ничего Комментарии: Опять осталось только отчет оформить, все сделала во время вебинара. |
|||||
28 | Серверный флот - Функция do_info |
|
|||
На этом уроке мы создадим структуру файла battle.php и напишем заглушки для всех функций протокола. Далее, реализуем команду info в функции do_info() Отчёт отправил: 4004. Елена Выполнено за 10 мин. [Показать отчёт] Научился: Это самый первый осознанный xml. Начинаю его понимать. Сложности: Успеть сделать форматированный xml в поле textarea во время вебинара Комментарии: Очень выручает временами кнопка PrintScreen, когда во время вебинара не успеваю что-нибудь, а все уже дальше двинулись. |
|||||
29 | Серверный флот - Капитан очевидность |
|
|||
На этом уроке мы исправим несколько мелких недочётов. Добавим в таблицу info поле oceans, соответственно изменим функцию do_info(). Добавим в файл init.php две новые функции select_scalar() и now_ticks (). Также нам придётся изменить тип полей для хранения тиков с int на bigint. Отчёт отправил: 4004. Елена Выполнено за 5 мин. [Показать отчёт] Научился: Добавлять поля в базу данных, перемещать поля. Сложности: исправлять ошибки по ходу вебинара (но я справилась!) Комментарии: Все готово к реализации протокола :). |
|||||
30 | Серверный флот - Функция do_ship |
|
|||
На этом уроке мы напишем функцию do_ship(). Разберём ещё раз все возможные ошибки расстановки кораблей, сформируем код и текст ошибки, который вернём в xml. После успешного размещения всех кораблей мы поменяем статус игры на "play" и начнём уже играть. Отчёт отправил: 4004. Елена Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Отслеживать тонкости реализации протокола в PHP Сложности: исправлять ошибки Комментарии: Вот тут-то я уже перестала успевать за вебинаром :( |
|||||
31 | Серверный флот - Функция do_fire |
|
|||
На этом уроке мы напишем функцию do_fire(). Разберём ещё раз все возможные ошибки при выполнении выстрела, сформируем код и текст ошибки, который вернём в xml. После успешного выстрела мы проверим количество оставшихся океанов. В конце функции добавим все транзакции в таблицу game. Отчёт отправил: 4004. Елена Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Выполнять выстрелы Сложности: Увидеть таблицу ship в базе данных!!!!!!!!!!!!!!!!!!!!!!!!!! Комментарии: Можете вернуть отчет на доработку, только помогите пожаааалуйста!!!!!!! Не могу увидеть таблицу vev_ship в базе данных!!! Ползунок в самом низу, а таблицы нет :((((((((((( (см. скриншот) Запрос SELECT TABLES выводит, что таблица есть в базе. |
|||||
32 | Серверный флот - Функция do_game |
|
|||
На этом уроке мы напишем функцию do_game(). Будем получать список всех выстрелов с результатами. Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт] Научился: Добавлять элементы списка в xml-ответ Сложности: Этот урок намного проще предыдущего. Комментарии: Надеюсь, что ошибок не наделала :) Вроде все получилось |
|||||
33 | ПОЛУФИНАЛЬНЫЙ УРОК. Большая игра |
|
|||
На этом уроке мы поиграем в Морской флот через адресную строку. Устроим соревнование из шести участников. Битва будет что надо! :) В начале урока мы допишем в протокольчик команду перезапуска игры и стартанём. В конце урока я покажу, как написан скрипт map.php для отображения статуса игры. В этом уроке нужно поиграть самому и ЗАПИСАТЬ видеообзор игры. Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Создавать скрипт map.php для реализации игры Сложности: найти ошибку в файле battle.php, допущенную в предыдущем уроке: прошло довольно много времени, все подзабылось, а номер океана to_ocean выводился неверно. Комментарии: Интересное решение с формированием цветов ячеек таблицы и вообще стилей. Надо взять на вооружение :) Я бы стала делать через style.css и класс ячейки. Жалко, что вебинар проходил слишком поздно - не удалось вживую поучаствовать в "Большой игре" |
|||||
34 | Клиентский флот - Подключение к серверу |
|
|||
На этом уроке мы создадим класс Server, который будет подключаться к нашему PHP скрипту. Будет отправлять запрос и получать ответ. Примечание Если ваша сеть использует для подключения к интернету особые настройки прокси-сервера, то необходимо добавить в программу считывание системных Proxy-настроек, см. пример. Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт] Научился: Осуществлять запросы к серверу Сложности: Разобраться с кодом функции RequestXML() Комментарии: Пока сложновато получается. Видимо, потому что знаний в этом вопросе не хватает. Но все интересно. Думаю, дальше легче будет :) |
|||||
35 | Клиентский флот - Парсинг XML |
|
|||
На этом уроке мы научимся парсить XML документ. Мы напишем метод RequestInfo(), который выудит все нужные значения из XML-документы и вернёт их в основную программу. Отчёт отправил: 4004. Елена Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Парсить xml Сложности: Сориентироваться и понять ошибки в файлах battle.php и init.php, которые не дают корректно работать функции LoadXml() Комментарии: Урок дался как-то тяжело. Сначала не могла найти, откуда в xml берется сверху пустая строка. Оказалось, что я ее оставила в файле init.php случайно. Потом замучилась исправлять перевод строки. Оказывается, notepad++, в котором я набирала текст файла battle.php по умолчанию использует для перевода строки \r\n вместо \n. Долго искала, что это так, потом долго искала, как это исправить. В итоге, конечно, все получилось, но не просто. Видимо, xml для меня пока остается "темным лесом". Хотя кое-какие "проблески" уже намечаются. |
|||||
36 | Клиентский флот - Класс ServerInfo |
|
|||
На этом уроке мы займёмся рефакторингом - вынесем повторяющиеся действия в отдельные методы, уберём параметры метода RequestInfo(), запишем их во внутренние поля класса. Потом вынесем всё хозяйство для Info-запроса в отдельный класс ServerInfo. Оптимизируем ещё некоторые процедуры и уберём try-блоки в базовый класс. Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт] Научился: рефакторингу кода Сложности: ничего Комментарии: Урок легкий, но очень полезный. |
|||||
37 | Клиентский флот - Класс ServerShip |
|
|||
На этом уроке мы создадим класс ServerShip для размещения кораблей. В нём будет вспомогательный метод ExtractShipCoords(), который матрицу кораблей сконвертирует в строчку GET данных для передачи их в РНР скрипт. Также будут некоторые сложности для получения этой матрицы в коде основной программы, нам придётся добавить новый метод в класс Ocean, изменить права доступа к матрице ships в классе Map. Отчёт отправил: 4004. Елена Выполнено за 50 мин. [Показать отчёт] Научился: Передавать корабли из массива с строку параметров PHP Сложности: ничего Комментарии: Отличный урок! Все получилось, все легко и понятно!!! |
|||||
38 | Клиентский флот - Класс ServerFire |
|
|||
На этом уроке мы создадим класс ServerFire. Мы научим нашу программу отправлять на сервер приказы о выстрелах! Правда, мы пока ещё не будем знать о результатах выстрела. Зато мы доработаем РНР функцию, чтобы она в XML возвращала координаты выстрелившего корабля, чтобы организовать правильную анимацию. Отчёт отправил: 4004. Елена Выполнено за 45 мин. [Показать отчёт] Научился: Выполнять выстрелы Сложности: ничего Комментарии: Все получилось! Движемся к финишу!!! |
|||||
39 | Клиентский флот - Класс ServerGame |
|
|||
На этом уроке мы проработаем клиентский запрос "game" для получения списка транзакций всех участников игры. Мы создадим класс ServerGame, создадим структуру Actions, доработаем методы из базового класса и реализуем заполнение массива считанными с XML данными. Отчёт отправил: 4004. Елена Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Парсить массив из XML-тегов Сложности: ничего Комментарии: УРА!!! Я наверстала свое отставание в "Морском флоте". Чувствуется, что курс близится к своему завершению. Главное, чтобы это "завершение" свершилось!!! |
|||||
40 | Одинокий капитан - Прицел |
|
|||
На этом уроке мы нарисуем новую пиктограмму для нашей игры - знак прицела. И пропишем его добавление в уже созданные классы. Это пиктограмма будет использоваться для отметки полей, по которым сделан выстрел, но пока ещё не известен результат. Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт] Научился: составлять функции обработки выстрелов Сложности: не забыть добавить обработку неизвестного выстрела во все ветки программы Комментарии: Урок успела сделать на вебинаре. Надеюсь, что ничего не упустила. Может, потом еще ошибки обнаружатся. Подзабылся уже проект. |
|||||
41 | Одинокий капитан - Выстрелы |
|
|||
На этом уроке мы обработаем массив actions со списком полученных от сервера транзакций. Сделаем отображение результатов, для этого придётся исправить мелкие ошибки прошлого урока в классе Box: Create(EnumIcons icon) Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт] Научился: отображать картинки на море с помощью методов Fire(), Fail(), Kill() Сложности: не запутаться в коде (он уже разросся сильно) Комментарии: Все получилось! Отображается прицел, а через 10 секунд - результат при нажатии на кнопку Game. |
|||||
42 | Одинокий капитан - Победа! |
|
|||
На этом уроке мы добавим на форму таймер и флаг состояния игры. После этого мы поиграем в одинокого капитана - будем стрелять по всем океанам без ответного огня. Отчёт отправил: 4004. Елена Выполнено за 40 мин. [Показать отчёт] Научился: выполнять выстрелы Сложности: "добить" корабли Комментарии: Все получилось. Только долго приходится корабли искать. |
|||||
43 | Финишная миля. Перезагрузка. |
|
|||
На этом уроке мы добавим функцию перезапуска в РНР файл.
Отчёт отправил: 4004. Елена Выполнено за 5 мин. [Показать отчёт] Научился: Удалять записи из базы данных для инициализации игры Сложности: сложное будет дальше :) Комментарии: Этот урок легкий. То ли еще будет :) |
|||||
44 | Финишная миля. Мой океан. |
|
|||
На этом уроке мы добавим две важные функции в наш проект. 1. Определение номера свободного океана при запуске. 2. Случайное размещение кораблей на выбранном океане. Отчёт отправил: 4004. Елена Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: сложно сказать... Сложности: распутаться в программе, даже не знаю, удалось ли мне это в полной мере Комментарии: Ну, хотя бы корабли размещаются. С выстрелами придется еще разбираться. Урок тяжелый для меня оказался :( |
|||||
45 | Финишная миля. Найти победителя |
|
|||
На этом уроке мы наконец-таки немножко поиграем :) Потом сделаем определение победителя. Из-за чего в конец запутаемся в коде класса Form1. Примем решение на следующем уроке переписать его. Отчёт отправил: 4004. Елена Выполнено за 45 мин. [Показать отчёт] Научился: играть в "Морской флот" Сложности: Остановить выдачу сообщений о победителях и проигравших, которая генерировала каждую секунду по 4 сообщения. Пришлось даже воспользоваться "волшебной" комбинацией Ctrl-Alt-Del Комментарии: Вроде бы мне удалось угомонить таймер, и даже поиграть. Правда, в уроке я так и не увидела, почему там сообщения выводятся один раз, а у меня ОЧЕНЬ много. Сделала просто - при выводе победителя поставила timer.Enabled = false, а при нажатии на кнопку 'Ship' timer.Enabled = true. |
|||||
46 | Свежий взгляд. Схема проекта. |
|
|||
На этом уроке мы опять начнём всё сызнова. Рассмотрим шесть основных состояний нашей программы. Создадим новый проект и настроим его. Отчёт отправил: 4004. Елена Выполнено за 10 мин. [Показать отчёт] Научился: Повторение пройденного Сложности: ничего Комментарии: Переходим к третьей реализации "Морского флота" |
|||||
47 | Свежий взгляд. Управление из таймера. |
|
|||
На этом уроке мы заложим фундамент нашей программы - шесть методов do*() и вызов их из таймера. Отчёт отправил: 4004. Елена Выполнено за 15 мин. [Показать отчёт] Научился: Программировать методом разбиения программы на функции Сложности: Самой почему-то раньше не приходило в голову, как необходимо организовать код Комментарии: Сразу вспомнилась книжка Р. Мартина Чистый код. Создание, анализ и рефакторинг. |
|||||
48 | Свежий взгляд. Ожидание запуска. |
|
|||
На этом уроке мы напишем метод showMessage() для отображения сообщений игры. Далее, мы добавим в наш проект уже написанные классы Server* и Map. Также разместим кнопку Start для запуска игры. Отчёт отправил: 4004. Елена Выполнено за 20 мин. [Показать отчёт] Научился: Добавлять в проект существующие классы Сложности: запуталась с кнопкой Start Комментарии: Все отлично! |
|||||
49 | Свежий взгляд. Размещение кораблей. |
|
|||
На этом уроке мы напишем метод doShip() для размещения кораблей. Для этого нам потребуется добавить уже написанные классы Box и Ocean. Также придётся немного поменять функцию создания и размещения кораблей. Отчёт отправил: 4004. Елена Выполнено за 30 мин. [Показать отчёт] Научился: Размещать корабли Сложности: не запутаться в "кусках старого кода" Комментарии: Все получилось! |
|||||
50 | Свежий взгляд. Завершение проекта. |
|
|||
На этом уроке МЫ ЗАКОНЧИМ создание программы. Напишем обработку состояний play и stop. Отчёт отправил: 4004. Елена Выполнено за 35 мин. [Показать отчёт] Научился: Обрабатывать выстрелы и конец игры Сложности: не запутаться с делегатами Комментарии: Получилась хорошая игрушка. Правда, обнаружила, что когда "игра уже идет", и в этот момент выполнить команду ?do=restart, то всем запущенным окнам выделяется океан 0. Думаю, это исправилось, когда в методе doWait() было добавлено дополнительное условие, которое я запомнила с вебинара if (serverInfo.status == "wait" || serverInfo.status == "stop") Но в запись видеоурока это, к сожалению, не попало. |
|||||
51 | ФИНАЛЬНЫЙ УРОК. |
|
|||
На этом уроке мы поиграем по сети с участниками вебинара. Твоя задача - записать видеообзор созданного проекта. Какой курс ты будешь проходить следующим? Отчёт отправил: 4004. Елена Выполнено за 3 час. 00 мин. [Показать отчёт] Научился: Записывать видеообзор Сложности: Собраться с духом и найти общий язык с фантазией. Комментарии: Первооткрывателем (то есть первоокончателем) этого курса быть не получилось. Но я его усе-таки закончила! Видеообзор: https://youtu.be/57zQUvY-AIA |
|||||
Итого: 51 видеоурок |
19 час. 44 мин. |
9 чел. | |||
Финалисты: Андрей Поляков, Елена, Юрий, Олюшка, Иван, Tekashnik, Дмитрий, Ильшат, Николай Денисов . |