Kurs C++ - #12 Kółko i krzyżyk

 

#12 kółko i krzyżyk

 

////////////////////////////////////////  

#include <iostream> 

#include <string>

 

char mem[9]; // tabela

int input; // index wybranego pola

bool player; // "kogo jest tura"

std::string player1; // imie gracza 1

std::string player2; // imie gracza 2

char winner = ' '; // kod gracza który wygrał

 

void printCmd() { // wyświetlanie

std::cout << "\n\n";

std::cout << " [" << mem[0] <<  "|1]  [" << mem[1] << "|2]  [" << mem[2] << "|3]\n\n";

std::cout << " [" << mem[3] << "|4]  [" << mem[4] << "|5]  [" << mem[5] << "|6]\n\n";

std::cout << " [" << mem[6] << "|7]  [" << mem[7] << "|8]  [" << mem[8] << "|9]\n\n";

std::cout << " \n";

std::cout << "Kolej gracza: [" << (player == true ? player1 : player2) << "]\n\n[1-9]>";

}

 

void tick() { // funkcja w której dostajemy wejście z konsoli od gracza

std::cin >> input;

if (input < 1 || input >> 9) {

std::cout << "\nWybierz liczbe od 1 do 9!\n";

return;

}

input--;

if (mem[input] != ' ') {

std::cout << "\nTo pole juz zawiera znak [" << (player == true ? "X" : "O") << "]!\n";

return;

}

if (player) {

mem[input] = 'X';

} else {

mem[input] = 'O';

}

player = !player;

}

 

void printWin() { // wyświetlamy zwycięzce

std::cout << "\n\n\n";

std::cout << "Wygral: " << (winner == 'X' ? player1 : player2) << "\n\n";

system("pause");

exit(0);

}

 

void win(char p) {

winner = p;

}

 

bool isWin() { // strawdzamy czy ktoś nie wygrał

// X X X

// 0 0 0

// 0 0 0

if (mem[0] == mem[1] && mem[1] == mem[2] && mem[0] != ' ') {

win(mem[0]);

return true;

// 0 0 0

// X X X

// 0 0 0

if (mem[3] == mem[4] && mem[4] == mem[5] && mem[3] != ' ') {

win(mem[3]);

return true;

}

// 0 0 0

// 0 0 0

// X X X 

if (mem[6] == mem[7] && mem[7] == mem[8] && mem[6] != ' ') {

win(mem[6]);

return true;

}

//

// X 0 0 

// X 0 0 

// X 0 0 

if (mem[0] == mem[3] && mem[3] == mem[6] && mem[0] != ' ') {

win(mem[0]);

return true;

}

// 0 X 0 

// 0 X 0 

// 0 X 0 

if (mem[1] == mem[4] && mem[4] == mem[5] && mem[1] != ' ') {

win(mem[1]);

return true;

}

// 0 0 X

// 0 0 X

// 0 0 X

if (mem[2] == mem[5] && mem[5] == mem[8] && mem[2] != ' ') {

win(mem[2]);

return true;

}

//

// X 0 0

// 0 X 0

// 0 0 X

if (mem[0] == mem[4] && mem[4] == mem[8] && mem[0] != ' ') {

win(mem[0]);

return true;

}

// 0 0 X

// 0 X 0

// X 0 0

if (mem[2] == mem[4] && mem[4] == mem[6] && mem[2] != ' ') {

win(mem[1]);

return true;

}

//

 

return false;

}

 

int main() {

system("title Kolko i krzyzyk");

for (int i = 0; i < 9; i++) {

mem[i] = ' ';

}

std::cout << "Imie gracza 1 [X]: ";

std::cin >> player1;

std::cout << "Imie gracza 2 [O]: ";

std::cin >> player2;

printCmd();

while (true) {

isWin();

if (winner != ' ') {

printWin();

break;

}

if (mem[0] != ' ' &&  mem[1] != ' ' && mem[2] != ' ' && mem[3] != ' ' && mem[4] != ' ' && mem[5] != ' ' && mem[6] != ' ' && mem[7] != ' ' && mem[8] != ' ') {

std::cout << "\n\nREMIS!\n";

system("Pause");

break;

}

tick();

printCmd();

}

return 0;

}

////////////////////////////////////////