Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
8 / 8 / 2
Регистрация: 16.03.2011
Сообщений: 257

Шахматы. Нужна информация по написанию логики игры

08.04.2014, 19:45. Показов 4240. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, хочу написать шахматы но сразу же столкнулся с проблемой:

A)Реализовал класс "Доска" которая хранит инфу:
-a)двумерный массив (List<List<"Шахматная фигура">>) 8*8 с ссылками на класс "Шахматная фигура"
B)Реализовал класс "Шахматная фигура" которая хранит инфу:
-a)состояние фигуры (битая или нет),
-b)белая или черная фигура,
-c)координаты фигуры на доске,
-d)картинка фигуры.
C)От этого класса производные: Пешка, Ферзь, Король, Слон, Ладья, Конь.

1)По-хорошему этот класс должен возвращать возможные ходы (для того чтобы подсветить их на доске, проверить корректно ли пошел игрок) и делать ход. Но чтобы просчитать возможные ходы нужно знать о расположении всех фигур на доске. Как быть? Есть мысль передавать "Доску" в качестве параметра и уже смотреть возможные ходы. Хорошо ли это?
2)Как делать ход если я допустим убиваю фигуру, сразу менять состояние фигуры в методе или что-то возвращать? Как быть с рокировкой?
3)Помогите разобраться с шахматами, подскажите примеры или литературу, чтобы легче было писать.

Спасибо за внимание!)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.04.2014, 19:45
Ответы с готовыми решениями:

Рекомендации к написанию браузерной онлайн-игры "Шахматы"
Всем доброго дня! Хочу написать Браузерные онлайн игру Шахматы. Хочу изучить нужную литературу, обращаюсь к вам для помощи в установки...

Архитектура игрового сервера для риал-тайм игры. Нужна любая информация
Доброго всем времени суток. Собственно интересует сабж: Буду рад получить любую информацию (название книги, статью, цикл статей, видео и...

Информация по написанию приложения клиент-сервер !
Народ ! Помогите, кто знает что-нибудь конкретное или знает ссылку (русскоязычную), где про это вычитать !!! Собрался писать прогу для...

1
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
08.04.2014, 20:49
Лучший ответ Сообщение было отмечено fenix117 как решение

Решение

-a)двумерный массив (List<List<"Шахматная фигура">>) 8*8 с ссылками на класс "Шахматная фигура"
можно обычный двумерный массив класса Шахматные фигуры (ChessFigures[,] board = new ChessFigure[8,8])
я в свое время так делал. И при создании объекта , в конструкторе сразу располагаем объекты - шахматные фигуры.

по поводу класса фигуры. Состояние битая или нет не нужно. если фигуру побили то просто она удаляется из массива . Координаты . я не делал .Если делать по ООП шному то это не требуется. фигуре нужно только знать как она ходит , какого она цвета , и собсно какая она(изображение).

А доска должна знать какие фигуры и где у нее стоят. кто сейчас ходит . следить за правилами , и за разными исключительными ситуациями .

Добавлено через 1 минуту
Цитата Сообщение от fenix117 Посмотреть сообщение
1)По-хорошему этот класс должен возвращать возможные ходы (для того чтобы подсветить их на доске, проверить корректно ли пошел игрок) и делать ход. Но чтобы просчитать возможные ходы нужно знать о расположении всех фигур на доске. Как быть? Есть мысль передавать "Доску" в качестве параметра и уже смотреть возможные ходы. Хорошо ли это?
я делал так - у каждой фигуры был переопределен метод который возвращал матрицу интов. которая заполнена нулями там где нет ходов. 1- там где фигура может ходить и бить. 2 там где фигура может только ходить , 3 там где фигура может только бить.

Добавлено через 44 секунды
насчет подсветки ходов . это лишнее. это своего рода подсказки. вы когда в шахматы играете у вас доска подсвечивает куда ходить? ну вот лучше сделать по реальней.

Добавлено через 1 минуту
Цитата Сообщение от fenix117 Посмотреть сообщение
проверить корректно ли пошел игрок
это делается при ходе. проверка куда ты нажимаешь . если на свою фигуру то ход не происходит. если на чужую или на пустое место то проверяется карта ходов той фигуры которая ходит . если карта ходов позволяет этот ход . и если на пути нету других фигур . то делаем ход.

Добавлено через 1 минуту
Цитата Сообщение от fenix117 Посмотреть сообщение
2)Как делать ход если я допустим убиваю фигуру, сразу менять состояние фигуры в методе или что-то возвращать?
если убиваете фигуру - то позиция на которую походили вы заменяете тем объектом которым ходили . а с того места откуда ходили присваиваете null.

Добавлено через 1 минуту
Цитата Сообщение от fenix117 Посмотреть сообщение
Как быть с рокировкой?
да . нужно добавить поле в базовый класс фигур (или только королю и ладье) который будет обозначать делал ли фигура свой первый ход. сделать это поле bool. и в карту ходов короля добавить условие если корольк еще не ходил и ладья еще не ходили и между ними никого нету то можно их поменять на соответсвующие позиции

Добавлено через 4 минуты
Цитата Сообщение от fenix117 Посмотреть сообщение
3)Помогите разобраться с шахматами, подскажите примеры или литературу, чтобы легче было писать.
тут все правила и все возможные ситуации описаны
http://ru.wikipedia.org/wiki/%... 1%82%D1%8B
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.04.2014, 20:49
Помогаю со студенческими работами здесь

Информация по написанию Java для мобильных телефонов.
Помогите пожалуйста найти программу для написания игр на мобильные телефоны и учебник по ней.

Советы по написанию игры на C++
Хочу написать &quot;змейку&quot;(в оконной реализации, не в консоли). Не знаю с чего начать и как подступить к этой задаче. Дайте пару советов и...

Нужен совет по написанию игры
В общем, на следующий год мне сдавать курсовую - некую программу на Pascal. Нам запретили делать пятнашки, тетрис, арканоид и прочие...

Нужна помощь по написанию теста
Нужна помощь по написанию теста 1.Вход по группам и по Фамилии 2.Счетчик времени прохождения теста

Нужна помощь по написанию программы теста
Нужна помощь по написанию программы теста. Подскажите кто нибудь как написать программу тест а лутше всего на учите пожалуйста нужно срочно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru