Все игры:
- Симулятор игры "Жизнь" ("Game of life") на WPF
- Классическая игра сапер (Minesweeper). Клон на С#,WPF
- Сетевые шахматы (Network Chess)
Скачать проект.
Описание
Представляю Вашему вниманию приложение "Сетевые шахматы" написанные на языке C#. Состоит оно из отдельной клиентской и серверной части. Сам проект был достаточно интересен, поскольку потребовал материального мира для упрощения написания тестов, а именно, для их написания ставил перед монитором доску и вводил видимые координаты и доступные шаги фигур. Выглядело это примерно вот так:
Сразу скажу, что я не профессиональный игрок по шахматам и всех правил могу не знать. Дайте знать если я что то пропустил.
Используемые технологии и внешние сборки.
- Клиентский интерфейс создан с использованием WPF.
- Серверная часть размещена на IIS Express.
- Сетевое взаимодействие происходит через WCF. Используются два контракта, один работающий по принципу Request-Responce, второй используя дуплексную связь (Contract + Callback). Оба сервиса являются WAS.
- В качестве привязки используется HTTP based привязка wsDualHttpBinding, дающая возможность использовать в режиме SessionMode.Required и поддерживающая работу с Callback контрактом.
- В качестве IoC контейнера используется Autofac для серверной и клиентской части.
- Что бы WCF службы могли поддерживать DI, используется пакет Autofac.Wcf из NuGet.
- Для регистрации контейнера Autofac на сервере в момент запуска сервера, использовался предложенный Autofac вариант с OWIN.
Демонстрация работы
Что бы показать как все выглядит, я поставлю "детский мат" черным, а затем переподключусь, что бы сыграть от лица другого человека.
С какими сложностями столкнулся я.
Казалось бы, зная правила хождения каждой фигур можно достаточно легко запрограммировать шахматы. Так то оно так, но самым сложным было:
Программа неплохо зайдёт в качестве курсовой работы. Ссылка на скачивание в начале статьи.
Спасибо за внимание!
- Написание логики хождения короля, поскольку он может ходить лишь так, что бы не подпасть под шах. При этом, в случае если ему шах, то избавиться от него можно либо отходом в сторону, либо ходом другой фигуры, что накладывает на ход вычисления доступных для передвижения ячеек.
- То же самое относится и к выяснению "Шах" или "Шах и Мат", приходится рекурсивно обходить все фигуры и выяснять есть ли какой либо ход, после которого мы "выживаем". Если да, то мы должны давать возможность игроку сходить только этим ходом.
- Не менее трудоемким, на начальном этапе, было рисование поля с нуля. Для этого я создал отдельный Control, который был наделён универсальностью, и не составит труда, например, создать игру "Шашки" на основе поля "Шахмат".
Программа неплохо зайдёт в качестве курсовой работы. Ссылка на скачивание в начале статьи.
Спасибо за внимание!
Здравствуйте! Очень благодарен за предоставленный исходник, но не могу запустить саму игру. Как правильно настроить солюшн для запуска непосредственно в Visual Studio? Заранее спасибо
ОтветитьУдалитьДобрый день.
УдалитьСтудия должна быть минимум 2015 желательно с Upgrade 3 так как используется синтаксис C# 6.0, в остальном должно запускаться по F5.
Работает! По крайней мере запускается) Осталось проверить игру на разных пк. Или можно запустить на одном?
УдалитьКстати, в поле "localhost" что именно требуется ввести? Извините за расспрос)
ОтветитьУдалитьБез проблем, спрашивайте. Если вам просто хочется поглядеть как все выглядит, то все без проблем работает на одном компьтере. Для этого в свойствам ставить запускать одновременно клиент и сервер, затем как клиент запустится жмёте подключиться. Затем запускаете 2-й экземпляр .exe и в нем тоже жмёте подключиться (как на мини видео выше).
УдалитьПолучилось! Наконец-то понял принцип запуска и взаимодействия. Спасибо огромное! Если возникнут еще вопросы, буду признателен за консультацию :)
УдалитьЗдравствуйте! Подскажите пожалуйста, как создать диаграмму взаимодействия классов, диаграмму работы клиент-сервера и блок-схему одного из алгоритмво? Для этого есть какие-то программы, сервисы?
ОтветитьУдалитьДиаграммы студия делать умеет, можете искать "Visual Studio Class Diagram"
УдалитьВот пример создания на 2017
https://docs.microsoft.com/en-us/visualstudio/ide/class-designer/how-to-add-class-diagrams-to-projects?view=vs-2017
Спасибо :)
УдалитьЗдравствуйте, подскажите как опубликовать серверную часть на winsows 10 pro в iis? Клиент запускается, а сервер не могу подключить. Спасибо
ОтветитьУдалитьДобрый день.
УдалитьЕсли просто на IIS запустить тогда можно в свойствах проекта сервера поменять IIS Express на IIS Local. Если же вне студии тогда сложно мне точные инструкции сказать что требуется сделать и куда зайти. В кратце - каталог с корнем проекта должен стать виртуальным каталогом сайта IIS, в привязки сайта добавить порт работы с WCF службой.
Можно объяснение, как запустить сервер и клиент одновременно? Просто пытаясь это сделать выдает ошибку, а мне нужно запустить игру на одном ПК.
ОтветитьУдалитьОчень просто, для этого надо
Удалить1. У Solution 'ChessBuild' нажать контекстное меню
2. Выбрать "Set Startup Projects"
3. Выбрать в подразделе "Startup project" выбрать "Multiple startup prjects"
4. Указать напротив NC.Client и NC.WebServer значение Action=Start
Запустить решение
В этом случае появляется немного другая проблема: при открытии окна программы вместе с этим открывается браузер с ошибкой "HTTP Error 403.14 - Forbidden", при этом программа работает и при нажатии "Connect" происходит "Awaiting new opponent" и вроде все как надо, но если закрыть браузер с ошибкой, о которой я написал выше, то также закроется и окно программы. А если не закрывать браузер с ошибкой, то идет бесконечная загрузка.
УдалитьВ свойствах сервера поставь что бы страница не отрывалась, она не нужна. ЕСли видно Awaiting new opponent то запускай 2 окно клиента и подключайся что бы игра началась
УдалитьЗдравствуйте, а я хочу изменить эти шахматы с 8 на 8, на 9 на 9, добавить 2 пешки чёрную и белую, и новую фигуру, получится это сделать в этом проекте?
ОтветитьУдалитьДобрый день, можно конечно
Удалить