Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39

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

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

Студворк — интернет-сервис помощи студентам
Необходимо организовать движение шашки по шахматной доске с помощью мышки.
Помогите пожалуйста, проблема состоит в том, что необходимо организовать движение шашки с помощью компьютерной мышки. Я начертил доску и расставил на ней шашки. Но как теперь организовать ход игрока (пользователя)? Подскажите, пожалуйста. Заранее спасибо!
Миниатюры
Необходимо организовать движение шашки по шахматной доске  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.02.2014, 19:38
Ответы с готовыми решениями:

Движение по шахматной доске коня (с левого нижнего угла в верхний правый угол)
Шахматная фигура «конь» перемещается на 1 клетку по горизонтали и на 2 клетки по вертикали или на 2 клетки по горизонтали и 1 - по...

Как нарисовать на шахматной доске фигуры шашки
Скажите как нарисовать на шахматной доске фигуры шашки, впринцыпе алгоритм разделения на цвета известен for i:=1 to 8 do for j:=1 to 8...

Движение шашки по доске
Помогите с Delphi совсем туго. На пространстве формы изображена шахматная доска. Шашка зеленого цвета движется по главной диагонали...

32
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
01.06.2014, 21:17  [ТС]
Студворк — интернет-сервис помощи студентам
NMIX_595, Можно, сделал игру без классов и сдал успешно

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

Добавлено через 40 минут
И если не сложно. Можете скинуть код программы/саму программу (если осталось хот что то )
0
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
02.06.2014, 12:40  [ТС]
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;
         .........................................
1
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
02.06.2014, 18:45
ВлаDDD,
Цитата Сообщение от ВлаDDD Посмотреть сообщение
const int x = j * 45 + 30;
* * * * const int y = i * 45 + 30;
С массивом ведь тоже работать будет ?

Добавлено через 45 секунд
и что такое
Цитата Сообщение от ВлаDDD Посмотреть сообщение
TPoint
0
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
02.06.2014, 20:19  [ТС]
NMIX_595, TPoint - это тип переменной, если не ошибаюсь, или даже класс, который включает в себя pt.x - координата x щелчка мыши и pt.y - соответственно координата y.
А первый ваш вопрос не понял, к сожалению
1
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
04.06.2014, 17:13
Насчет первого вопроса, можно ли переменные x и y связать с двумерным массивом (x например i, y - j).
0
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
04.06.2014, 19:52  [ТС]
NMIX_595, Так да, только вам будет необходимо подобрать масштабный коэфициент, чтобы ваша шахматная доска при щелчке, ну или при простом размещении шашек, являлась массивом 8х8. Всё можно, в общем)
1
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
05.06.2014, 09:32
Шахматная доска у меня взята 480Х480 и получается двумерный массив 8х8 (клетка получается 60х60), но я не представляю как их связать. И еще я как понимаю после хода нужно перерисовывать и закрашивать клетки так ?
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
05.06.2014, 09:56
Для начала в чем ты рисуешь/программируешь
Цитата Сообщение от NMIX_595 Посмотреть сообщение
но я не представляю как их связать.
очень просто дели координаты на 60
и получишь индекс клетки
1
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
06.06.2014, 15:57
ValeryS, работаю я в Code Bloks. А индекс отдельно по х и по y получается ?
0
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
06.06.2014, 19:27  [ТС]
NMIX_595, Да отдельно, например x - i, y - j
1
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
08.06.2014, 12:51
Люди спасайте. Как описывается
Цитата Сообщение от ВлаDDD Посмотреть сообщение
Код C++

* * * * 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;
* * * * *....................................... ..
в разделе функций, структур...

Добавлено через 19 минут
Спасибо, нашел

Добавлено через 16 минут
Возникла проблема с объявлением: " error: cannot convert 'TPoint*' to 'LPPOINT {aka tagPoint*}' for argument '1' to 'BOOL GetCursorPos(LPPOINT)' "

Добавлено через 1 минуту
код :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include <cstdlib>
#include <iostream>
#include "graphics.h"
using namespace std;
const int N=8;
void display()//Процедура рисования доски
{
    int x=0, y=0;
    setcolor(WHITE); // установка цвета рисования доски
    for (int i=0;i<N;i++) // Цикл рисования доски (клетки для фигур)
    {
        x=0;
        for (int j=0;j<N;j++)
        {
            rectangle(x,y,x+60,y+60);
            if ((i+j)%2 == 0) // если нечетная ячейка
            floodfill(x+30,y+30,WHITE); // то закрасить в белый
            x+=60;
        }
        y+=60;
    }
}
void zapolnchern()//Процедура выставления черных шашек
{
    int x=0, y=0;
    setcolor(15);
    for (int i=0;i<3;i++)
    {
        x=0;
        for (int j=0;j<N;j++)
        {
            if (!((i+j)%2 == 0)) // если нечетная ячейка
            circle( x+30,y+30,27);
            floodfill(x+30,y+30,BLACK);// то закрасить в черный
            x+=60;
        }
        y+=60;
    }
}
void zapolnbel()//Процедура выставления белых шашек
{
    int x=0, y=300;
    setcolor(15);
    for (int i=5;i<N;i++)
    {
        x=0;
        for (int j=0;j<N;j++)
        {
            if (!((i+j)%2 == 0)) // если нечетная ячейка
            circle( x+30,y+30,27);
            floodfill(x+30,y+30,WHITE);// то закрасить в белый
            x+=60;
        }
        y+=60;
    }
}
struct TPoint
{
    int x;
    int y;
};
int main(int argc, char *argv[])
{
int board[N][N];// Зануление массива
for (int i=0;i<N;i++)
    for (int j=0;j<N;j++)
{
    board[i][j]=0;
}
for (int i=5;i<N;i++)// Заполнение массива белыми
    for (int j=0;j<N;j++)
{
    if (!((i+j)%2 == 0)) board[i][j]=1;
}
for (int i=0;i<3;i++) //Заполнение массива черными
    for (int j=0;j<N;j++)
{
    if (!((i+j)%2 == 0)) board[i][j]=2;
}
 
initwindow(480,480);
setbkcolor(4);
display();
zapolnchern();
zapolnbel();
TPoint pt;
GetCursorPos(&pt);
int x;
if(pt.y<480 && pt.x<480 && 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;
    cout<<" Х : "<<x<<" Y : "<<y;
}
getch();
closegraph();
return 0;
}
0
-5 / 0 / 4
Регистрация: 12.01.2015
Сообщений: 54
31.05.2015, 23:04
Есть рабочая программа или хотя бы наработки?

Добавлено через 47 секунд
ВлаDDD, Есть рабочая программа или хотя бы наработки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.05.2015, 23:04

Движение коня по всей шахматной доске
Помогите написать программу пожалуйста. Такое задание: Написать программу,демонстрирующую решение задачи о нахождении маршрута...

На шахматной доске необходимо расставить 8 ферзей так, чтобы они не угрожали друг другу
На шахматной доске необходимо расставить 8 ферзей так, чтобы они не угрожали друг другу Делал проверку чтобы только 1 ферзь стоял на 1...

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

Кубик на шахматной доске...
Не могу решить задачу: На шахматной доске стоит кубик, занимая своим основанием в точности одно из полей доски. На его гранях написаны...

Задача о Шахматной доске
Шахиншах на каждую шахматную клетку кладет вдвое больше зерен, чем на предыдущую. На первую клетку - 1 зерно, на вторую - 2 зерна, на...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru