所以我是一个初学者。基本上,我的目标是在跳棋游戏开局的位置打印出一块棋盘,但我只能在没有任何棋子的情况下绘制空白棋盘。我不明白为什么,因为我声明只有在数组位置等于白色(-1)时才这样做。但是,如果尝试进行测试并打印出任何随机位置,则每个位置都等于0。因此在这一点上,我感到非常迷茫,因为我编写的代码对我来说是完全有意义的。
//main.cpp
#include <iostream>
#include <array>
#include "board.hpp"
int main()
{
board Checkers;
Checkers.printBoard();
}
//board.cpp
class board
{
private:
std::array<std::array<int, 8>, 8> boardArr;
int const white = -1;
int const black = 0;
int const player1 = 1;
int const player2 = 2;
public:
board()
{
for( int i = 0; i < 8; i++ )
{
for( int j = 0; j < 8; j++ )
{
if( ((i + j) % 2) == 1 )
{
boardArr.at(i).at(j) = black;
}
else
{
boardArr.at(i).at(j) = white;
}
}
}
for( int i = 0; i < 3; i++ )
{
for( int j = 0; j < 8; j++)
{
if( boardArr.at(i).at(j) = black )
{
boardArr.at(i).at(j) = player2;
}
}
}
for( int i = 5; i < 8; i++ )
{
for( int j = 0; j < 8; j++)
{
if( boardArr.at(i).at(j) = black )
{
boardArr.at(i).at(j) = player1;
}
}
}
}
void printBoard()
{
/*
std::cout << "(TEST) on (white) 0.0::: " << boardArr.at(0).at(0) << "\n\n\n";
std::cout << "(TEST) on (black) 3.0::: " << boardArr.at(3).at(0) << "\n\n\n";
std::cout << "(TEST) on (O) 0.1::: " << boardArr.at(0).at(1) << "\n\n\n";
std::cout << "(TEST) on (X) 7.0::: " << boardArr.at(7).at(0) << "\n\n\n";
*/
std::cout << " | A | B | C | D | E | F | G | H |" << "\n"
<< "--+---+---+---+---+---+---+---+---+--" << "\n";
for( int i = 0; i < 8; i++ )
{
std::cout << -i + 8 << " |";
for( int j = 0; j < 8; j++ )
{
if( boardArr.at(i).at(j) = white )
{
std::cout << " |";
}
else if( boardArr.at(i).at(j) = black )
{
std::cout << "###|";
}
else if( boardArr.at(i).at(j) = player2 )
{
std::cout << " O |";
}
else if( boardArr.at(i).at(j) = player1 )
{
std::cout << " X |";
}
}
std::cout << "\n" << "--+---+---+---+---+---+---+---+---+--" << "\n";
}
}
};
我认为@MM已经指出了问题。问题出在检查功能中板单元的状态(即boardArr.at(i).at(j)
)printBoard()
。在这里,我要添加更新的代码,请看一看并将其与您的代码进行比较:
//main.cpp
#include <iostream>
#include <array>
//#include "board.hpp"
//board.cpp
class board
{
private:
std::array<std::array<int, 8>, 8> boardArr;
int const white = -1;
int const black = 0;
int const player1 = 1;
int const player2 = 2;
public:
board()
{
for( int i = 0; i < 8; i++ )
{
for( int j = 0; j < 8; j++ )
{
if( ((i + j) % 2) == 1 )
{
boardArr.at(i).at(j) = black;
}
else
{
boardArr.at(i).at(j) = white;
}
}
}
for( int i = 0; i < 3; i++ )
{
for( int j = 0; j < 8; j++)
{
if( boardArr.at(i).at(j) == black )
{
boardArr.at(i).at(j) = player2;
}
}
}
for( int i = 5; i < 8; i++ )
{
for( int j = 0; j < 8; j++)
{
if( boardArr.at(i).at(j) == black )
{
boardArr.at(i).at(j) = player1;
}
}
}
}
void printBoard()
{
/*
std::cout << "(TEST) on (white) 0.0::: " << boardArr.at(0).at(0) << "\n\n\n";
std::cout << "(TEST) on (black) 3.0::: " << boardArr.at(3).at(0) << "\n\n\n";
std::cout << "(TEST) on (O) 0.1::: " << boardArr.at(0).at(1) << "\n\n\n";
std::cout << "(TEST) on (X) 7.0::: " << boardArr.at(7).at(0) << "\n\n\n";
*/
std::cout << " | A | B | C | D | E | F | G | H |" << "\n"
<< "--+---+---+---+---+---+---+---+---+--" << "\n";
for( int i = 0; i < 8; i++ )
{
std::cout << -i + 8 << " |";
for( int j = 0; j < 8; j++ )
{
if( boardArr.at(i).at(j) == white )
{
std::cout << " |";
}
else if( boardArr.at(i).at(j) == black )
{
std::cout << "###|";
}
else if( boardArr.at(i).at(j) == player2 )
{
std::cout << " O |";
}
else if( boardArr.at(i).at(j) == player1 )
{
std::cout << " X |";
}
}
std::cout << "\n" << "--+---+---+---+---+---+---+---+---+--" << "\n";
}
}
};
int main()
{
board Checkers;
Checkers.printBoard();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句