2016-07-26 45 views
-1

我正在C++中使用基本的井字遊戲遊戲,因爲我是初學者,但是這個函數打印出一個亂七八糟的東西,通常是空白屏幕或與奇數字符混淆的版本。 代碼: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; 

}

+1

你的main()函數在哪裏? – lorro

+0

循環。循環將有助於簡化代碼。簡單的代碼具有更少的缺陷並且更易於調試。 –

+1

數組基於0。 'array [9]'超出範圍。調整索引並打印將正確顯示。 – alvits

回答

0

這似乎工作:

#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]),並且在對齊方框時包含了太多的空格,所以這些值有些偏斜。希望這可以幫助。

+0

現在進行測試。 –

+0

你是天才!非常感謝你的幫助! –