Курсы по программированию

Формула программиста

основатель — Волосатов Евгений Витольдович
Поздравляю с 1 сентября! Система начисления Байтов работает.

Сокобан / Сокобан - Игра - На двоих по сети

  • На этом уроке мы наконец-таки сделаем сетевую версию программы Sokoban для двоих.
    Мы будем использовать телефонный класс Phone с прошлого урока.
  • Дата отправки отчёта: 27 марта 2020 г.
  • Задание выполнено: за 9 час. 59 мин.
  • Чему научился: Ничему новому.
    Чтобы сделать кнопку "Начать игру" неактивной (см. первый скриншот), нужно свойству TabIndex радиокнопки "Сервер" присвоить значение 0, и так по порядку.
    Простите, но то, как решался в видеоуроке вопрос "синхронизации данных" - это откровенный костыль.
    В классе Phone все установленные соединения и открытые потоки нужно корректно завершать и закрывать. Оставлять это без внимания - плохая практика в программировании.
    Причина несогласованного перехода на следующий уровень заключается ни в каких-то там тайм-аутах (делегат Recv((byte)data) в классе Phone вызывается синхронно (по умолчанию в контексте текущего потока вызывается метод Invoke класса Recv (компилятор по вашему описанию делегата создаёт аж целый класс-делегат!)), и пока он не выполнится, дальнейшее чтение данных невозможно, но никаких ограничений на время его выполнения нет и не было!), а вот в чём: Если вы запустили отдельный поток, то вы не сможете из этого потока обращаться к элементам формы напрямую, так как вам будет выдаваться ошибка. Мол, вы обращаетесь к элементам, которые были созданы в другом потоке. Уберите try-catch - и вы убедитесь в правоте моих слов. Эта ситуация поправима, и мы сейчас рассмотрим решение (см. второй скриншот).
    В целом же курс не плохой. Мне понравился. Спасибо вам, Евгений Витольдович, за ваш труд!
  • Что было сложным: Ничто.
  • Оценка видео-уроку:
Отчёт от 18953 за Сокобан / Сокобан - Игра - На двоих по сети


Отчёт от 18953 за Сокобан / Сокобан - Игра - На двоих по сети




Оцени работу

 
Сохранить страницу:

24659. --
Виталий
Виталий
ответить
→  Дмитрий  # Сокобан / Сокобан - Игра - На двоих по сети / 2020-03-27 06:10

столько написал, аж непонятно кто у кого учится. Как я понимаю по другому курсу, многие костыли здесь втыкаются намеренно и потом по мере развития проекта устраняются с обучательной целью. Не? Не так?


25017. --
Денис
Денис
ответить
→  Дмитрий  # Сокобан / Сокобан - Игра - На двоих по сети / 2020-03-27 06:27

Молодец, что написал про то какие можно внести изменения даже скрин сделал себе, потом когда доберусь до этой игры обязательно воспользуюсь советом. Спасибо =)


24765. --
Anatoli
Anatoli
ответить
→  chokayes  # Сокобан / Сокобан - Игра - На двоих по сети / 2020-03-28 10:04

Очень  не хватает указания даты создания курса.


  • Отчёт оценивали:
    18953Дмитрий+1   23687Игорь Бойко+1   24659Виталий+1   25017Денис+1   6203Николай Миролюбов+1   24418Евгений+1   791Валерий Жданов+1   17947Dmitry Sinitsin+1   24765Anatoli+1  

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





Если вы пришли без приглашения -
введите тысяча двадцать четыре (цифрами).
Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

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

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

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


Научился: Передавать данные по сети. Общаться из программы с консолью
Трудности: Сфотографировать два компьютера)
Или это я пропустил, или это сделано преподавателем намеренно - но я не увидел объяснения, как непосредственно соединить два РАЗНЫХ компьютера по сети. Во всех сетевых уроках мы работали на IP 127.0.0.1 (т.е. на localhost'е). Поэтому для разных компьютеров я придумал решение сам(скорее всего дико неоптимальное) - при инициализации сервера программа открывает консоль и посылает туда запрос "ipconfig", считывает ответ, находит строку, в которой написан IP-адрес, вытаскивает его из этой строки и вставляет в текстовое поле. Далее при нажатии на кнопку запуска игры появляется сообщение о том, какой IP-адрес нужно сообщить клиенту. Как-то так. P.S. Не очень получилась фотография двух компьютеров.


Научился: Очень интересно исследовать, как работают классы между собой.
Трудности: Так писать программу - совсем просто. Но так все соединить вместе - очень сложно. Интересно придумано с синхронной сменой уровней!
Ух! Вот это урок! Столько всего важного и интересного. Удивительно, что класс phone передает всего то по одному байтику. А наши человечки бегают уже вместе! Спасибо за замечательный курс. Все очень понравилось!