Kurs C++ - #12 Kółko i krzyżyk
- Kurs C++
- Czym jest C++?
- Kompilatory - czym są i ich rodzaje
- Środowiska programowania
- #1 Pierwsze kroki i zmienne
- #2 Wejście i wyjście
- #3 Operacje matematyczne
- #4 operacje logiczne
- #5 zmienna string
- #6 pętla for
- #7 Pętla while i do while
- #8 konsola oraz windows.h
- #9 std::string
- #10 Klasy (class)
- #11 std::vector i tabele
- #12 Kółko i krzyżyk
- Wszystkie strony
#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;
}
////////////////////////////////////////
- «« poprz.
- nast.