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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.88
Leven9tko
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 19
#1

программный код по ШАхматам С++ - C++

14.04.2013, 12:36. Просмотров 3703. Ответов 22
Метки нет (Все метки)

Прошу помочь с программным кодом по шахматам подсказать что изменить или что добавить.
Мне была дана задача сделать класс матрицы игры в шахматы:
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#include<iostream.h>
#include<string.h>
struct coord
{
    int x,y;
 
};
char mas[8][8]={0};
int cntl(coord f)
{
    if((f.x>=0)&&(f.x<8)&&(f.y>=0)&&(f.y<8)) return 1;
    else return 0;
}
void doska()
{
    char a[8]={'A','B','C','D','E','F','G','H'};
    cout<<"   ";
    for(int i=0;i<8;i++) cout<<a[i]<<" ";
    cout<<endl;
    cout<<"   ";
    for( i=0;i<8;i++) cout<<"- ";
    cout<<endl;
    for( i=0;i<8;i++)
    {
        cout<<"| "<<i+1;
        for(int j=0;j<8;j++) cout<<mas[i][j]<<" ";
        cout<<endl;
    }
 
}
void scan(coord &f)
{
    char t=0;
    cin>>t;
    f.y=t-0;
    cin>>f.x;
    f.x--;
    cout<<f.x<<f.y<<endl;
}
int checkpos(int x,int y)
{
    if(x>=0 && x<8 && y>=0 && y<8) return 1;
    else return 0;
}
int checkmove(int x,int y)
{
    int h_x[8]={-2,-2,-1,-1,1,1,2,2};
    int h_y[8]={-1,1,-2,2,-2,2,-1,1};
    for (int i=x-1;i<x+2;i++)
    {
        for(int j=y-1;j<y+2;j++)
        {
            if(i== x && j==y) continue;
            if(checkpos(i,j)==0) continue;
            if(mas[i][j]=='k') return 1;
    
        };
    };
    for (i=1; i<8;i++)
    {
        if(checkpos(x+i,y+i)==1)
            if (mas[x+i][y+i]=='s') return 1;
        if(checkpos(x-i,y-i)==1)
            if (mas[x-i][y-i]=='s') return 1;
        if(checkpos(x-i,y+i)==1)
            if (mas[x-i][y+i]=='s') return 1;
        if(checkpos(x+i,y-i)==1)
            if (mas[x+i][y-i]=='s') return 1;
    };
    for (i=1; i<8;i++)
    {       if(checkpos(x+h_x[i],y+h_y[i])==0) continue;
            if (mas[x+h_x[i]][y+h_y[i]]=='h') return 1;
    };
    return 0;
 
}
 
void main()
{
    int check,mat;
    coord b_king;
    coord b_knigth;
    coord b_bishop;
    coord w_king;
    check=0;
    mat=1;
    doska();
m1: cout<<"vvedite mestopolozhenie korol9:  \n";
//  cin>>Êîðîëü Г·ГҐГ°Г*ûõ;
    cin>>b_king.x;
    cin>>b_king.y;
    if(!cntl(b_king)) goto m1;
    mas[b_king.x][b_king.y]='k';
    doska();
m2: cout<<"vvedite mestopolozhenie korolevu:  \n";
//  cin>>ÊîðîëåâГ* Г·ГҐГ°Г*ûõ;
    cin>>b_knigth.x;
    cin>>b_knigth.y;
    if(!cntl(b_knigth)) goto m2;
    mas[b_knigth.x][b_knigth.y]='h';
    doska();
m3: cout<<"vvedite coord b_bishop:  ";
//  cin>>Îôèöåð Г·ГҐГ°Г*ûõ;
    cin>>b_bishop.x;
    cin>>b_bishop.y;
    if(!cntl(b_bishop)) goto m3;
    mas[b_bishop.x][b_bishop.y]='s';
    doska();
m4: cout<<"vvedite coord w_king:  ";
//  cin>>Êîðîëü áåëûõ;
    cin>>w_king.x;
    cin>>w_king.y;
    if(!cntl(w_king)) goto m4;
    mas[w_king.x][w_king.y]='K';
    doska();
if (checkmove(w_king.x,w_king.y)==1) check=1;
for(int i=w_king.x-1;i<w_king.x+2;i++)
{
    for(int j=w_king.y-1; j<w_king.y+2;j++)
    {
        if(i==w_king.x && i==w_king.y) continue;
        if(checkpos(i,j)==0) continue;
        if (checkmove(i,j)) mat=0;
    };
};
{if (check==0 && mat==0)
cout<<"obichanaya pozicia"<<endl;
if (check==0 && mat==1)
cout<<"patovaya pozicia"<<endl;
if (check==1 && mat==0)
cout<<"shahovaya pozicia"<<endl;
if (check==1 && mat==1)
cout<<"matovaya pozicia"<<endl;
}
 
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Leven9tko
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 19
15.04.2013, 02:13  [ТС]     программный код по ШАхматам С++ #16
Цитата Сообщение от Leven9tko Посмотреть сообщение
std::cout << std::endl << "total figures = " << ChessGame.figures_count() << std::endl;
Для чего эта сторока?

Добавлено через 2 минуты
Я так посмотрел вы решили сделать расположение всех шахмат на доске.
А потом уже это приведет к полноценной шахматной игре в консоле)
Но это для меня слишком много. Если продолжить дальше реализовать ваше начало то это затянется на долго и не уверен, что у меня это получится(
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
15.04.2013, 02:57     программный код по ШАхматам С++ #17
Для чего эта сторока?
эта строка перводит консоль на новую строчку и там пишет количество фигур, которые учавствуют в шахматной партии, просто для теста метода получения числа фигур

А потом уже это приведет к полноценной шахматной игре в консоле)
до этого там ещё очень далеко...

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

