Advertisement
Guest User

Untitled

a guest
Nov 26th, 2015
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.16 KB | None | 0 0
  1. // Carlos Garza
  2. // A01193441
  3. //
  4. // El propósito de este programa es crear un juego "Connect 4" el cual sea posible jugar entre 2 jugadores.
  5. // Finalizado el Viernes 20 de Noviembre del 2015.
  6. //
  7.  
  8. #include <iostream>
  9. using namespace std;
  10.  
  11. bool game(int iRows, int iColumns, char cMatBoard[8][7], int iPick1, int iPick2, char cP1, char cP2) //esta funcion checa si el juego ya se acaba a traves de un jugador ganando
  12. {
  13. for (int iCount=0; iCount<iRows; iCount++)
  14. {
  15. for (int iCountB=0; iCountB<iColumns; iCountB++)
  16. {
  17. if (cMatBoard[iCount][iCountB]==cP1 &&
  18. cMatBoard[iCount][iCountB+1]==cP1 &&
  19. cMatBoard[iCount][iCountB+2]==cP1 &&
  20. cMatBoard[iCount][iCountB+3]==cP1 &&
  21. iCountB<5)
  22. {
  23. cout << "Jugador 1 Gana! -"; //jugador 1 gana por linea horizontal
  24. return true;
  25. }
  26. if (cMatBoard[iCount][iCountB]==cP2 &&
  27. cMatBoard[iCount][iCountB+1]==cP2 &&
  28. cMatBoard[iCount][iCountB+2]==cP2 &&
  29. cMatBoard[iCount][iCountB+3]==cP2 &&
  30. iCountB<5)
  31. {
  32. cout << "Jugador 2 Gana! -"; //jugador 2 gana por linea horizontal
  33. return true;
  34. }
  35. if (cMatBoard[iCount][iCountB]==cP1 &&
  36. cMatBoard[iCount+1][iCountB]==cP1 &&
  37. cMatBoard[iCount+2][iCountB]==cP1 &&
  38. cMatBoard[iCount+3][iCountB]==cP1)
  39. {
  40. cout << "Jugador 1 Gana! |"; //jugador 1 gana por linea vertical
  41. return true;
  42. }
  43. if (cMatBoard[iCount][iCountB]==cP2 &&
  44. cMatBoard[iCount+1][iCountB]==cP2 &&
  45. cMatBoard[iCount+2][iCountB]==cP2 &&
  46. cMatBoard[iCount+3][iCountB]==cP2)
  47. {
  48. cout << "Jugador 2 Gana! |"; //jugador 2 gana por linea vertical
  49. return true;
  50. }
  51. if (cMatBoard[iCount][iCountB]==cP1 &&
  52. cMatBoard[iCount+1][iCountB+1]==cP1 &&
  53. cMatBoard[iCount+2][iCountB+2]==cP1 &&
  54. cMatBoard[iCount+3][iCountB+3]==cP1 &&
  55. iCountB<4)
  56. {
  57. cout << "Jugador 1 Gana! \\"; //jugador 1 gana por linea diagonal "\"
  58. return true;
  59. }
  60. if (cMatBoard[iCount][iCountB]==cP2 &&
  61. cMatBoard[iCount+1][iCountB+1]==cP2 &&
  62. cMatBoard[iCount+2][iCountB+2]==cP2 &&
  63. cMatBoard[iCount+3][iCountB+3]==cP2 &&
  64. iCountB<4)
  65. {
  66. cout << "Jugador 2 Gana! \\"; //jugador 2 gana por linea diagonal "\"
  67. return true;
  68. }
  69. if (cMatBoard[iCount][iCountB]==cP1 &&
  70. cMatBoard[iCount-1][iCountB+1]==cP1 &&
  71. cMatBoard[iCount-2][iCountB+2]==cP1 &&
  72. cMatBoard[iCount-3][iCountB+3]==cP1 &&
  73. iCountB<4 && iCount>3)
  74. {
  75. cout << "Jugador 1 Gana! /"; //jugador 1 gana por linea diagonal "/"
  76. return true;
  77. }
  78. if (cMatBoard[iCount][iCountB]==cP2 &&
  79. cMatBoard[iCount-1][iCountB+1]==cP2 &&
  80. cMatBoard[iCount-2][iCountB+2]==cP2 &&
  81. cMatBoard[iCount-3][iCountB+3]==cP2 &&
  82. iCountB<4 && iCount>3)
  83. {
  84. cout << "Jugador 2 Gana! /"; //jugador 2 gana por linea diagonal "/"
  85. return true;
  86. }
  87. }
  88. }
  89.  
  90. return false;
  91. }
  92.  
  93. void imprimirtabla(int iRows, int iColumns, char cMatBoard[8][7]) //esta funcion simplemente imprime la tabla
  94. {
  95. for (int iCount=0; iCount<iRows; iCount++)
  96. {
  97. for (int iCountB=0; iCountB<iColumns; iCountB++)
  98. {
  99. cout << cMatBoard[iCount][iCountB] << "\t";
  100. }
  101. cout << endl;
  102. }
  103. }
  104.  
  105. void turnojugador1(int iRows, int iColumns, char cMatBoard[8][7], int iPick1, int iPick2, char cP1, char cP2) // esta funcion significa el turno del primer jugador
  106. {
  107. iRows=8;
  108. cout << "Turno del Jugador 1" << endl << "En que columna gusta poner su ficha?" << endl;
  109. cin >> iPick1; //el jugador escoge en que columna
  110. while (iPick1<1 || iPick1>7) //si la columna no existe desplega "No es valido el numero, porfavor escoge otro", y forza al jugador a introducir una columna valida
  111. {
  112. cout << "No es valido el numero, porfavor escoge otro" << endl;
  113. cin >>iPick1;
  114. }
  115. iPick1-=1;
  116. if(cMatBoard[iRows][iPick1]!='-')
  117. {
  118. while (cMatBoard[iRows][iPick1]!='-')
  119. {
  120. iRows--;
  121. if (cMatBoard[1][iPick1]!='-')
  122. {
  123. while (cMatBoard[1][iPick1]!='-')
  124. {
  125. cout << "Esta columna ya esta llena, por favor escoge otra." << endl; //si la columna ya esta llena forza al jugador a poner su ficha en otra columna
  126. cin >>iPick1;
  127. iPick1-=1;
  128. }
  129. }
  130. }
  131.  
  132.  
  133. cMatBoard[iRows][iPick1]=cP1;
  134. }
  135.  
  136. }
  137.  
  138. void turnojugador2(int iRows, int iColumns, char cMatBoard[8][7], int iPick1, int iPick2, char cP1, char cP2) //esta funcion simplemente es el turno del jugador 2, contiene lo mismo
  139. { //que la del jugador 1, solamente modificando la ficha
  140. iRows=8;
  141. cout << "Turno del Jugador 2" << endl << "En que columna gusta poner su ficha?" << endl;
  142. cin >> iPick2;
  143. while (iPick2<1 || iPick2>7)
  144. {
  145. cout << "No es valido el numero, porfavor escoge otro" << endl; //turno de jugador 2
  146. cin >>iPick2;
  147. }
  148. iPick2-=1;
  149. if(cMatBoard[iRows][iPick2]!='-')
  150. {
  151. while (cMatBoard[iRows][iPick2]!='-')
  152. {
  153. iRows--;
  154. if (cMatBoard[1][iPick2]!='-')
  155. {
  156. while (cMatBoard[1][iPick2]!='-')
  157. {
  158. cout << "Esta columna ya esta llena, por favor escoge otra." << endl;
  159. cin >>iPick2;
  160. iPick2-=1;
  161. }
  162. }
  163. }
  164. cMatBoard[iRows][iPick2]=cP2;
  165. }
  166. }
  167.  
  168. int main()
  169. {
  170. char cMatBoard[8][7], cP1='X', cP2='O', cChoice;
  171. bool bGame;
  172. int iRows=8, iColumns=7, iPick1, iPick2, iFichas=0;
  173. for (int iCount=0; iCount<iRows; iCount++) // declarar los numeros y las lineas de la mesa
  174. {
  175. for (int iCountB=0; iCountB<iColumns; iCountB++)
  176. {
  177. if (cMatBoard[iCount][iCountB]==cMatBoard[0][0])
  178. {
  179. cMatBoard[iCount][iCountB]='1';
  180. }
  181. else if (cMatBoard[iCount][iCountB]==cMatBoard[0][1])
  182. {
  183. cMatBoard[iCount][iCountB]='2';
  184. }
  185. else if (cMatBoard[iCount][iCountB]==cMatBoard[0][2])
  186. {
  187. cMatBoard[iCount][iCountB]='3';
  188. }
  189. else if (cMatBoard[iCount][iCountB]==cMatBoard[0][3])
  190. {
  191. cMatBoard[iCount][iCountB]='4';
  192. }
  193. else if (cMatBoard[iCount][iCountB]==cMatBoard[0][4])
  194. {
  195. cMatBoard[iCount][iCountB]='5';
  196. }
  197. else if (cMatBoard[iCount][iCountB]==cMatBoard[0][5])
  198. {
  199. cMatBoard[iCount][iCountB]='6';
  200. }
  201. else if (cMatBoard[iCount][iCountB]==cMatBoard[0][6])
  202. {
  203. cMatBoard[iCount][iCountB]='7';
  204. }
  205. else
  206. {
  207. cMatBoard[iCount][iCountB]='-';
  208. }
  209. }
  210. }
  211.  
  212. imprimirtabla(iRows, iColumns, cMatBoard); //imprime la tabla antes de que empieze el juego para que el jugador 1 pueda empezar
  213. while (game(iRows, iColumns, cMatBoard, iPick1, iPick2, cP1, cP2) == false && iFichas!=49) //mientras que el juego no se haya acabado, o la mesa no este llena, sigue el juego.
  214. {
  215. turnojugador1(iRows, iColumns, cMatBoard, iPick1, iPick2, cP1, cP2); //turno del jugador 1
  216. imprimirtabla(iRows, iColumns, cMatBoard); //imprime la tabla
  217. bGame=game(iRows, iColumns, cMatBoard, iPick1, iPick2, cP1, cP2); //checa si ya se acabo el juego
  218. if(bGame==true) //si si gano el jugador 1 se acaba el juego.
  219. break;
  220. iFichas++; //este contador sirve para ver cuantas fichas hay en la mesa, si hay 49, significa que la tabla esta llena
  221. if (iFichas==49) //si la tabla esta llena se acaba el juego
  222. {
  223. cout << "La tabla esta llena, nadie gana." << endl; //si la tabla esta llena empatan los jugadores y nadie gana
  224. break;
  225. }
  226. cout << "Quieres seguir jugando? (s/S o n/N)" << endl; //pregunta si quieres seguir jugando
  227. cin >> cChoice;
  228. if (cChoice=='n' || cChoice=='N') //si la respuesta es no ahi se acaba el juego
  229. break;
  230. while (cChoice!='s' && cChoice !='S' && cChoice != 'n' && cChoice != 'N') //mientras que la respuesta no sea 'si' o 'no', va a seguir preguntando
  231. {
  232. cout << "Ingrese 's', 'S', 'n', o 'N'" << endl;
  233. cin >> cChoice;
  234. }
  235. turnojugador2(iRows, iColumns, cMatBoard, iPick1, iPick2, cP1, cP2); //turno del jugador 2
  236. imprimirtabla(iRows, iColumns, cMatBoard); //imprime la tabla
  237. bGame=game(iRows, iColumns, cMatBoard, iPick1, iPick2, cP1, cP2); //checa si ya se acabo el juego
  238. if(bGame==true) //si si gano el jugador 1 se acaba el juego.
  239. break;
  240. iFichas++; //este contador sirve para ver cuantas fichas hay en la mesa, si hay 49, significa que la tabla esta llena
  241. if (iFichas==49) //si la tabla esta llena se acaba el juego
  242. {
  243. cout << "La tabla esta llena, nadie gana." << endl; //si la tabla esta llena empatan los jugadores y nadie gana
  244. break;
  245. }
  246. cout << "Quieres seguir jugando? (s/S o n/N)" << endl; //pregunta si quieres seguir jugando
  247. cin >> cChoice;
  248. if (cChoice=='n' || cChoice=='N') //si la respuesta es no ahi se acaba el juego
  249. break;
  250. while (cChoice!='s' && cChoice !='S' && cChoice != 'n' && cChoice != 'N') //mientras que la respuesta no sea 'si' o 'no', va a seguir preguntando
  251. {
  252. cout << "Ingrese 's', 'S', 'n', o 'N'" << endl;
  253. cin >> cChoice;
  254. }
  255. }
  256. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement