Advertisement
Guest User

Untitled

a guest
May 23rd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  1. #include <iostream>
  2. #include "bitset"
  3.  
  4. int makeMove(char*,int*,int);
  5. int checkForTheWinner(int*);
  6. int showMap(int*);
  7.  
  8. int main(){
  9.  
  10. char howLong = 1;
  11. int where;
  12. char player = 'X';
  13. int map = 0;
  14. std::cout << std::bitset<32> (map) << " " << player << std::endl;
  15. showMap(&map);
  16. bool winner = 0;
  17. while(howLong != 0 && winner != 1){
  18. std::cout << "Podaj liczbe od 1 do 16 odpowiadajaca miejscu ktore chcesz wybrac liczac od lewego gornego rogu.\n";
  19. std::cin >> where;
  20. if(where > 0 && where < 17) {
  21. makeMove(&player, &map, where - 1);
  22. std::cout << std::bitset<32>(map) << "\n " << "Kolejka gracza: " << player << std::endl;
  23. winner = checkForTheWinner(&map);
  24. howLong = showMap(&map);
  25. }else
  26. std::cout << "NIE TYM RAZEM" << std::endl;
  27. }
  28. if(howLong == 0)
  29. std::cout << "Pojedynek zakonczyl sie remisem.";
  30. else{
  31.  
  32. std::cout << "Przegrywa gracz " << player;
  33. }
  34.  
  35. }
  36.  
  37. int checkForTheWinner(int* map){
  38. int i = 0;
  39. bool win1pi;
  40. bool win1po;
  41. bool win2pi;
  42. bool win2po;
  43. for(int op = 0 ; op < 4; op ++){
  44. win1pi = 1;
  45. win1po = 1;
  46. win2pi = 1;
  47. win2po = 1;
  48. for ( int po = 0 ; po < 4; po ++){
  49. if((*map >> ((po + (op<<2) )<<1)&0b11) != 2) {
  50.  
  51. win1po = 0;
  52. }else {
  53. }
  54. if((*map >> ((po + (op<<2) )<<1)&0b11) != 3) {
  55. win2po = 0;
  56. }
  57. if((*map >> (((po << 2) + op)<<1)&0b11) != 2){
  58. win1pi = 0;
  59. }
  60.  
  61. if((*map >> (((po << 2) + op)<<1)&0b11) != 3){
  62. win2pi = 0;
  63. }
  64.  
  65. /*
  66. std::cout << po + op * 4 << std::endl;
  67. std::cout << po * 4 + op << "\n\n";
  68.  
  69. std::cout << (*map >> ((po + (op<<2) )<<1)&0b11) << std::endl;
  70. std::cout << (*map >> (((po << 2) + op)<<1)&0b11) << "\n" <<std::endl;
  71. */
  72. }
  73. if( win1po == 1 || win2po == 1 || win1pi == 1 || win2pi == 1)
  74. return 1;
  75. }
  76.  
  77. win1po = 1;
  78. win1pi = 1;
  79. win2po = 1;
  80. win2pi = 1;
  81. for(int op = 0; op < 4 ; op ++){
  82. if( (*map >> ((op * 5)<<1)&0b11) != 2)
  83. win1po = 0;
  84. if( (*map >> ((op * 5)<<1)&0b11) != 3)
  85. win2po = 0;
  86. if(( (*map >> ((4 - op)*3)<1)&0b11) !=2)
  87. win1pi = 0;
  88. if(( (*map >> ((4 - op)*3)<1)&0b11) !=3)
  89. win2pi = 0;
  90. }
  91. if( win1po == 1 || win2po == 1 || win1pi == 1 || win2pi == 1)
  92. return 1;
  93. return 0;
  94.  
  95. }
  96.  
  97.  
  98. int makeMove(char* player,int* map, int where) {
  99.  
  100. char* savePlayer = new char (*player);
  101. int* save = new int (*map);
  102. int* stamp;
  103. if (*player == 'X') {
  104. stamp = new int(0b10);
  105. *savePlayer = 'O';
  106. } else {
  107.  
  108. *stamp = 0b11;
  109. *savePlayer = 'X';
  110. }
  111. *stamp <<= 2 * where;
  112.  
  113. *save |= *stamp;
  114. if (*map == *save || 0 != (*map & *stamp)) {
  115. std::cout << "Pole jest zajete." << std::endl;
  116. delete savePlayer;
  117. delete save;
  118. delete stamp;
  119. return -1;
  120. }else {
  121. *player = *savePlayer;
  122. *map = *save;
  123. delete savePlayer;
  124. delete save;
  125. delete stamp;
  126. return 0;
  127. }
  128. }
  129.  
  130. int showMap(int* map){
  131. int result = 16;
  132. int i = 0;
  133. char drawer;
  134.  
  135. std::cout << "_________________" << std::endl;
  136. for(int op = 0; op < 4; op ++) {
  137.  
  138. std::cout << "| ";
  139. for(int po = 0; po < 4; po++) {
  140. // std::cout << ((*map>>i)&0b11) << " ";
  141. drawer = ((*map >> i)&0b11) == 3 ? 'O' : ((*map >> i)&0b11) == 2 ? 'X' : '@';
  142. if(drawer != '@')
  143. result--;
  144. std::cout << drawer << " | ";
  145. i+=2;
  146. }
  147. std::cout << std::endl << "-----------------" <<std::endl;
  148. }
  149.  
  150. return result;
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement