Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
ВлаDDD
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
#1

Необходимо организовать движение шашки по шахматной доске - C++

16.02.2014, 19:38. Просмотров 1896. Ответов 32
Метки нет (Все метки)

Необходимо организовать движение шашки по шахматной доске с помощью мышки.
Помогите пожалуйста, проблема состоит в том, что необходимо организовать движение шашки с помощью компьютерной мышки. Я начертил доску и расставил на ней шашки. Но как теперь организовать ход игрока (пользователя)? Подскажите, пожалуйста. Заранее спасибо!
Миниатюры
Необходимо организовать движение шашки по шахматной доске  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2014, 19:38     Необходимо организовать движение шашки по шахматной доске
Посмотрите здесь:
Движение по шахматной доске коня (с левого нижнего угла в верхний правый угол) C++
C++ Необходимо организовать ИИ (Искусственный Интеллект) для игры шашки
Ход на шахматной доске C++
C++ Числа на шахматной доске в С++
Числа на шахматной доске C++
C++ Числа на шахматной доске
C++ Задача о зернах на шахматной доске
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,733
17.02.2014, 22:55     Необходимо организовать движение шашки по шахматной доске #16
Цитата Сообщение от ВлаDDD Посмотреть сообщение
Теперь вопрос. Как организовать перемещение шашки туда, куда кликнул игрок второй раз???
удаляешь из массива где стояла и заполняешь где должна стоять
Цитата Сообщение от ВлаDDD Посмотреть сообщение
И как учесть при рисовании вариантов возможных ходов то, что шашка может есть, например по 2 или 3 вражеские шашки?
напрашивается рекурсия
ВлаDDD
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
17.02.2014, 23:00  [ТС]     Необходимо организовать движение шашки по шахматной доске #17
Цитата Сообщение от ValeryS Посмотреть сообщение
удаляешь из массива где стояла и заполняешь где должна стоять

напрашивается рекурсия
Спасибо! Я понимаю, что надо сделать именно так, насчёт её перемещения, но каким событием считать второй клик по форме? Другими словами, как узнать координаты клетки, на которую пользователь хочет сходить?

С рекурсией совсем не в ладах, даже идей никаких нет. Если можете проконсультируйте пожалуйста. Хотя бы принцип что ли.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,733
17.02.2014, 23:11     Необходимо организовать движение шашки по шахматной доске #18
Цитата Сообщение от ВлаDDD Посмотреть сообщение
Другими словами, как узнать координаты клетки, на которую пользователь хочет сходить?
обрабатываешь щелчек мыши
как ты сейчас узнаешь по какой шашке щелкнули?


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

но учти я это прямо сейчас придумал
требуется "доработать напильником"

Добавлено через 1 минуту
пока наплюй на рубку многих шашек
пускай пользователь по шагам рубит
срубил одну появились новые варианты
ВлаDDD
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
17.02.2014, 23:47  [ТС]     Необходимо организовать движение шашки по шахматной доске #19
Цитата Сообщение от ValeryS Посмотреть сообщение
обрабатываешь щелчек мыши
как ты сейчас узнаешь по какой шашке щелкнули?


ну примерно так
проверяем клетку на которой стоит шашка
у нас допустим два хода
проверяем первый ход
если это ход не под рубку продолжаем
иначе подставляем координаты как будто там стоит шашка и вызываем эту же функцию еще раз
проверяем второй ход
если это ход не под рубку выходим
иначе подставляем координаты как будто там стоит шашка и вызываем эту же функцию еще раз

но учти я это прямо сейчас придумал
требуется "доработать напильником"

Добавлено через 1 минуту
пока наплюй на рубку многих шашек
пускай пользователь по шагам рубит
срубил одну появились новые варианты
Вот обработка координаты
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::FormClick(TObject *Sender) // Выбор шашки кликом мыши
{
    TPoint pt;
    GetCursorPos(&pt);
    pt=ScreenToClient(pt);
        int i = (pt.y/60);
    int j = (pt.x/60);
...
}
Далее если в этих координатах стоит шашка игрока, то она перерисовывается с возможными ходами

Ну впринципе, да, вполне логично, только надо обдумать. Спасибо!
Хорошо, плюю)) тогда осталось только переместить шашку на место, которое хочет игрок и всё.
NMIX_595
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
01.06.2014, 20:36     Необходимо организовать движение шашки по шахматной доске #20
А как объединить массив поля с изображением ?

