C++ - 基本井字游戏程序打印空白屏幕

C++ - Basic Tic-Tac-Toe Program prints Blank Screen

我正在用 C++ 开发一个基本的井字游戏,因为我是初学者,但是这个函数打印出一个乱七八糟的东西,通常是一个空白屏幕或者一个乱七八糟的版本人物。 代码:

#include <iostream>
#include <string>

void printboard()
{
   std::string array[9] = {"O","O","O","O","O","O","O","O","O"};


   std::cout << "    |     |    " << std::endl;
   std::cout << "  "; std::cout << array[2]; std::cout << "  |  ";                      std::cout << array[4]; std::cout << "   |  "; std::cout << array[3];    std::cout << "  " << std::endl;
   std::cout << "    |     |    " << std::endl;
   std::cout << "----|-----|----" << std::endl;
   std::cout << "  "; std::cout << array[5]; std::cout << "  |  ";            std::cout << array[1]; std::cout << "   |  "; std::cout << array[3];  std::cout << "  " << std::endl;
   std::cout << "    |     |    " << std::endl;
   std::cout << "----|-----|----" << std::endl;
   std::cout << "  "; std::cout << array[7]; std::cout << "  |  ";              std::cout << array[9]; std::cout << "   |  "; std::cout << array[8];    std::cout << "  " << std::endl;
   std::cout << "    |     |    " << std::endl;
   std::cout << "    |     |    " << std::endl;

}

这似乎有效:

#include <iostream>
#include <string>

void printboard()
{
    std::string array[9] = { "O","O","O","O","O","O","O","O","O" };

    std::cout << "    |     |    " << std::endl;
    std::cout << "  "; std::cout << array[2]; std::cout << " |  "; std::cout << array[4]; std::cout << "  |  "; std::cout << array[3]; std::cout << "  " << std::endl;
    std::cout << "    |     |    " << std::endl;
    std::cout << "----|-----|----" << std::endl;
    std::cout << "    |     |    " << std::endl;
    std::cout << "  "; std::cout << array[5]; std::cout << " |  "; std::cout << array[1]; std::cout << "  |  "; std::cout << array[3]; std::cout << "  " << std::endl;
    std::cout << "    |     |    " << std::endl;
    std::cout << "----|-----|----" << std::endl;
    std::cout << "    |     |    " << std::endl;
    std::cout << "  "; std::cout << array[7]; std::cout << " |  "; std::cout << array[6]; std::cout << "  |  "; std::cout << array[8]; std::cout << "  " << std::endl;
    std::cout << "    |     |    " << std::endl;
}

int main()
{
    printboard();
    std::system("Pause");

    return 0;
}

我注意到您的原始代码引用了大小为 9 的数组的 [9],它超出了范围(该数组中的最后一个条目将是 [8]),并且您在对齐时包含了太多空格你的盒子,所以这些值有点偏差。希望这有帮助。