впишите только то, что вам нужно... не обязательно доводить до рабочего конца всё
Leven9tko
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 19
15.04.2013, 04:21  [ТС]     программный код по ШАхматам С++ #18
Цитата Сообщение от abit Посмотреть сообщение
эта строка перводит консоль на новую строчку и там пишет количество фигур, которые учавствуют в шахматной партии, просто для теста метода получения числа фигур


до этого там ещё очень далеко...



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

впишите только то, что вам нужно... не обязательно доводить до рабочего конца всё
Я на столько глуп, что я не могу даже придумать что делать дальше((( Это печальная ситуация(

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

Добавлено через 22 минуты
Я вот переделал свой немножко но там я кое что не могу понять как изменить и оно так не хочет выводить доску(
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
#include<iostream.h>
#include<string.h>
#include <vector>
 
struct coord
{
    int x,y;
 
};
 
class Figura
{
public:
    void doska(void);
    void scan(coord &f);
    int checkpos(int x,int y);
    int checkmove(int x,int y);
    void main();
    
};
 
char mas[8][8]={0};
int cntl(coord f)
{
    if((f.x>=0)&&(f.x<8)&&(f.y>=0)&&(f.y<8)) return 1;
    else return 0;
}
 
void Figura::doska(void) //Постороение доски
{
char a[8]={'A','B','C','D','E','F','G','H'};
    cout<<"   ";
    for(int i=0;i<8;i++) cout<<a[i]<<" ";
    cout<<endl;
    cout<<"   ";
    for( i=0;i<8;i++) cout<<"- ";
    cout<<endl;
    for( i=0;i<8;i++)
    {
        cout<<"| "<<i+1;
        for(int j=0;j<8;j++) cout<<mas[i][j]<<" ";
        cout<<endl;
    }
}
void Figura:: scan(coord &f)
{
    char t=0;
    cin>>t;
    f.y=t-0;
    cin>>f.x;
    f.x--;
    cout<<f.x<<f.y<<endl;
}
int Figura::checkpos(int x,int y)
{
    if(x>=0 && x<8 && y>=0 && y<8) return 1;
    else return 0;
}
int Figura::checkmove(int x,int y)
{
    int h_x[8]={-2,-2,-1,-1,1,1,2,2};
    int h_y[8]={-1,1,-2,2,-2,2,-1,1};
    for (int i=x-1;i<x+2;i++)
    {
        for(int j=y-1;j<y+2;j++)
        {
            if(i== x && j==y) continue;
            if(checkpos(i,j)==0) continue;
            if(mas[i][j]=='k') return 1;
    
        };
    };
    for (i=1; i<8;i++)
    {
        if(checkpos(x+i,y+i)==1)
            if (mas[x+i][y+i]=='s') return 1;
        if(checkpos(x-i,y-i)==1)
            if (mas[x-i][y-i]=='s') return 1;
        if(checkpos(x-i,y+i)==1)
            if (mas[x-i][y+i]=='s') return 1;
        if(checkpos(x+i,y-i)==1)
            if (mas[x+i][y-i]=='s') return 1;
    };
    for (i=1; i<8;i++)
    {       if(checkpos(x+h_x[i],y+h_y[i])==0) continue;
            if (mas[x+h_x[i]][y+h_y[i]]=='h') return 1;
    };
    return 0;
 
}
void main()
{
    int check,mat;
    coord b_king;
    coord b_knigth;
    coord b_bishop;
    coord w_king;
    check=0;
    mat=1;
void Figura::doska();
m1: cout<<"vvedite mestopolozhenie korol9:  \n";
//  cin>>Король черных;
    cin>>b_king.x;
    cin>>b_king.y;
    if(!cntl(b_king)) goto m1;
    mas[b_king.x][b_king.y]='k';
void Figura::doska();
m2: cout<<"vvedite mestopolozhenie korolevu:  \n";
//  cin>>Королева черных;
    cin>>b_knigth.x;
    cin>>b_knigth.y;
    if(!cntl(b_knigth)) goto m2;
    mas[b_knigth.x][b_knigth.y]='h';
    void Figura::doska();
m3: cout<<"vvedite coord b_bishop:  ";
//  cin>>Офицер черных;
    cin>>b_bishop.x;
    cin>>b_bishop.y;
    if(!cntl(b_bishop)) goto m3;
    mas[b_bishop.x][b_bishop.y]='s';
    void Figura::doska();
m4: cout<<"vvedite coord w_king:  ";
//  cin>>Король белых;
    cin>>w_king.x;
    cin>>w_king.y;
    if(!cntl(w_king)) goto m4;
    mas[w_king.x][w_king.y]='K';
    void Figura::doska();
    if (checkmove(w_king.x,w_king.y)==1) check=1;
for(int i=w_king.x-1;i<w_king.x+2;i++)
{
    for(int j=w_king.y-1; j<w_king.y+2;j++)
    {
        if(i==w_king.x && i==w_king.y) continue;
        if(checkpos(i,j)==0) continue;
        if (checkmove(i,j)) mat=0;
    };
};
if (check==0 && mat==0)
cout<<"obichanaya pozicia"<<endl;
if (check==0 && mat==1)
cout<<"patovaya pozicia"<<endl;
if (check==1 && mat==0)
cout<<"shahovaya pozicia"<<endl;
if (check==1 && mat==1)
cout<<"matovaya pozicia"<<endl;
 
system("pause");
 
}
Добавлено через 3 минуты
Только не судите строго(
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
15.04.2013, 04:48     программный код по ШАхматам С++ #19
Только не судите строго(
там нечего судить )

C++
1
2
#include<iostream.h>
#include<string.h>
Это C++/STL, надо просто
C++
1
2
#include <iostream>
#include <string>
у вас это компилируется? какой-то странный тогда у вас компилятор

вот тут
C++
1
 for (i=1; i<8;i++)
например тип i берётся с потолка... стандарт C++ такого не описывает, надо явно указывать
C++
1
 for (int i=1; i<8;i++)
но помня вашу ошибку
У меня в этой строке выдает ошибку
e:\пример №2\premer2.cpp(135) : error C2374: 'i' : redefinition; multiple initialization
я даже теряюсь как это у вас так всё настроено... ну да ладно, далее мотаем в main(), который кстати тоже по стандарту не может быть void, ну да ладно некоторые компиляторы разрешают...
тут
C++
1
if (checkmove(w_king.x,w_king.y)==1)
или
тут
C++
1
 if(checkpos(i,j)==0) continue;
и ещё в куче мест... вы вызываете методы класса Figura (странное название для класса, заведующего всей доской и всеми фигурами) без объекта над которым собстна и надо работать...

а если помотаться по main - а где объект собстна... а нет никакого объекта...

вы просто определили класс без объекта и вместо объекта мы встречаем совсем уникальный вызов:
C++
1
void Figura::doska();
поймите класс - на простом языке, это тип... он физически как бы не существует, а лишь описывает законы поведения чего-то

например тип int или string

надо наградить какой-то объект этим статусом, например

C++
1
string str;
тут мы создаём объект str типа string, вот str уже существует физически и играет по правилам, определённым для типа string, для него есть методы класса - например str.size() вернёт размер строки, str.push_back("s") добавит символ в конец... т.е. есть то с чем можно работать уже... у вас работать не с чем...
Leven9tko
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 19
15.04.2013, 04:56  [ТС]     программный код по ШАхматам С++ #20
Ну я же не сказал что оно компилируется
Цитата Сообщение от abit Посмотреть сообщение
1
i
C++ (Qt)
1
f (checkmove(w_king.x,w_king.y)==1)
или
тут
C++ (Qt)
1
2
Код C++1
*if(checkpos(i,j)==0) continue
;
оно не может найти checkmove и checkpost.

И как я понял что я собственно не создал доску на которую оно должно ввыводиться. И доска будет создаваться вне Класса?

Добавлено через 43 секунды
Цитата Сообщение от abit Посмотреть сообщение
C++ (Qt)
1
void Figura::doska();
Эт поспешил не убрал

Добавлено через 2 минуты
Цитата Сообщение от Leven9tko Посмотреть сообщение
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void Figura::doska(void) //Постороение доски
{
char a[8]={'A','B','C','D','E','F','G','H'};
* * cout<<" * ";
* * for(int i=0;i<8;i++) cout<<a[i]<<" ";
* * cout<<endl;
* * cout<<" * ";
* * for( i=0;i<8;i++) cout<<"- ";
* * cout<<endl;
* * for( i=0;i<8;i++)
* * {
* * * * cout<<"| "<<i+1;
* * * * for(int j=0;j<8;j++) cout<<mas[i][j]<<" ";
* * * * cout<<endl;
* * }
}
Вот это должно быть вне Класса?
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
15.04.2013, 04:59     программный код по ШАхматам С++ #21
Leven9tko,
оно не может найти checkmove и checkpost.
конечно не может

создайте объект (всё остальное я пишу исключительно для примера, скрепя сердцем, потому что я бы так никогда в здравом уме не писал)
C++
1
2
3
void main()
{
    Figura myboard;
вот мы создали объект вашего класса Figura, теперь уже можно пользоваться методами например так:
C++
1
if (myboard.checkmove(w_king.x,w_king.y)==1)
ну и конечно myboard.doska();

Добавлено через 1 минуту
Вот это должно быть вне Класса?
всё что относится логически к одной и той же шахматной партии должно быть в классе или как-то наследоваться/агрегироваться/делегироваться от других классов
Leven9tko
0 / 0 / 0
Регистрация: 09.04.2013
Сообщений: 19
15.04.2013, 05:20  [ТС]     программный код по ШАхматам С++ #22
Вот так вот Компилирует и работает)

C++ (Qt)
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#include<iostream>
#include<string>
#include <vector>
 
struct coord
{
    int x,y;
 
};
//--------------------------------------------------
class Figura
{
public:
    void doska(void);
    void scan(coord &f);
    int checkpos(int x,int y);
    int checkmove(int x,int y);
    
};
char mas[8][8]={0};
int cntl(coord f)
{
    if((f.x>=0)&&(f.x<8)&&(f.y>=0)&&(f.y<8)) return 1;
    else return 0;
}
//------------------------------------------------
void Figura::doska(void) //Постороение доски
{
char a[8]={'A','B','C','D','E','F','G','H'};
    cout<<"   ";
    for(int i=0;i<8;i++) cout<<a[i]<<" ";
    cout<<endl;
    cout<<"   ";
    for( i=0;i<8;i++) cout<<"- ";
    cout<<endl;
    for( i=0;i<8;i++)
    {
        cout<<"| "<<i+1;
        for(int j=0;j<8;j++) cout<<mas[i][j]<<" ";
        cout<<endl;
    }
}
//--------------------------------------------------
void Figura:: scan(coord &f)
{
    char t=0;
    cin>>t;
    f.y=t-0;
    cin>>f.x;
    f.x--;
    cout<<f.x<<f.y<<endl;
}
//--------------------------------------------------
int Figura::checkpos(int x,int y)
{
    if(x>=0 && x<8 && y>=0 && y<8) return 1;
    else return 0;
}
//--------------------------------------------------
int Figura::checkmove(int x,int y)
{
    int h_x[8]={-2,-2,-1,-1,1,1,2,2};
    int h_y[8]={-1,1,-2,2,-2,2,-1,1};
    for (int i=x-1;i<x+2;i++)
    {
        for(int j=y-1;j<y+2;j++)
        {
            if(i== x && j==y) continue;
            if(checkpos(i,j)==0) continue;
            if(mas[i][j]=='k') return 1;
    
        };
    };
    for (i=1; i<8;i++)
    {
        if(checkpos(x+i,y+i)==1)
            if (mas[x+i][y+i]=='s') return 1;
        if(checkpos(x-i,y-i)==1)
            if (mas[x-i][y-i]=='s') return 1;
        if(checkpos(x-i,y+i)==1)
            if (mas[x-i][y+i]=='s') return 1;
        if(checkpos(x+i,y-i)==1)
            if (mas[x+i][y-i]=='s') return 1;
    };
    for (i=1; i<8;i++)
    {       if(checkpos(x+h_x[i],y+h_y[i])==0) continue;
            if (mas[x+h_x[i]][y+h_y[i]]=='h') return 1;
    };
    return 0;
 
}
//------------------------------------------------------------
void main()
{
    Figura doska;
    int check,mat;
    coord b_king;
    coord b_knigth;
    coord b_bishop;
    coord w_king;
    check=0;
    mat=1;
doska.doska();
m1: cout<<"vvedite mestopolozhenie korol9:  \n";
//  cin>>Король черных;
    cin>>b_king.x;
    cin>>b_king.y;
    if(!cntl(b_king)) goto m1;
    mas[b_king.x-1][b_king.y-1]='k';
doska.doska();
m2: cout<<"vvedite mestopolozhenie korolevu:  \n";
//  cin>>Королева черных;
    cin>>b_knigth.x;
    cin>>b_knigth.y;
    if(!cntl(b_knigth)) goto m2;
    mas[b_knigth.x-1][b_knigth.y-1]='h';
doska.  doska();
m3: cout<<"vvedite coord b_bishop:  ";
//  cin>>Офицер черных;
    cin>>b_bishop.x;
    cin>>b_bishop.y;
    if(!cntl(b_bishop)) goto m3;
    mas[b_bishop.x-1][b_bishop.y-1]='s';
    doska.doska();
m4: cout<<"vvedite coord w_king:  ";
//  cin>>Король белых;
    cin>>w_king.x;
    cin>>w_king.y;
    if(!cntl(w_king)) goto m4;
    mas[w_king.x-1][w_king.y-1]='K';
    doska.doska();
    if (doska.checkmove(w_king.x,w_king.y)==1) check=1;
for(int i=w_king.x-1;i<w_king.x+2;i++)
{
    for(int j=w_king.y-1; j<w_king.y+2;j++)
    {
        if(i==w_king.x && i==w_king.y) continue;
        if(doska.checkpos(i,j)==0) continue;
        if (doska.checkmove(i,j)) mat=0;
    };
};
if (check==0 && mat==0)
cout<<"obichanaya pozicia"<<endl;
if (check==0 && mat==1)
cout<<"patovaya pozicia"<<endl;
if (check==1 && mat==0)
cout<<"shahovaya pozicia"<<endl;
if (check==1 && mat==1)
cout<<"matovaya pozicia"<<endl;
 
system("pause");
 
}
Спасибо за советы) Но все же программа не полность реализована(

Добавлено через 4 минуты
Самому трудно разобраться в своих ошибках(

Добавлено через 6 минут
abit, Мне уже не удобно вас о чем либо просить.
Но все же не могли бы подсказать как в этой программе реализовать ввод ввиде (A 1, B 2 и т.д.)?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2013, 05:39     программный код по ШАхматам С++
Еще ссылки по теме:
Задача по шахматам (условие) C++
Есть программный код целочисленная квадратной матрицы C++
Программный код для Dev-C++ (вычисление значений функции) C++
Программный код написан без ошибок но программу брикает C++
Нарисуйте форму и напишите программный код решения следующей задачи C++

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

Или воспользуйтесь поиском по форуму:
abit
260 / 259 / 33
Регистрация: 03.02.2013
Сообщений: 709
15.04.2013, 05:39     программный код по ШАхматам С++ #23
Но все же не могли бы подсказать как в этой программе реализовать ввод ввиде (A 1, B 2 и т.д.)?
по хорошему для этого нужно вникать в происходящее здесь, а мне что-то лень, да и спать собираюсь...
давайте я вам костыль напишу на скорую руку...

я так понимаю это пример вашего ввода?
C++
1
2
    cin>>b_king.x;
    cin>>b_king.y;
т.к. буквы сдвинуты в таблице символов ASCII и шахматная нотация в отличии от массива в Си начинается с 1 а не с нуля...
то костыль будет выглядеть так:
введите две функции перед main():

C++
1
2
3
4
5
6
7
8
9
int charX_to_int(char x)
{
   return (int)x-65;
}
 
int charY_to_int(char y)
{
   return (int)y-49;
}
и вместо
C++
1
2
    cin>>b_king.x;
    cin>>b_king.y;
пишите

C++
1
2
3
4
    string pos;
    cin>>pos;
    b_king.x = charX_to_int(pos[0]);
    b_king.y = charY_to_int(pos[2]);
опять же ничерта не проверял, но думаю суть разберёте и исправите, если что

может даже модуль <string> придётся подключать
я ваш компилятор вообще не понимаю
Yandex
Объявления
15.04.2013, 05:39     программный код по ШАхматам С++
Ответ Создать тему
Опции темы

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