Advertisement
DavidSouza

Untitled

Apr 23rd, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.45 KB | None | 0 0
  1. //Created by David Souza and Hernan Iruegas
  2. //All rights reserved
  3. #include <iostream>
  4. #include <string>
  5.  
  6. using namespace std;
  7.  
  8. int TurnoJugador(int iArr[])
  9. {
  10. int aux;
  11. cout << "Tu turno" << endl;
  12. cin >> aux;
  13. while (iArr[aux] != 0)
  14. {
  15. cout << "Oops, esta casilla ya esta llena, favor de elegir otra" << endl;
  16. cin >> aux;
  17. }
  18. return aux;
  19. }
  20.  
  21. void DespliegaTablero(int iArr[])
  22. {
  23. for(int i = 0; i < 9; i++)
  24. {
  25. if(i == 3 || i == 6) cout << "----------" << endl;
  26. if(iArr[i] == 1) cout << "X";
  27. else if(iArr[i] == 4) cout << "O";
  28. else cout << " ";
  29. if(i!=2 && i!=5 && i!=8) cout <<" | ";
  30. if(i == 2 || i == 5) cout << endl;
  31. }
  32. cout << endl << endl;
  33. }
  34.  
  35. bool YaGanoEsteWe(int jugador, int iArr[])
  36. {
  37. bool winner = false;
  38. int x = jugador;
  39. if((iArr[0] + iArr[1] + iArr[2] == x) || (iArr[3] + iArr[4] + iArr[5] == x) || (iArr[6] + iArr[7] + iArr[8] == x) ||
  40. (iArr[0] + iArr[3] + iArr[6] == x) || (iArr[1] + iArr[4] + iArr[7] == x) || (iArr[2] + iArr[5] + iArr[8] == x) ||
  41. (iArr[0] + iArr[4] + iArr[8] == x) || (iArr[2] + iArr[4] + iArr[6] == x)) winner = true;
  42. return winner;
  43. }
  44.  
  45. bool LogicaMamalona(int iArr[])
  46. {
  47. string Agathe[8];
  48. Agathe[0] = "012"; Agathe[1] = "345"; Agathe[2] = "678"; Agathe[3] = "036"; Agathe[4] = "147"; Agathe[5] = "258";
  49. Agathe[6] = "048"; Agathe[7] = "246";
  50. int a, b, c;
  51. for(int i = 0; i < 8; i++)
  52. {
  53. a = int(Agathe[i][0])-48, b = int(Agathe[i][1])-48, c = int(Agathe[i][2])-48;
  54. if(iArr[a] + iArr[b] + iArr[c] == 2)
  55. {
  56. if(iArr[a] == 0) iArr[a] = 1;
  57. else if(iArr[b] == 0) iArr[b] = 1;
  58. else iArr[c] = 1;
  59. DespliegaTablero(iArr);
  60. cout << "La computadora ha ganado!" << endl;
  61. return true;
  62. }
  63. }
  64. for(int i = 0; i < 8; i++)
  65. {
  66. a = int(Agathe[i][0])-48, b = int(Agathe[i][1])-48, c = int(Agathe[i][2])-48;
  67. if(iArr[a] + iArr[b] + iArr[c] == 8)
  68. {
  69. if(iArr[a] == 0) iArr[a] = 1;
  70. else if(iArr[b] == 0) iArr[b] = 1;
  71. else iArr[c] = 1;
  72. DespliegaTablero(iArr);
  73. return false;
  74. }
  75. }
  76. for(int i = 0; i < 8; i++)
  77. {
  78. a = int(Agathe[i][0])-48, b = int(Agathe[i][1])-48, c = int(Agathe[i][2])-48;
  79. if(iArr[a] + iArr[b] + iArr[c] == 1)
  80. {
  81. if(iArr[a] == 0) iArr[a] = 1;
  82. else if(iArr[b] == 0) iArr[b] = 1;
  83. else iArr[c] = 1;
  84. DespliegaTablero(iArr);
  85. return false;
  86. }
  87. }
  88. for(int i = 0; i < 9; i++)
  89. if(iArr[i] == 0)
  90. {
  91. iArr[i] = 1;
  92. DespliegaTablero(iArr);
  93. return false;
  94. }
  95. }
  96.  
  97. int main() {
  98. int iArr[9], cont;
  99. //Llena el arreglo de puros 0's
  100. //Las cruces van a ser 1's y los circulos seran 2's
  101. for(int i = 0; i < 9; i++)
  102. iArr[i] = 0;
  103.  
  104. //Proceso mamalon
  105. int mom;
  106. cout << "Quien va primero? (0 = computadora, 1 = jugador)" << endl;
  107. cin >> mom;
  108. int aux;
  109. if(mom == 0) //Para la computadora primero
  110. {
  111. iArr[2] = 1; //Pone en la esquina superior derecha. TURNO 1
  112. DespliegaTablero(iArr);
  113. aux = TurnoJugador(iArr);
  114. iArr[aux] = 4;
  115. DespliegaTablero(iArr); //Turno de computadora TURNO 3
  116. if(aux == 8 || aux == 0) //En esquinas adyacentes
  117. {
  118. iArr[6] = 1; //Ya valio madre el jugador.
  119. DespliegaTablero(iArr);
  120. cont = aux;
  121. aux = TurnoJugador(iArr);
  122. iArr[aux] = 4;
  123. if (aux == 4) //En centro? TURNO 5
  124. {
  125. (cont == 8) ? iArr[0] = 1 : iArr[8] = 1;
  126. DespliegaTablero(iArr);
  127. }
  128. else
  129. if(LogicaMamalona(iArr)) return 0;
  130. }
  131.  
  132. else if(aux == 1 || aux == 5) //Al lado
  133. {
  134. (aux == 1) ? iArr[8] = 1 : iArr[0] = 1;
  135. DespliegaTablero(iArr);
  136. cont = aux;
  137. aux = TurnoJugador(iArr);
  138. iArr[aux] = 4;
  139. if((cont == 1 && aux == 5) || (cont == 5 && aux == 1))
  140. {
  141. iArr[4] = 1;
  142. DespliegaTablero(iArr);
  143. }
  144. else
  145. if(LogicaMamalona(iArr)) return 0;
  146. }
  147. else if(aux == 3 || aux == 7) //Lado caballo
  148. {
  149. iArr[8] = 1;
  150. DespliegaTablero(iArr);
  151. aux = TurnoJugador(iArr);
  152. iArr[aux] = 4;
  153. if(aux == 5)
  154. {
  155. iArr[4] = 1;
  156. DespliegaTablero(iArr);
  157. }
  158. else
  159. if(LogicaMamalona(iArr)) return 0;
  160. }
  161. else if(aux == 6) //Contra esquina
  162. {
  163. iArr[0] = 1;
  164. DespliegaTablero(iArr);
  165. aux = TurnoJugador(iArr);
  166. iArr[aux] = 4;
  167. if (aux == 1)
  168. {
  169. iArr[4] = 1;
  170. DespliegaTablero(iArr);
  171. }
  172. else
  173. if(LogicaMamalona(iArr)) return 0;
  174. }
  175. else //En el centro
  176. {
  177. iArr[6] = 1;
  178. DespliegaTablero(iArr);
  179. aux = TurnoJugador(iArr);
  180. iArr[aux] = 4;
  181. if(aux == 8 || aux == 0)
  182. {
  183. (aux==8) ? iArr[0] = 1 : iArr[8] = 1;
  184. DespliegaTablero(iArr);
  185. }
  186. else
  187. if(LogicaMamalona(iArr)) return 0;
  188. }
  189. cont = 5;
  190. while(cont < 9)
  191. {
  192. iArr[TurnoJugador(iArr)] = 4;
  193. if(YaGanoEsteWe(12, iArr))
  194. {
  195. DespliegaTablero(iArr);
  196. cout << "HAS GANADO!";
  197. return 0;
  198. }
  199. else
  200. DespliegaTablero(iArr);
  201. if(LogicaMamalona( iArr)) return 0;
  202. cont+=2;
  203. }
  204. }
  205. else //Giocatore va prima
  206. {
  207. cont = 0;
  208. DespliegaTablero(iArr);
  209. while(cont < 9)
  210. {
  211. iArr[TurnoJugador(iArr)] = 4;
  212. if(YaGanoEsteWe(12, iArr))
  213. {
  214. DespliegaTablero(iArr);
  215. cout << "HAS GANADO!";
  216. return 0;
  217. }
  218. else DespliegaTablero(iArr);
  219. if(cont == 8) cout << "EMPATE" << endl;
  220. if(cont == 0 && iArr[4] == 0)
  221. {
  222. iArr[4] = 1;
  223. DespliegaTablero(iArr);
  224. }
  225. else if(cont == 2 && iArr[4] == 1 && ((iArr[0] == 4 && iArr[8] == 4) || (iArr[2] == 4 && iArr[6] == 4)))
  226. {
  227. iArr[5] = 1;
  228. DespliegaTablero(iArr);
  229. }
  230. else if(LogicaMamalona(iArr)) return 0;
  231. cont+=2;
  232. }
  233. }
  234. /*
  235. //La madre de 2 jugadores
  236. //int aux;
  237. bool winner = false;
  238. int iArr[9];
  239. //Llena el arreglo de puros 0's
  240. //Las cruces van a ser 1's y los circulos seran 2's
  241. for(int i = 0; i < 9; i++)
  242. iArr[i] = 0;
  243. DespliegaTablero(iArr);
  244. while(!winner)
  245. {
  246. cout << "Turno de cruces" << endl;
  247. cin >> aux;
  248. while (iArr[aux] != 0)
  249. {
  250. cout << "Oops, esta casilla ya esta llena, favor de elegir otra" << endl;
  251. cin >> aux;
  252. }
  253. iArr[aux] = 1;
  254. DespliegaTablero(iArr);
  255. if(YaGanoEsteWe(3, iArr)) {
  256. cout << "Ya gano el we de las cruces" << endl;
  257. winner = true;}
  258. if(!winner)
  259. {
  260. cout << "Turno de circulos" << endl;
  261. cin >> aux;
  262. while (iArr[aux] != 0)
  263. {
  264. cout << "Oops, esta casilla ya esta llena, favor de elegir otra" << endl;
  265. cin >> aux;
  266. }
  267. iArr[aux] = 4;
  268. DespliegaTablero(iArr);
  269. if(YaGanoEsteWe(12, iArr)){
  270. cout << "Ya gano el we de los circulos" << endl;
  271. winner = true;}
  272. }
  273. }
  274.  
  275. return 0;*/
  276. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement