Div*_*ega 1 c++ arrays char multidimensional-array
我正在尝试用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;
}
};
Run Code Online (Sandbox Code Playgroud)
我正在使用以下测试:
Game game;
cout << game.getBoard();
Run Code Online (Sandbox Code Playgroud)
并得到以下结果:
ac.....b
pppppppp
........
........
........
........
pppppppp
c.....bd
Run Code Online (Sandbox Code Playgroud)
任何想法为什么车被复制而不只是出现在角落里?我似乎无法追查这个问题.
由于棋盘的尺寸为8x8,因此将您的纸板声明更改为:
char board[8][8];
Run Code Online (Sandbox Code Playgroud)
您当前的阵列大小为7x7,
char board[7][7];
Run Code Online (Sandbox Code Playgroud)
由于C++数组是基于0的,因此7不是这两个维度的有效索引.所以你做不到:
for(x=0;x<=7;x++) board[x][1] = ...
Run Code Online (Sandbox Code Playgroud)
要么
board[0][7] = 'c';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2806 次 |
| 最近记录: |