Добавлено через 26 секунд
И можно ли организовать ход без классов ?
ВлаDDD
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
01.06.2014, 21:17  [ТС]     Необходимо организовать движение шашки по шахматной доске #21
NMIX_595, Можно, сделал игру без классов и сдал успешно

Добавлено через 33 секунды
NMIX_595, А объединение массива с изображением происходит по щелчку мыши
NMIX_595
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
01.06.2014, 22:34     Необходимо организовать движение шашки по шахматной доске #22
ВлаDDD, А можно поподробнее про объединение массива

Добавлено через 40 минут
И если не сложно. Можете скинуть код программы/саму программу (если осталось хот что то )
ВлаDDD
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
02.06.2014, 12:40  [ТС]     Необходимо организовать движение шашки по шахматной доске #23
NMIX_595, Ну смотри, есть у тебя массив 8х8, и шахматная доска, например, размерами 460х460 px, тебе соответственно надо, чтобы когда ты щелкнул мышкой по клетке, её координаты, равнялись, например: 1х1, 3х5, 7х7 и т.д., берешь координаты мышки и делишь их на 60, запоминаешь эту координату в переменную и дальше работаешь с ней...я делал так. Код скинуть не могу, извини, это была трудная работа, вот когда буду шашки писать за пять минут, мне будет не жалко)) Сейчас, фрагмент попробую прислать с кординатами
C++
1
2
3
4
5
6
7
8
9
10
11
12
        TPoint pt;
    GetCursorPos(&pt);
    pt=ScreenToClient(pt);
    int x;
 
    if(pt.y<390&&pt.x<390&&pt.y>30&&pt.x>30)
    {
        int i = ((pt.y-30)/45);
        int j = ((pt.x-30)/45);
        const int x = j * 45 + 30;
        const int y = i * 45 + 30;
         .........................................
NMIX_595
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
02.06.2014, 18:45     Необходимо организовать движение шашки по шахматной доске #24
ВлаDDD,
Цитата Сообщение от ВлаDDD Посмотреть сообщение
const int x = j * 45 + 30;
* * * * const int y = i * 45 + 30;
С массивом ведь тоже работать будет ?

Добавлено через 45 секунд
и что такое
Цитата Сообщение от ВлаDDD Посмотреть сообщение
TPoint
ВлаDDD
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
02.06.2014, 20:19  [ТС]     Необходимо организовать движение шашки по шахматной доске #25
NMIX_595, TPoint - это тип переменной, если не ошибаюсь, или даже класс, который включает в себя pt.x - координата x щелчка мыши и pt.y - соответственно координата y.
А первый ваш вопрос не понял, к сожалению
NMIX_595
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
04.06.2014, 17:13     Необходимо организовать движение шашки по шахматной доске #26
Насчет первого вопроса, можно ли переменные x и y связать с двумерным массивом (x например i, y - j).
ВлаDDD
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
04.06.2014, 19:52  [ТС]     Необходимо организовать движение шашки по шахматной доске #27
NMIX_595, Так да, только вам будет необходимо подобрать масштабный коэфициент, чтобы ваша шахматная доска при щелчке, ну или при простом размещении шашек, являлась массивом 8х8. Всё можно, в общем)
NMIX_595
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
05.06.2014, 09:32     Необходимо организовать движение шашки по шахматной доске #28
Шахматная доска у меня взята 480Х480 и получается двумерный массив 8х8 (клетка получается 60х60), но я не представляю как их связать. И еще я как понимаю после хода нужно перерисовывать и закрашивать клетки так ?
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,733
05.06.2014, 09:56     Необходимо организовать движение шашки по шахматной доске #29
Для начала в чем ты рисуешь/программируешь
Цитата Сообщение от NMIX_595 Посмотреть сообщение
но я не представляю как их связать.
очень просто дели координаты на 60
и получишь индекс клетки
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2014, 15:57     Необходимо организовать движение шашки по шахматной доске
Еще ссылки по теме:
C++ Замена фигур на шахматной доске
C++ Геометрическая прогрессия на шахматной доске
C++ Расставить n ладей на шахматной доске n*n
Задача про зерна на шахматной доске C++
C++ Просчет ходов Слона по шахматной доске

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

Или воспользуйтесь поиском по форуму:
NMIX_595
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
06.06.2014, 15:57     Необходимо организовать движение шашки по шахматной доске #30
ValeryS, работаю я в Code Bloks. А индекс отдельно по х и по y получается ?
Yandex
Объявления
06.06.2014, 15:57     Необходимо организовать движение шашки по шахматной доске
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru