Пытаюсь написать игру шахматы, появилась проблема с вводом координат хода. Ввод осуществляется в формате e2 e4. Сама доска представлена массивом

Как можно связать индексы массива и формат ввода e2 e4? Например мне нужно выполнить ход с позиции e2, которой соответствуют индексы массива [7][5], на e4 ([5][5]).

#include <iostream>
#include <string>
#include <sstream>
#include <vector>
using namespace std;

string board[8][8];
string data;
std::string
PAWN_WHITE = "pw", ROOK_WHITE = "Rw", KNIGHT_WHITE = "Nw", BISHOP_WHITE = "Bw", QUEEN_WHITE = "Qw", KING_WHITE = "Kw",
PAWN_BLACK = "pb", ROOK_BLACK = "Rb", KNIGHT_BLACK = "Nb", BISHOP_BLACK = "Bb", QUEEN_BLACK = "Qb", KING_BLACK = "kb";

void BoardCount()
{
   char num = 'A';
   int hod = 0;
   for (int i = 0; i < 8; i++)
   {
       for (int j = 0; j < 8; j++)
       {
           if (i < 2) board[i][j] = PAWN_WHITE;
           if (i > 5) board[i][j] = PAWN_BLACK;
           if (i > 1 && i < 6) board[i][j] = "  ";
       }
   }
   board[0][0] = ROOK_WHITE;
   board[0][1] = KNIGHT_WHITE;
   board[0][2] = BISHOP_WHITE;
   board[0][3] = QUEEN_WHITE;
   board[0][4] = KING_WHITE;
   board[0][5] = BISHOP_WHITE;
   board[0][6] = KNIGHT_WHITE;
   board[0][7] = ROOK_WHITE;
   board[7][0] = ROOK_BLACK;
   board[7][1] = KNIGHT_BLACK;
   board[7][2] = BISHOP_BLACK;
   board[7][3] = KING_BLACK;
   board[7][4] = QUEEN_BLACK;
   board[7][5] = BISHOP_BLACK;
   board[7][6] = KNIGHT_BLACK;
   board[7][7] = ROOK_BLACK;
   cout << endl;
   for (int i = 0; i < 8; i++)
   {
       cout << "\t" << 8 - i;
       for (int j = 0; j < 8; j++)
       {
           cout << "|" << board[i][j] << "|";
       }
       cout << endl;
   }
   cout << "\t";
   for (int i = 0; i < 8; i++)
   {
       cout << "   " << num;
       ++num;
   }
   cout << endl << endl << "Введите ход в фомате: e2 e4" << endl;
   
   if (((hod % 2 == 0) & (hod > 0)) | (hod == 1)) 
   {
       cout << endl << "Чёрные ходят: "; 
   }
   else 
   {
       cout << endl << "Белые ходят: ";
   }
}

void ShessHod()
{
   string coord;
   getline(cin, coord);

}

int main()
{
   setlocale(0, "Russian");
   BoardCount();
   ShessHod();
   system("PAUSE");
   return 0;
}


Ответы (1 шт):

Автор решения: ТарасПрогер

координаты текущего местоположения - board[coord[0]-'a'][coord[1]-'0'], координаты стрыбка - board[coord[3]-'a'][coord[4]-'0']

Дополнение

for (int i = 0; i < 8; i++)
{
    cout << "\t" << i; // вот так
    for (int j = 0; j < 8; j++)
    {
        cout << "|" << board[i][j] << "|";
    }
    cout << endl;
}

 // ход
 if (board[coord[1] - '0'][coord[0] - 'a'] == PAWN_BLACK)
 {
     board[coord[4] - '0'][coord[3] - 'a'] = PAWN_BLACK;
 }

Для автора

введите сюда описание изображения

→ Ссылка