Проблемы создания многомерного массива шахматной доски в C ++ - PullRequest
1 голос
/ 20 января 2012

Я пытаюсь создать базовую шахматную доску на C ++ и вывести ее.

Я установил массив многомерных игровых досок в качестве начального теста и вставил символы для представления каждой фигуры.Этот вывод дает странные результаты, поэтому я сократил код до следующего, который предназначен для создания доски с двумя рядами пешек и ладьи в каждом углу, обозначенных a, b, c и d.

#include <string>
using namespace std;

class Game
{
    public:

    int turn;
    char player;
    char board[7][7];

    Game()
    {
        turn = 1;
        player = 'w';

        int x,y;
        for(y=0;y<=7;y++) for(x=0;x<=7;x++) board[x][y] = '.';
        board[0][0] = 'a';
        board[7][0] = 'b';
        board[0][7] = 'c';
        board[7][7] = 'd';
        for(x=0;x<=7;x++) board[x][1] = 'p';
        for(x=0;x<=7;x++) board[x][6] = 'p';

    }

    string getBoard()
    {
        string result = "";
        int x,y;
        for(y=0;y<=7;y++)
        {
            for(x=0;x<=7;x++) result += board[x][y];
            result += "\n";
        }
        return result;
    }
};

Я использую следующее для проверки:

Game game;
cout << game.getBoard();

и получаю следующий результат:

ac.....b
pppppppp
........
........
........
........
pppppppp
c.....bd

Любые идеи, почему грачи дублируются, а не просто появляются в углах?Я не могу отследить проблему.

Ответы [ 3 ]

7 голосов
/ 20 января 2012

Поскольку шахматная доска имеет размер 8x8, измените объявление вашей доски на:

char board[8][8];

Ваш текущий массив имеет размер 7x7,

char board[7][7];

Поскольку массивы C ++ основаны на 0недопустимый индекс для обоих измерений.Так что вы не можете сделать:

for(x=0;x<=7;x++) board[x][1] = ...

или

board[0][7] = 'c';
2 голосов
/ 20 января 2012

Юридические подписки для char board[7][7]: 0..6, 0..6.

0 голосов
/ 20 января 2012

согласен, вы должны были объявить char board [8] [8] !!!!!если я хорошо помню, шахматные доски всегда имеют 64 квадрата .....

...