2016-07-26 6 views
-1

Ich arbeite an einem grundlegenden Tic Tac Toe-Spiel in C++, wie ich ein Anfänger bin, aber diese Funktion druckt eine vermasselte Sache, in der Regel entweder eine leere Bildschirm oder eine versaute Version davon mit ungeraden Zeichen. Code:C++ - Basic Tic-Tac-Toe Programm druckt leeren Bildschirm

#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

Wo ist deine 'main()' Funktion? – lorro

+0

Loops. Schleifen vereinfachen den Code. Einfacher Code hat weniger Fehler und ist einfacher zu debuggen. –

+1

Arrays sind 0 basiert. 'array [9]' ist außerhalb der Grenzen. Stellen Sie den Index ein und der Ausdruck wird korrekt angezeigt. – alvits

Antwort

0

Dies scheint zu funktionieren:

#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; 
} 

Ich bemerkte, dass Ihr ursprünglicher Code verweist [9] einen Arrays der Größe 9, die außerhalb der Grenzen ist (der letzte Eintrag in diesem Array wäre [8]), und Sie hätten beim Ausrichten Ihrer Boxen einen zu großen Abstand eingefügt, sodass die Werte etwas verzerrt waren. Hoffe das hilft.

+0

Testen Sie es jetzt. –

+0

DU bist ein Genie! Vielen Dank für die Hilfe! –