Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для bogdan_017
21 / 21 / 19
Регистрация: 18.03.2014
Сообщений: 148

Шахматы. Каким образом можно задать соответствие полей, координат и индексов массива

15.05.2015, 20:45. Показов 1037. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые форумчане!
Передо мной стоит задача сделать интерфейс по уже практически допиленному движку игры "Шахматы". Суть проблемы: есть изображение доски, где каждая клетка примерно 40х40 пикселей (см. аттач), а так же есть массив игры примерно следующего содержания:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define BOARD_SIZE 8
//..............................
        int board[BOARD_SIZE][BOARD_SIZE]=
                    {
                {5,3,4,9,100,4,3,5},
                {1,1,1,1,1,1,1,1},
                {0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0},
                {0,0,0,0,0,0,0,0},
                {1,1,1,1,1,1,1,1},
                {5,3,4,9,100,4,3,5}
                        }; //инициализированная начальная позиция
//..............................
При обработке OnClick на ico фигуры, допустим, я получу текущие координаты курсора на форме. Каким образом можно "дать понять" движку игры, в какой клетке доски был осуществлен клик? Например, при клике в левое верхнее поле, был осуществлен клик в board[0][0] (все фигуры передвигаются по индексам массива). Мне немного сложно представить, как это осуществить.

Моя задумка:
Кликните здесь для просмотра всего текста
Среди всего, что приходит мне в голову - взять всю доску 8х8 за изображение и рекурсивно сегментировать его по принципу квадродерева до размера одной клетки.Словесно примерно так:
1. Проверяем, принадлежат ли координаты курсора игровому полю. Если нет - return, если да, разбиваем его на 4 равных квадрата/четверти.
2. Перебором проверяем четверти на то, содержат ли они в себе координаты курсора, и далее разбиваем содержащую эти координаты четверть еще на 4 четверти (уже 1/8 от игрового поля).
3. Продолжаем пункт №2 до тех пор, пока в ходе разбиения не дойдем до размеров квадрата, равных размерам клетки, то бишь 1/64 доски. (аттач №2).

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

Есть ли какие-нибудь варианты, как это можно осуществить?
Заранее спасибо
Миниатюры
Шахматы. Каким образом можно задать соответствие полей, координат и индексов массива   Шахматы. Каким образом можно задать соответствие полей, координат и индексов массива  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.05.2015, 20:45
Ответы с готовыми решениями:

Каким образом можно задать последовательность чисел
Подскажите пожалуйста!!! В расчете задействована последовательность чисел x=0, 0.01, 0.05, 0.1, 0.5, 1, 2, 5, 10, 20, 50, 100, 1 000, 10...

Добрый день. Подскажите, каким образом в system можно задать условие?
Добрый день. Подскажите, возможно ли в system задать условие? Например чтобы если a=1 записывал одно, а если a=2 записывал другое. Заранее...

Как задать усилителю коэффициент передачи не числом, а выражениям, каким образом это можно сделать
Необходимо задать усилителю коэффициент передачи не числом, а выражениям (фото), каким образом это можно сделать? Позиционность N известна,...

2
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
15.05.2015, 21:10
bogdan_017, разве не проще координаты ico фигуры, по которой "кликнули", делить на ширину клетки и таким образом получать индекс ячейки? Или у вашей доски клетки неодинаковых размеров??
1
 Аватар для bogdan_017
21 / 21 / 19
Регистрация: 18.03.2014
Сообщений: 148
15.05.2015, 22:57  [ТС]
nick42, эврика!! все элементарно и просто, а я тут алгоритмы выдумываю. вот что называется "горе от ума"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.05.2015, 22:57
Помогаю со студенческими работами здесь

Каким образом можно задать число "е"?
число "Пи" задаётся как pi. а каким образом можно задать натуральное число е??

Массив: каким образом можно изменить размер многомерного массива
Я на 100% уверен что вопрос неоднократно поднимался до меня, поэтому заранее прошу прощения за эту тему.. Я просто ни как не могу найти...

Каким образом задать стиль ссылке в php средствами css?
Доброго времени суток. Например, есть ссылка http://google.com/index.php?route=information/information&information_id=7 ...

Можно ли использовать DAO вместо Ado и если Можно то каким образом?
Люди!!!Можно ли использовать DAO вместо Ado и если Можно то каким образом!Спасибо

Каким образом при создании UserControl или класса задать helpstring?
Каким образом при создании UserControl или класса задать helpstring (коментарий, отображаемый при просмотре в Object Browser)


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
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
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru