为什么我的数组在每个位置上都以0开头?

Poloboi

所以我是一个初学者。基本上,我的目标是在跳棋游戏开局的位置打印出一块棋盘,但我只能在没有任何棋子的情况下绘制空白棋盘。我不明白为什么,因为我声明只有在数组位置等于白色(-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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的position:absolute,bottom:0 CSS样式将div放在顶部的某个位置?

为什么大多数Typescript npm模块都以@开头?

所有 Laravel 输出都以字母“d”开头 - 为什么?

为什么许多Windows错误代码都以0xC000xxxx开头?他们有参考吗?

为什么我获取TypeError的函数:f()接受0个位置参数,但给出了1个

有人可以向我解释为什么预期 1 个位置参数但找到 0 个

为什么这个值会在我的二维数组中的每个数组上更新?

我打开的每个终端都以这个代码开头,我该如何阻止它?

如何检查两个数组在每个位置是否具有相同的参数,我

为什么在Kotlin中我以0开头的变量?

我读取的每个可执行文件都以MZ标头开头

为什么我不能在 __proto__ 中使用数组的位置 0?

为什么讲师编写的所有C文件在第一行都以单个#开头?

为什么所有浏览器的用户代理都以“ Mozilla /”开头?

为什么MongoDB中的所有对象ID都以数字5开头?

我的应用程序中只添加了数组中第 0 个位置的项目

为什么熊猫会在我的 CSV 中的这个位置写入转义字符?

为什么我要__init __()接受1个位置参数,但给出2个?

为什么我的缓冲区存储在堆栈中的两个位置?

为什么项目在我的网格视图中每隔一个位置“跳跃”?

为什么我的acf自定义字段不会出现在某个位置?

为什么我会收到此类的“缺少 1 个位置参数”错误?

比较每个位置的2个数组

使用 LINQ 迭代数组并使用每个位置的值

如何在我的马兵去过的每个位置上放置一个数字(以2D“木板”阵列)

为什么当我打印数组的元素时,它以 undefined 开头,然后是我插入的数字

为什么我的方法会覆盖数组中的位置

为什么我的画布与设备上的位置不同?

为什么使用 JavaScript 在我的 PWA 上重复该位置?