# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 |
![]() |
|
|||
Мы начинаем создание многопользовательской игры "Морской Бой". В игру можно будет играть одновременно четырём участникам. Будет реализована клиентская часть с графическим интерфейсом на C#. Будет разработан протокол общения клиентских программ с сервером. Будет спроектирована и создана серверная база данных на MySQL. Будет написана серверная часть отработки протокола на PHP. Будет создан клиент-класс отработки протокола на C#. Будет реализована анимация всех событий в игре. На этом уроке рассказано о структуре проекта. Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт] Научился: Все хорошо. Сложности: Пока сложно не было Комментарии: Все понятно изложено |
|||||
2 | Интерфейс - Первый кораблик |
|
|||
На этом уроке мы начнём создание проекта - создадим проект, настроим форму, прикрепим иконку. На самой форме разместим главную картинку - pictureMain. А ещё нарисуем 4 картинки и добавим их в ресурсы проекта. Далее создадим графику, подготовим картинки и научимся их выводить на основную картинку. Под конец урока сделаем размещение корабликов по щелчку мышки. Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт] Научился: Все получается, и уже понимаешь, что делаешь. Сложности: Все понятно. Комментарии: Вместо pictureMain.Image = pictureMain.Image; вспомнил, что уже видел еще один вариант : pictureMain.Refresh(); и решил его использовать. |
|||||
3 | Интерфейс - А на море корабли |
|
|||
На этом уроке мы нарисуем море с кораблями. Пока у нас не будет матриц, размещение объектов будет случайным. В конце урока напишем алгоритм позиционирования курсора мышки над нашим морем и сделаем размещение "ударов" по морю. Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт] Научился: Повторил graphics.Draw, switch, использование ресурсов. Сложности: Все повторил. Комментарии: Почему-то в редакторе картинок картинки сделал 32 пикселя. а в программе почему-то рисуются в 42 пикселя. Какой-то глюк. Вывел в строку ширину картинк - все правильно-32. вывожу картинки, и вижу что они накладываются. Так что картинка у меня 32, а tilesize 42. |
|||||
4 | Графика - Карта Морского флота |
|
|||
На этом уроке мы создадим карту морского флота. Это будет двумерный массив, в каждой клетке которого записано одно из четырёх значений. Мы напишем алгоритм размещения кораблей и сделаем отображение карты на экране. Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт] Научился: Использование enum. Отметил для себя важную информацию, как надо называть переменные - должны быть осмысленными и не содержать отрицания. Закрепил, как надо делать клапан от зацикливания циклов. Сложности: Все понятно и очень увлекательно. К использованию enum надо будет еще привыкнуть. Комментарии: Понравилась красивая проверка на выход за пределы массива. |
|||||
5 | Графика - Выстрелы по Кораблям |
|
|||
На этом уроке мы наконец-таки сможем немножко поиграть с компьютером и потопить весь компьютерный флот! :) Сначала мы уберём вывод кораблей на экран, потом переделаем функцию обработки клика мышки. Добавим проверку точности удара и вывода результата. Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт] Научился: Узнал, что можно оставлять незаполненный case ( case Cell.none: case Cell.fail: map[x, y] = Cell.fail; break;) Сложности: Все интересно Комментарии: Оказывается в отчете на прошлый урок нашел ошибку, забыл поставить = в проверке на "близость" кораблей. В остальном все хорошо получилось. |
|||||
6 | Графика - Рефакторинг |
|
|||
На этом уроке мы займёмся рефакторингом кода. Создадим класс Graph, в который перенесём все операции, связанные с графикой. Код станет чище, понятней, хотя придётся повозиться с его оптимизацией. Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт] Научился: Рефакторинг кода. Использование internal. Сложности: Рефакторинг - Комментарии: Все как в жизни. Переезд хуже пожара! Быстро рефакторить не получается. И с internal придется разбираться долго. А что будет если вместо internal поставить public? Поставил - все работает. В гугле уже все почитал, но ясности не прибавилось. написано: Этот модификатор определяет доступность члена во всех файлах сборки и его недоступность за пределами сборки. А что такое "сборка"? Спасибо за урок! Пока не могу сказать, что было просто, т.к. не уверен, что сам бы до этого всего додумался. |
|||||
7 | Анимация - Полёт снаряда |
|
|||
На этом уроке мы составим список всех анимаций, которые будут в нашей игре. Твоя задача - нарисовать все кадры полёта снаряда.
Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт] Научился: рисовать Сложности: найти карандаш Комментарии: Жду продолжения! |
|||||
8 | Анимация - Отображение кадров |
|
|||
На этом уроке мы создадим первую анимацию в нашем проекте. Это будет летящий снаряд. Мы рассмотрим несколько способов его отображения, а также добавим его перемещение. Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт] Научился: Убедился, что можно не только на форму добавлять компоненты, но и на любой компонент.( this.pictureMain.Controls.Add(pictureFire2);) Сложности: Все оказалось просто. Комментарии: Интересно, что будет дальше. |
|||||
9 | Анимация - Полёт по таймеру |
|
|||
На этом уроке мы добавим таймер и реализуем полёт снаряда через функцию его события. Для этого в функцию таймера нужно будет разместить внутренности цикла, а также добавить проверки на начало и окончание полёта снаряда. Потом мы оформим полёт снаряда в ту клетку моря, по которой был щелчёк мышки. Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт] Научился: Интересный алгоритм нахождения клетки. Очень понравился! Сложности: С Вами все просто! Комментарии: Решил не видео записать, а сделать gif ку : http://s017.radikal.ru/i425/1511/94/ef5b9b1c4731.gif |
|||||
10 | Архитектура - Перезагрузка проекта |
|
|||
На этом уроке мы начнём всё заново. Но уже на другом, качественно новом уровне. Проработаем архитектуру будущей программы. Создадим новый проект и создадим класс Ocean. Пока программа будет простой, самое главное в этом уроке - понять архитектуру проекта, увидеть весь лес как бы сверху. Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт] Научился: Потренировался в составлении схем. Сложности: Идем дальше Комментарии: Это точно, что лучше делать заново, чем ремонтировать и латать дыры. |
|||||
11 | Архитектура - Карта Пиратов |
|
|||
На этом уроке мы создадим карту Пиратов, определимся с условными обозначениями (enum), определим отдельные матрицы для размещения кораблей и отметки совершённых по ним ударов. Создадим метод для размещения кораблей и потестируем всё это в пошаговом режиме. Также добавим статистические переменные, настоящие пираты должны знать сколько было кораблей и сколько осталось. Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт] Научился: Проектировать игру! Сложности: Все поддалось! Комментарии: Решил все-таки вывести самым простым способом что у нас получилось! |
|||||
12 | Архитектура - Наследие картинок |
|
|||
На этом уроке мы займёмся картинками. Создадим класс Box, унаследованный от PictureBox и настроим его для использования в нашем проекте. Далее, из него мы унаследуем классы для каждой из картинок. Самое сложное в этом уроке - уловить идею наследования и понять, почему и как эти картинки выводятся на экран. Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Работа с Сontrol ами! Это еще надо будет осмыслить. Сложности: Controls Непривычно, что создали конрол в классе океан, а инициализировали начальное значение в основной форме! С таким встретился в первый раз. Комментарии: Очень понравился алгоритм размещения четырех квадратов : int topx = place % 2; int topy = place / 2; Очень изящное решение! Интересно, а можно было бы этот главный контрол в конструкторе передавать? Непривычно, что создали конрол в классе океан, а инициализировали начальное значение в основной форме! Все получилось! |
|||||
13 | Архитектура - Фабрика картинок |
|
|||
На этом уроке мы настроим вывод карты на экран. Нам понадобится фабрика картинок - статический метод Box.Create и волшебная функция превращения EnumShips x EnumFires в EnumIcons. Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт] Научился: Еще не использовал вложенные Switch Сложности: :) Комментарии: Удивительно и , надеюсь, в дальнейшем повторимо! Одна строчка и на каждом поле появляется корабль - здорово! Программа всё улучшается! |
|||||
14 | Архитектура - Мышкой по кораблям |
|
|||
На этом уроке мы научимся по щелчку мышки стрелять по кораблям. Для этого нам понадобится создать обработчик MouseClick, и подцепить его к каждой картинке. Используя делегаты мы будем свистать всех на верх - до класса Form1, из которого будем спускаться по иерархии опять вниз, для пометки выстрела и отображения его на карте. Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт] Научился: Еще раз попрактиковал делегаты. Сложности: Делегаты все-таки остались самым сложным, уж больно много для них надо инициализаций. Комментарии: Продвигаюсь вперед , и это радует. На мой взгляд получается красиво. |
|||||
15 | База Морского Флота - INFO |
|
|||
На этом уроке мы начнём проектировать Базу данных серверного флота. Пока мы создадим эскиз только для одной таблицы - info, в которой будет поле status. Для него мы составим схему состояний, и условия перехода из одного состояния в другое. Отчёт отправил: 2146. Иван Выполнено за 15 мин. [Показать отчёт] Научился: Сначала продумывать структуру, и только потом писать какой-нибудь код. Сложности: :) Комментарии: Код для создания таблицы , наверное, такой: CREATE TABLE IF NOT EXISTS `Info` ( `status` int(11) enum('play','wait','stop'), `ships` int(11) , `fire_ticks` int(11) , `cool_ticks` int(11) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; |
|||||
16 | База Морского Флота - SHIP |
|
|||
На этом уроке мы создадим таблицу для хранения координат кораблей и их состояния. В таблице ship будет 5 полей. Отдельное внимание уделено вопросу перезарядки пушек. Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт] Научился: Тренируемся анализировать. Сложности: Просто Комментарии: Вперед на всех парусах. |
|||||
17 | База Морского Флота - GAME |
|
|||
На этом уроке мы создадим таблицу событий в нашей игре, в которой будут хранится транзакции всех выстрелов и их результатов. В таблице game будет 6 полей, при каждом выстреле в неё будет добавляться две записи. Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт] Научился: все интересно Сложности: :) Комментарии: У матросов нет вопросов. Жду следующего урока. |
|||||
18 | База Морского Флота - phpMyAdmin |
|
|||
На этом уроке мы наконец-таки возьмёмся за практику. Запустим phpMyAdmin и создадим в нём все три таблицы. Отчёт отправил: 2146. Иван Выполнено за 25 мин. [Показать отчёт] Научился: Повторил, как создавать таблицы в консоле. Сложности: :) Комментарии: Чувствую, что самое интересное как раз сейчас начнется! |
|||||
19 | База Морского флота - Экспресс SQL |
|
|||
На этом уроке мы сделаем краткий экспресс-обзор языка структурированных запросов. Кратко рассмотрим все основные команды SQL.
Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт] Научился: Запросам mysql. Все очень нужное и полезное. Сложности: :) Комментарии: Очень все понравилось. |
|||||
20 | База Морского Флота - Запросы SQL |
|
|||
На этом уроке мы от души повеселимся с таблицами info и ship - посоставляем самые разные запросы к ним, которые в будущем нам пригодятся при проектировании Серверного протокола. Эти запросы будут выполняться в PHP на серверной части при обработке клиентских запросов. Отчёт отправил: 2146. Иван Выполнено за 1 час. 10 мин. [Показать отчёт] Научился: Составлять запросы mysql Сложности: Хорошо, когда есть видео. Комментарии: Очень полезный урок, особенно когда понимаешь, что все это надо будет использовать. |
|||||
21 | Протокол - Список команд |
|
|||
На этом уроке мы начнём проектировать протокол общения клиентской программы с сервеной частью. Перечислим все клиентские команды и кратко пройдёмся по каждой. Составить xml-формат сервеных ответов нужно будет самостоятельно.
Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Пока не понял чему научился Сложности: Не сложно, Но пока нахожусь в кромешной тьме, так как каких-то ключевых знаний не хватает... Комментарии: Честно признаюсь, что подсмотрел отчеты, кто уже выполнял это задание. Что такое протокол - понял. Это запрос и ответ на запрос. А причем тут xml не понял. Надеюсь в следующих уроках станет понятно что такое ?do, и зачем нужен знак $. |
|||||
22 | Протокол - Команды INFO и SHIP |
|
|||
На этом уроке мы проработаем клиентский запрос "info" и "ship". Выпишем все варианты ответа сервера, и, самое главное, напишем SQL-запросы для проверки всех возможных случаев. Урок сложный, но после такой проработки создание серверного РНР скрипта будет сплошным удовольствием :) Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Большая практика в составлении запросов и их обработка! Сложности: С mysql все понятно. Очень все хорошо объяснено! Комментарии: С php дело не имел, так что в этом пока для меня будет самая большая сложность. |
|||||
23 | Протокол - Команда FIRE |
|
|||
На этом уроке мы проработаем клиентский запрос "fire". Выпишем все варианты ответа сервера, и, самое главное, напишем SQL-запросы для проверки всех возможных случаев. Во второй части урока мы три раза пройдёмся по алгоритму, выполняя все написанные SQL запросы. Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Продолжаю погружение в vysql Сложности: Все очень подробно. Комментарии: Отличная практика составления запросов. Все очень нравится! |
|||||
24 | Протокол - Команда GAME |
|
|||
На этом уроке мы разберём последнюю команду протокола - game. Команда простая, но очень важная - именно она будет чаще всего выполняться, благодаря ей все клиенты будут знать, что происходит на море, что куда летит и с каким результатом. Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт] Научился: Продолжаем освоение протокола игры Сложности: Медленно, но верно двигаемся к цели. Комментарии: Все понятно. Жду продолжения! |
|||||
25 | Серверный флот - FTP подключение |
|
|||
На этом уроке мы подключимся к FTP серверу, создадим там свою папку и создадим файл init.php. Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт] Научился: :) Сложности: :) Комментарии: Все пока получилось. |
|||||
26 | Серверный флот - Как PHP дружит с MySQL |
|
|||
На этом уроке мы создадим на РНР подключение к базе данных MySQL. Организуем подключение, выберем базу данных, выполним запрос, и напечатеем результат. Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт] Научился: . Напиcать mysqli_connect 2. Напиcать mysqli_select_db 3. Напиcать mysqli_query 4. Напиcать mysqli_fetch_assoc 5. Напиcать print_r Все новое, все интересное! Сложности: Не сразу разобрался что и как будет у меня называется: где имя пользователя, где имя базы Комментарии: Прямо блиц обучение! По книгам, наверное , месяц бы разбирался. А тут 7 минут урок - и готово! Уже можно выводить таблицы на страницу html! |
|||||
27 | Серверный флот - Рефакторинг РНР-кода |
|
|||
На этом уроке мы займёмся рефакторингом, если у кого-нибудь повернётся язык назвать этим словом то, чем мы здесь будем заниматься... Мы переделаем файл init.php в подключаемый - в нём будет только подключение к базе и две полезные функции. В конце урока мы создадим файл battle.php, в котором сделаем include и протестируем. Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт] Научился: Писать функции и вызвать их в другом файле. Сложности: Хорошо, что до этого уже что-то знал про программирование. Комментарии: Шаг за шагом , неспеша!Евгений Витольдович, спасибо за объяснения каждого слова и каждой строчки! Это очень помогает. |
|||||
28 | Серверный флот - Функция do_info |
|
|||
На этом уроке мы создадим структуру файла battle.php и напишем заглушки для всех функций протокола. Далее, реализуем команду info в функции do_info() Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт] Научился: Все новое: запрос get, Весь код новый! Сложности: Все-таки ошибки у меня были, но найти удалось! Комментарии: Решил воспользоваться ftp плагином для Notepad++ очень удобная штука. Обновляет файл на сервере без лишних вопросов, нажатием одной кнопки upload. Перед этим пользовался коммандером, но для постоянных обновлений файла, удобнее пользоваться Notepad++, чего и всем желаю. 10 звезд! |
|||||
29 | Серверный флот - Капитан очевидность |
|
|||
На этом уроке мы исправим несколько мелких недочётов. Добавим в таблицу info поле oceans, соответственно изменим функцию do_info(). Добавим в файл init.php две новые функции select_scalar() и now_ticks (). Также нам придётся изменить тип полей для хранения тиков с int на bigint. Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт] Научился: Закрепляю изученное Сложности: Закрепляю изученное Комментарии: Тренируюсь делать коллажи из скриншотов |
|||||
30 | Серверный флот - Функция do_ship |
|
|||
На этом уроке мы напишем функцию do_ship(). Разберём ещё раз все возможные ошибки расстановки кораблей, сформируем код и текст ошибки, который вернём в xml. После успешного размещения всех кораблей мы поменяем статус игры на "play" и начнём уже играть. Отчёт отправил: 2146. Иван Выполнено за 3 час. 10 мин. [Показать отчёт] Научился: Писать код php. Искать ошибки в php. Сложности: Особенно сложна отладка. Комментарии: За один вечер не удалось все сделать. Если еще учесть, что хостинг у меня тоже тормозной, то , наверное, можно считать, что быстро справился. |
|||||
31 | Серверный флот - Функция do_fire |
|
|||
На этом уроке мы напишем функцию do_fire(). Разберём ещё раз все возможные ошибки при выполнении выстрела, сформируем код и текст ошибки, который вернём в xml. После успешного выстрела мы проверим количество оставшихся океанов. В конце функции добавим все транзакции в таблицу game. Отчёт отправил: 2146. Иван Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Осваиваю протокол игры Сложности: Найти все ошибки. Комментарии: Этот урок дался чуть-чуть легче. Хорошо, что php подсказывает ошибки, а то вообще не возможно было бы разобраться. |
|||||
32 | Серверный флот - Функция do_game |
|
|||
На этом уроке мы напишем функцию do_game(). Будем получать список всех выстрелов с результатами. Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт] Научился: Продолжаем осваивать программирование протокола для php и xml Сложности: До сих пор осмысливаю склеивание xml. Комментарии: Функция do=game позволила найти еще 5 ошибок! |
|||||
33 | ПОЛУФИНАЛЬНЫЙ УРОК. Большая игра |
|
|||
На этом уроке мы поиграем в Морской флот через адресную строку. Устроим соревнование из шести участников. Битва будет что надо! :) В начале урока мы допишем в протокольчик команду перезапуска игры и стартанём. В конце урока я покажу, как написан скрипт map.php для отображения статуса игры. В этом уроке нужно поиграть самому и ЗАПИСАТЬ видеообзор игры. Отчёт отправил: 2146. Иван Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Еще больше практики в php. Сложности: Реализовать передачу данных через форму. Ничего сложного вроде бы и не было, тем более,что метод я оставил Get. C методом post не стал пока разбираться. А то этот отчет еще через неделю бы отправлял. Комментарии: Сначала решил просто переписать весь скрипт, который выводит моря. Потом все-таки решил сделать по-своему. Может он реализован менее красиво, но в нем мне понятна каждая строчка. И если бы я просто копировал, то я бы так и не понял, как же тут все работает. |
|||||
34 | Клиентский флот - Подключение к серверу |
|
|||
На этом уроке мы создадим класс Server, который будет подключаться к нашему PHP скрипту. Будет отправлять запрос и получать ответ. Примечание Если ваша сеть использует для подключения к интернету особые настройки прокси-сервера, то необходимо добавить в программу считывание системных Proxy-настроек, см. пример. Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт] Научился: Познакомился новым для меня классом System.Net и его методами. Сложности: Очень все понятно изложено Комментарии: Интересно, что будет дальше. |
|||||
35 | Клиентский флот - Парсинг XML |
|
|||
На этом уроке мы научимся парсить XML документ. Мы напишем метод RequestInfo(), который выудит все нужные значения из XML-документы и вернёт их в основную программу. Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Парсить xml! Сложности: Нашел ошибку довольно быстро и вспомнил, что читал в отчетах, как ее победить. Комментарии: Спасибо Владимиру Волнухину (http://www.videosharp.info/6632/checking/game7=377) за подсказку, как решить проблему с ошибкой, которая заключалась в переводе строки перед <?xml version =\"1.0\"?>. После этой строки в файле battle.php надо обязательно вызвать функцию ob_clean(); Именно она помогла избежать ошибки. Может стоит для будущих курсантов добавить информацию про эту функцию в описание урока? Еще оказалось, что в php очень надо следить за лишними пробелами: такая команда работать не будет $_GET ['ocean'] ( с пробелом после GET). А в sql не будет работать COUNT (*)(после count тут тоже пробел). Только слитное написание правильное COUNT(*). Не проверял, но возможно и intval() c пробелом тоже не работает?! Возможно все это знают, но может кому поможет описание моих ошибок . Очень долго работает WebClient, и пока идет соединение и запрос xmla с серверa программа подвисает. У всех так? |
|||||
36 | Клиентский флот - Класс ServerInfo |
|
|||
На этом уроке мы займёмся рефакторингом - вынесем повторяющиеся действия в отдельные методы, уберём параметры метода RequestInfo(), запишем их во внутренние поля класса. Потом вынесем всё хозяйство для Info-запроса в отдельный класс ServerInfo. Оптимизируем ещё некоторые процедуры и уберём try-блоки в базовый класс. Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Хороший понятный пример использования virual и override Сложности: Все получается Комментарии: Получается, что все что сделали на прошлом уроке не понадобилось. Но без прошлого урока было бы на самом деле все менее понятно. А так увидели много решений одно задачи - это здорово. Спасибо за урок. |
|||||
37 | Клиентский флот - Класс ServerShip |
|
|||
На этом уроке мы создадим класс ServerShip для размещения кораблей. В нём будет вспомогательный метод ExtractShipCoords(), который матрицу кораблей сконвертирует в строчку GET данных для передачи их в РНР скрипт. Также будут некоторые сложности для получения этой матрицы в коде основной программы, нам придётся добавить новый метод в класс Ocean, изменить права доступа к матрице ships в классе Map. Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: public ServerShip(string url) : base(url) { }. Научился(еще раз) использовать базовый конструктор, да еще и с аргументом. Сложности: Все получается. Комментарии: Все получилось. |
|||||
38 | Клиентский флот - Класс ServerFire |
|
|||
На этом уроке мы создадим класс ServerFire. Мы научим нашу программу отправлять на сервер приказы о выстрелах! Правда, мы пока ещё не будем знать о результатах выстрела. Зато мы доработаем РНР функцию, чтобы она в XML возвращала координаты выстрелившего корабля, чтобы организовать правильную анимацию. Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Практика связи php и с#! Сложности: Получается. Комментарии: Все думал, почему of_x и of_y не приходят.?Оказалось забыл обновить файл battle.php на сервере :) |
|||||
39 | Клиентский флот - Класс ServerGame |
|
|||
На этом уроке мы проработаем клиентский запрос "game" для получения списка транзакций всех участников игры. Мы создадим класс ServerGame, создадим структуру Actions, доработаем методы из базового класса и реализуем заполнение массива считанными с XML данными. Отчёт отправил: 2146. Иван Выполнено за 50 мин. [Показать отчёт] Научился: Еще раз закрепил public string status { get; private set; } Сложности: Все получилось! Комментарии: Еще нашел одну блоху в файле php. Это хорошо , что у нас массив action содержит только последние не просмотренные действия. Спасибо за урок! |
|||||
40 | Одинокий капитан - Прицел |
|
|||
На этом уроке мы нарисуем новую пиктограмму для нашей игры - знак прицела. И пропишем его добавление в уже созданные классы. Это пиктограмма будет использоваться для отметки полей, по которым сделан выстрел, но пока ещё не известен результат. Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт] Научился: :) Сложности: Не самый сложный урок. Комментарии: Жду следующего урока. |
|||||
41 | Одинокий капитан - Выстрелы |
|
|||
На этом уроке мы обработаем массив actions со списком полученных от сервера транзакций. Сделаем отображение результатов, для этого придётся исправить мелкие ошибки прошлого урока в классе Box: Create(EnumIcons icon) Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт] Научился: Не бояться создавать классы. Их уже набралось в этой программе штук 17. Сложности: Уследить за логикой. Комментарии: Урок сделал довольно быстро. В целом все было понятно. Но пересмотрю ка я его еще раз! Урок не так прост как кажется! |
|||||
42 | Одинокий капитан - Победа! |
|
|||
На этом уроке мы добавим на форму таймер и флаг состояния игры. После этого мы поиграем в одинокого капитана - будем стрелять по всем океанам без ответного огня. Отчёт отправил: 2146. Иван Выполнено за 40 мин. [Показать отчёт] Научился: Все очень интересно! Сложности: Пока экспериментирую с двумя океанами. Комментарии: Первое соединение с сервером у меня идет секунд 20-30, поэтому решил сделать, чтобы курсор менялся на песочные часы. Еще одна проблема возникла, что пока программа соединяется, она успевала еще несколько запросов послать. Сделал, что пока ответ от сервера не пришел, таймер на это время выключается. |
|||||
43 | Финишная миля. Перезагрузка. |
|
|||
На этом уроке мы добавим функцию перезапуска в РНР файл.
Отчёт отправил: 2146. Иван Выполнено за 10 мин. [Показать отчёт] Научился: Все просто Сложности: Все просто Комментарии: Все просто |
|||||
44 | Финишная миля. Мой океан. |
|
|||
На этом уроке мы добавим две важные функции в наш проект. 1. Определение номера свободного океана при запуске. 2. Случайное размещение кораблей на выбранном океане. Отчёт отправил: 2146. Иван Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Двигаемся вперед. Сложности: Отловить ошибки в php. Комментарии: Получилось, но не с первого раза |
|||||
45 | Финишная миля. Найти победителя |
|
|||
На этом уроке мы наконец-таки немножко поиграем :) Потом сделаем определение победителя. Из-за чего в конец запутаемся в коде класса Form1. Примем решение на следующем уроке переписать его. Отчёт отправил: 2146. Иван Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Добавил вывод океана за который играем в название формы. Сложности: Интересно следить, как все три технологии работают вместе : sql, php и c# Комментарии: Вчера что-то мой хостинг плохо работал с базой. Пришлось ждать благоприятного коннекта к базе данных. И вот, наконец, дождался! Сегодня все работало как надо, и получилось протестировать нашу программу. Была проблема вывода множества окон из-за включенного таймер. Решил проблему остановкой таймера после вывода сообщений. Ошибки еще остались, но думаю, что в следующих уроках все равно придется все переписывать с нуля. При нажатии кнопки рестарт вызваю рестарт php, включаю таймер. И еще удаляю все boxы, чтобы нарисовать новые при рестарте. Но, к сожалению, на второй открытой программе почему-то не срабатывает. |
|||||
46 | Свежий взгляд. Схема проекта. |
|
|||
На этом уроке мы опять начнём всё сызнова. Рассмотрим шесть основных состояний нашей программы. Создадим новый проект и настроим его. Отчёт отправил: 2146. Иван Выполнено за 10 мин. [Показать отчёт] Научился: Повторяем , закрепляем Сложности: --- Комментарии: Подготовился, можно идти дальше. |
|||||
47 | Свежий взгляд. Управление из таймера. |
|
|||
На этом уроке мы заложим фундамент нашей программы - шесть методов do*() и вызов их из таймера. Отчёт отправил: 2146. Иван Выполнено за 10 мин. [Показать отчёт] Научился: Все подготовил Сложности: --- Комментарии: Жду следующего урока. |
|||||
48 | Свежий взгляд. Ожидание запуска. |
|
|||
На этом уроке мы напишем метод showMessage() для отображения сообщений игры. Далее, мы добавим в наш проект уже написанные классы Server* и Map. Также разместим кнопку Start для запуска игры. Отчёт отправил: 2146. Иван Выполнено за 20 мин. [Показать отчёт] Научился: Повторил подключение собственных классов Сложности: Радует, что сложностей не возникает. Комментарии: Жаль, что осталось уже очень мало видео-уроков в этом курсе. |
|||||
49 | Свежий взгляд. Размещение кораблей. |
|
|||
На этом уроке мы напишем метод doShip() для размещения кораблей. Для этого нам потребуется добавить уже написанные классы Box и Ocean. Также придётся немного поменять функцию создания и размещения кораблей. Отчёт отправил: 2146. Иван Выполнено за 30 мин. [Показать отчёт] Научился: :) Сложности: :) Комментарии: Внимание, и еще раз внимание при копировании кода! |
|||||
50 | Свежий взгляд. Завершение проекта. |
|
|||
На этом уроке МЫ ЗАКОНЧИМ создание программы. Напишем обработку состояний play и stop. Отчёт отправил: 2146. Иван Выполнено за 50 мин. [Показать отчёт] Научился: Быть внимательным Сложности: :) Комментарии: Сразу не запустилось. Так как не сразу заметил, что не все скопировал. ... Работает! |
|||||
51 | ФИНАЛЬНЫЙ УРОК. |
|
|||
На этом уроке мы поиграем по сети с участниками вебинара. Твоя задача - записать видеообзор созданного проекта. Какой курс ты будешь проходить следующим? Отчёт отправил: 2146. Иван Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: На курсе изучил php, mysql, и , конечно, программирование на с#. Узнал множество разных технологий и научился их совместно использовать. Сложности: Дождаться тишины. Комментарии: Спасибо за великолепный курс! Очень все понравилось! Много узнал нового и интересного! Теперь надо пробовать придумать на этой основе что-то свое. Оказывается не нажал в youtube кнопку publish Видеообзор: https://youtu.be/VBVSqRQYWpo |
|||||
Итого: 51 видеоурок |
19 час. 44 мин. |
9 чел. | |||
Финалисты: Андрей Поляков, Елена, Юрий, Олюшка, Иван, Tekashnik, Дмитрий, Ильшат, Николай Денисов . |