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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
ВлаDDD
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
16.02.2014, 19:38     Необходимо организовать движение шашки по шахматной доске #1
Необходимо организовать движение шашки по шахматной доске с помощью мышки.
Помогите пожалуйста, проблема состоит в том, что необходимо организовать движение шашки с помощью компьютерной мышки. Я начертил доску и расставил на ней шашки. Но как теперь организовать ход игрока (пользователя)? Подскажите, пожалуйста. Заранее спасибо!
Миниатюры
Необходимо организовать движение шашки по шахматной доске  
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2014, 19:38     Необходимо организовать движение шашки по шахматной доске
Посмотрите здесь:

C++ Числа на шахматной доске в С++
Числа на шахматной доске C++
C++ Числа на шахматной доске
C++ Замена фигур на шахматной доске
Ход на шахматной доске C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Вла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
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
05.06.2014, 09:56     Необходимо организовать движение шашки по шахматной доске #29
Для начала в чем ты рисуешь/программируешь
Цитата Сообщение от NMIX_595 Посмотреть сообщение
но я не представляю как их связать.
очень просто дели координаты на 60
и получишь индекс клетки
NMIX_595
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
06.06.2014, 15:57     Необходимо организовать движение шашки по шахматной доске #30
ValeryS, работаю я в Code Bloks. А индекс отдельно по х и по y получается ?
ВлаDDD
4 / 4 / 0
Регистрация: 07.06.2013
Сообщений: 39
06.06.2014, 19:27  [ТС]     Необходимо организовать движение шашки по шахматной доске #31
NMIX_595, Да отдельно, например x - i, y - j
NMIX_595
0 / 0 / 0
Регистрация: 01.06.2014
Сообщений: 8
08.06.2014, 12:51     Необходимо организовать движение шашки по шахматной доске #32
Люди спасайте. Как описывается
Цитата Сообщение от Вла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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2015, 23:04     Необходимо организовать движение шашки по шахматной доске
Еще ссылки по теме:

C++ Необходимо организовать ИИ (Искусственный Интеллект) для игры шашки
Движение по шахматной доске коня (с левого нижнего угла в верхний правый угол) C++
C++ Задача о зернах на шахматной доске

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

Или воспользуйтесь поиском по форуму:
somebodyelse
-5 / 0 / 0
Регистрация: 12.01.2015
Сообщений: 41
31.05.2015, 23:04     Необходимо организовать движение шашки по шахматной доске #33
Есть рабочая программа или хотя бы наработки?

Добавлено через 47 секунд
ВлаDDD, Есть рабочая программа или хотя бы наработки?
Yandex
Объявления
31.05.2015, 23:04     Необходимо организовать движение шашки по шахматной доске
Ответ Создать тему
Опции темы

Текущее время: 03:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru