Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

14.04.2013, 12:36. Просмотров 3943. Ответов 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;
}
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 12:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос программный код по ШАхматам С++ (C++):

Исправить программный код - C++
Вот программный код. При компиляции не показывает ошибок хотя она там есть я не могу её найти. P.S. C++ начал изучать недавно. ...

Программный код С++ не компилируется в Dev-C++ - C++
ругается на 9 строку #include &lt;cstdlib&gt; #include &lt;iostream&gt; void Kramer(double C,double D);//Prototip funkcii void...

напишите пожалуйста программный код - C++
1. * результаты выполнения программы: o значение точности e, o номера и значения n...

Программный код С++ не компилируется в Dev-C++ - C++
Здравствуйте помогите пожалуйста скоро защита курсовой. Скачал с инета похожую курсовую там указано что программа написана на С++ ну вот...

Нужно по блоксхеме написать программный код на с++ - C++

Найти сумму, используя программный код - C++
Ребят, помогите мне преобразовать в код под си++ и найти сумму

22
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 минуты
Я так посмотрел вы решили сделать расположение всех шахмат на доске.
А потом уже это приведет к полноценной шахматной игре в консоле)
Но это для меня слишком много. Если продолжить дальше реализовать ваше начало то это затянется на долго и не уверен, что у меня это получится(
0
abit
271 / 270 / 35
Регистрация: 03.02.2013
Сообщений: 756
15.04.2013, 02:57 #17
Для чего эта сторока?
эта строка перводит консоль на новую строчку и там пишет количество фигур, которые учавствуют в шахматной партии, просто для теста метода получения числа фигур

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

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

впишите только то, что вам нужно... не обязательно доводить до рабочего конца всё
0
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 минуты
Только не судите строго(
0
abit
271 / 270 / 35
Регистрация: 03.02.2013
Сообщений: 756
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") добавит символ в конец... т.е. есть то с чем можно работать уже... у вас работать не с чем...
0
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;
* * }
}
Вот это должно быть вне Класса?
0
abit
271 / 270 / 35
Регистрация: 03.02.2013
Сообщений: 756
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 минуту
Вот это должно быть вне Класса?
всё что относится логически к одной и той же шахматной партии должно быть в классе или как-то наследоваться/агрегироваться/делегироваться от других классов
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 и т.д.)?
0
abit
271 / 270 / 35
Регистрация: 03.02.2013
Сообщений: 756
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> придётся подключать
я ваш компилятор вообще не понимаю
1
15.04.2013, 05:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2013, 05:39
Привет! Вот еще темы с ответами:

Задача по шахматам - C++
Вот сама задача &quot;Легенда гласит, что некий царь захотел поблагодарить изобретателя шахмат и предложил ему попросить любую награду....

Есть программный код целочисленная квадратной матрицы - C++
Есть программный код целочисленная квадратной матрицы, как сделать её прямоугольной. Помогите пожалуйста с кодом. #include &lt;iostream&gt; ...

Задача по шахматам (условие) - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cmath&gt; #include &lt;string&gt; using namespace std; int main() { ...

Программный код написан без ошибок но программу брикает - C++
вот сам код #include&lt;iostream&gt; #include&lt;fstream&gt; #include&lt;string&gt; #include&lt;iomanip&gt; using namespace std; struct film ...


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

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Опции темы

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