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

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.05.2015, 14:10   #1
BestStrikS
 
Регистрация: 21.04.2013
Сообщений: 5
По умолчанию Красивая реализация шахматной доски

Добрый день.
Думаю над реализацией шахматной доски.
Необходимо создать массив доски, чтобы при обращении к его элементу мы обращались к фигуре, которая "стоит на этой клетке".
Стоит заметить, что "фигура" может принадлежать разным классам "пешка", "слон", "ферзь", и т.д и соответственно иметь свои методы. Иначе говоря, меня интересует хранение экземпляров разных классов в одном массиве "шахматная доска".
Мне в голову приходит лишь массив указателей, которые ссылаются на экземпляры фигур разных классов. Но это, как мне кажется невозможно(

Последний раз редактировалось BestStrikS; 30.05.2015 в 15:28. Причина: Перефазировал задачу
BestStrikS вне форума Ответить с цитированием
Старый 30.05.2015, 14:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы наверное кинул на форму DataGridView и рисовал бы в нем. Ну в смысле обрабатывал бы его события отрисовки клеток.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.05.2015, 14:57   #3
BestStrikS
 
Регистрация: 21.04.2013
Сообщений: 5
По умолчанию

Меня интересует хранение экземпляров разных классов в одном массиве "шахматная доска". Отрисовка доски и получение координат массива при клике на клетку не составляет проблем.)
BestStrikS вне форума Ответить с цитированием
Старый 30.05.2015, 15:50   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну я бы для начала поинтересовался, можно ли привязать к ячейке некий объект. Должно быть какое-то свойство. Каежтся в шарпее этим занимается DataBinding, но нужно уточнить как именно он работает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2015, 18:37   #5
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Давно думаю начать составлять свою диаграмму классав на UML для шахмат. Возможно вам поможет мысль покапать в эту сторону. Можно много разных примеров-картинок найти, если погуглить: chess uml

В моём случае с отрисовкой будет проще, так как найти готовые 3D модели фигур для движка Unity - не проблема, как и двигать фигуры. Но есть проблема с диаграммой классов со спецификой движка

Последний раз редактировалось 8Observer8; 04.06.2015 в 18:39.
8Observer8 вне форума Ответить с цитированием
Старый 05.06.2015, 11:48   #6
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Можете использовать OpenTK. Кидаете на форму GLControl, обрабатываете его события OnLoad, OnResize, OnPaint с помощью функций OpenGL. Что касается логики, то тут вообще все просто. Пишите классы для всех фигур, эти классы наследуете от одного класса, например, ChessFigure, в котором объявляет поле и параметр, отвечающий за принадлежность к клетке на шахматной доске (это может быть хоть ссылка на экземпляр класса клетки, которая будет отрисовываться на доске). Как этот параметр менять - дело ваше - можете вручную, можете событиями. Объявляете массив List<ChessFigure>. Хотите конвертер напишите к нему, хотите конвертер статическим методом объявите в самом классе - вариантов куча.
Я недавно писал модуль к ПО. И мне нужно было отобразить Enum в ListBox, а при переключении выделения в списке выводить свой UserControl на часть формы. Я использовал именно такое наследование с конвертером. Мне понравилась методика.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На какой по счету клетке прервется заполнение шахматной доски по алгоритму Сете, если имеется только N зерен? m4d1 Паскаль, Turbo Pascal, PascalABC.NET 3 26.03.2014 09:47
Создание своего класса в Delphi 7 - фигуры для шахматной доски electric Компоненты Delphi 18 24.10.2013 15:06
Вывести на экран квадратные окна 8х8 в виде шахматной доски. Каждое нажатие клавиши клавиатуры вызывает смену цвета окон zzz6 Помощь студентам 6 05.07.2011 21:33
Обход шахматной доски конем wazaaaup Помощь студентам 1 04.07.2011 20:54
Пролог. Обход конем шахматной доски Gambler Помощь студентам 9 08.12.2010 22:19