Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.09 KB | None | 0 0
  1. #include <iostream>
  2. #include <windows.h>
  3. #include "random.h"
  4.  
  5. void cls( HANDLE hConsole )
  6. {
  7. COORD coordScreen = { 0, 0 }; // home for the cursor
  8. DWORD cCharsWritten;
  9. CONSOLE_SCREEN_BUFFER_INFO csbi;
  10. DWORD dwConSize;
  11. if( !GetConsoleScreenBufferInfo( hConsole, &csbi ))
  12. return;
  13. dwConSize = csbi.dwSize.X * csbi.dwSize.Y;
  14. if( !FillConsoleOutputCharacter( hConsole, (TCHAR) ' ',
  15. dwConSize, coordScreen, &cCharsWritten ))
  16. return;
  17. if( !GetConsoleScreenBufferInfo( hConsole, &csbi ))
  18. return;
  19. if( !FillConsoleOutputAttribute( hConsole, csbi.wAttributes,
  20. dwConSize, coordScreen, &cCharsWritten ))
  21. return;
  22. SetConsoleCursorPosition( hConsole, coordScreen );
  23. }
  24.  
  25. void narysujPlansze(char tablica[9]){
  26. std::cout << char(201) << char(205) << char(205) << char(205) << char(203) << char(205) << char(205) << char(205) << char(203) << char(205) << char(205) << char(205) << char(187) << "\n";
  27. std::cout << char(186) << " " << tablica[0] << " " << char(186) << " " << tablica[1] << " " << char(186) << " " << tablica[2] << " " << char(186) << "\n";
  28. std::cout << char(204) << char(205) << char(205) << char(205) << char(206) << char(205) << char(205) << char(205) << char(206) << char(205) << char(205) << char(205) << char(185) << "\n";
  29. std::cout << char(186) << " " << tablica[3] << " " << char(186) << " " << tablica[4] << " " << char(186) << " " << tablica[5] << " " << char(186) << "\n";
  30. std::cout << char(204) << char(205) << char(205) << char(205) << char(206) << char(205) << char(205) << char(205) << char(206) << char(205) << char(205) << char(205) << char(185) << "\n";
  31. std::cout << char(186) << " " << tablica[6] << " " << char(186) << " " << tablica[7] << " " << char(186) << " " << tablica[8] << " " << char(186) << "\n";
  32. std::cout << char(200) << char(205) << char(205) << char(205) << char(202) << char(205) << char(205) << char(205) << char(202) << char(205) << char(205) << char(205) << char(188) << "\n";
  33. }
  34.  
  35. bool checkWinCondition(const char tablica[]){
  36. for(int i = 0; i<3; i++){
  37. // X
  38. if(tablica[i*3] == 'X' && tablica[i*3+1] == 'X' && tablica[i*3+2] == 'X'){
  39. std::cout << "WYGRANA X";
  40. return true;
  41. }
  42. if(tablica[i] == 'X' && tablica[i+3] == 'X' && tablica[i+6] == 'X'){
  43. std::cout << "WYGRANA X";
  44. return true;
  45. }
  46. // O
  47. if(tablica[i*3] == 'O' && tablica[i*3+1] == 'O' && tablica[i*3+2] == 'O'){
  48. std::cout << "WYGRANA O";
  49. return true;
  50. }
  51. if(tablica[i] == 'O' && tablica[i+3] == 'O' && tablica[i+6] == 'O'){
  52. std::cout << "WYGRANA O";
  53. return true;
  54. }
  55. }
  56. // X
  57. if(tablica[0] == 'X' && tablica[4] == 'X' && tablica[8] == 'X'){
  58. std::cout << "WYGRANA X";
  59. return true;
  60. }
  61. if(tablica[2] == 'X' && tablica[4] == 'X' && tablica[6] == 'X'){
  62. std::cout << "WYGRANA X";
  63. return true;
  64. }
  65. // O
  66. if(tablica[0] == 'O' && tablica[4] == 'O' && tablica[8] == 'O'){
  67. std::cout << "WYGRANA O";
  68. return true;
  69. }
  70. if(tablica[2] == 'O' && tablica[4] == 'O' && tablica[6] == 'O'){
  71. std::cout << "WYGRANA O";
  72. return true;
  73. }
  74. return false;
  75. }
  76. void koloKrzyzyk(){
  77.  
  78. HANDLE hStdout;
  79. hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
  80.  
  81. std::string in;
  82. char tablica[9] = {};
  83. bool gameState = true;
  84. int runda = 0;
  85.  
  86. narysujPlansze(tablica);
  87.  
  88. while(gameState) {
  89. std::cout << "Podaj litere i cyfre gdzie chcesz postawic X: (np. A3)\n";
  90. // PLAYER
  91. while(true) {
  92. std::cin >> in;
  93. int index = in[1] - '1' + (in[0] - 'A') * 3;
  94. if (in.length() != 2 || (in[0] - 'A') > 2 || (in[1] - '1') > 2 || tablica[index]=='X' || tablica[index]=='O') {
  95. cls(hStdout);
  96. narysujPlansze(tablica);
  97. std::cout << "Bledne dane\n";
  98. in.clear();
  99. } else {
  100. tablica[index] = 'X';
  101. cls(hStdout);
  102. narysujPlansze(tablica);
  103. runda++;
  104. break;
  105. }
  106. }
  107. if(checkWinCondition(tablica)) {
  108. gameState = false;
  109. break;
  110. }
  111. // AI
  112. while(runda <= 4) {
  113. int rand = randInt(0, 8);
  114. if (tablica[rand] != 'X' && tablica[rand] != 'O') {
  115. tablica[rand] = 'O';
  116. cls(hStdout);
  117. narysujPlansze(tablica);
  118. std::cout << rand << " Runda: " << runda << '\n';
  119. break;
  120. }
  121.  
  122. }
  123. if(checkWinCondition(tablica)) {
  124. gameState = false;
  125. break;
  126. }
  127. //REMIS
  128. if(runda == 5){
  129. cls(hStdout);
  130. narysujPlansze(tablica);
  131. std::cout << "REMIS" << '\n';
  132. gameState = false;
  133. }
  134. }
  135. }
  136.  
  137. int main(){
  138. kolkoKrzyzyk();
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement