Advertisement
Guest User

Untitled

a guest
Dec 21st, 2015
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.36 KB | None | 0 0
  1. //TRABAJO COLABORATIVO
  2. //Curso 2015/2016
  3. //Lenguaje utilizado: Principalmente C++
  4. //Fecha de incialización de creación del proyecto : 07/12/2015
  5. //Miembros del grupo:
  6. // -Romero García, Miguel :
  7. // -E-mail: mikiroga33@gmail.com
  8. // -García Villalba, Fernando :
  9. // -E-mail: fernillalba@gmail.com
  10. // -Castro Mínguez, Carlos :
  11. // -E-mail: karloskastro12@gmail.com
  12. //Lenguaje utilizado: Principalmente C++
  13. //Historial de progreso:
  14. // v1.0 juega contra otro jugador
  15. // v2.0 correccion de errores
  16. // v3.0 juega contra la maquina
  17. //Known issues:
  18. // -Cuando metas una cadena de texto en una variable de tipo int, el programa peta.
  19. //Funciona:
  20. // -Windows XP
  21. // -Windows 7
  22. // -Windows 8
  23. // -Windows 10
  24. //To do list:
  25. // -Hacer un bucle para volver a jugar
  26. // -Crear un marcador
  27.  
  28.  
  29.  
  30. #include <cstdio>
  31. #include <cstdlib>
  32. #include <iostream>
  33. #include <string>
  34. #include <vector>
  35. #include <ctime>
  36.  
  37. using namespace std;
  38.  
  39. void menu(void);
  40. void bienvenida(void);
  41. void bienvenida2(void);
  42. int maquina(vector<int>& vi, int jugador);
  43. void filling(char ch, int nn);
  44. void frame(string title);
  45. void limpiar_pantalla(void);
  46. void tablero(vector<int>& vi);
  47. int tirada(vector<int>& vi, int jugador);
  48. void llenar(vector<int>& vi);
  49. string nombre1;
  50. string nombre2;
  51. void despedida(void);
  52. int main()
  53. {
  54.  
  55. srand(time(NULL));
  56. frame(" TRES EN RAYA ");
  57. menu();
  58. despedida();
  59.  
  60. }
  61.  
  62. void menu(){
  63.  
  64. string opcion;
  65. vector<int> vi;
  66. llenar(vi);
  67. tablero(vi);
  68. int comprobar=1;
  69.  
  70.  
  71.  
  72. int jugador = 1;
  73. cout << "" << endl;
  74. cout << "1-Jugador contra jugador" << endl;
  75. cout << "2-Jugador contra maquina" << endl;
  76. cout << "0-Salir" << endl;
  77. cin >> opcion;
  78.  
  79. if (opcion == "1") {
  80. cout << "\n\n";
  81. bienvenida();
  82. while (comprobar != 3) {
  83. comprobar = tirada(vi, jugador);
  84. jugador = comprobar;
  85. }
  86.  
  87. }
  88. if (opcion == "2") {
  89. cout << "\n\n";
  90. bienvenida2();
  91. while (comprobar != 3) {
  92. comprobar = maquina(vi, jugador);
  93. jugador = comprobar;
  94. }
  95.  
  96. }
  97.  
  98. if (opcion == "0") {
  99. despedida();
  100. exit(EXIT_SUCCESS);
  101.  
  102. }
  103.  
  104. }
  105.  
  106. void bienvenida(void)
  107. {
  108. cout << "Bienvenido al tres en raya, espero que te diviertas mucho conmigo." << endl;
  109. cout << " Introduce el nombre del jugador 1: ";
  110. cin >> nombre1;
  111. fflush(stdin);
  112. cout << " Introduce el nombre del jugador 2: ";
  113. cin >> nombre2;
  114. fflush(stdin);
  115. cout << " A continuacion elige la primera casilla \n" << endl;
  116. }
  117.  
  118. void bienvenida2(void)
  119. {
  120. cout << "Bienvenido al tres en raya, espero que te diviertas mucho conmigo." << endl;
  121. cout << " Introduce el nombre del jugador: ";
  122. cin >> nombre1;
  123. fflush(stdin);
  124.  
  125. }
  126.  
  127. void filling(char ch, int nn)
  128. {
  129. for (int i = 0; i<nn; i++) {
  130. cout << ch;
  131. }
  132. cout << '\n';
  133. }
  134.  
  135. void frame(string title)
  136. {
  137. cout << "\n";
  138. cout << "\t\t\t ";
  139. filling('=', title.size() + 2);
  140. cout << "\t\t\t º" << title << "º\n";
  141. cout << "\t\t\t ";
  142. filling('=', title.size() + 2);
  143. cout << '\n';
  144. }
  145.  
  146. void limpiar_pantalla(void)
  147. {
  148. system("cls");
  149. }
  150.  
  151. void tablero(vector<int>& vi)
  152. {
  153.  
  154. cout << "\n";
  155. printf("\t\t\t +-----------+");
  156. printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
  157. printf("\t\t\t |---+---+---|");
  158. printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
  159. printf("\t\t\t |---+---+---|");
  160. printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
  161. printf("\t\t\t +-----------+");
  162.  
  163. cout << "\n" << endl;
  164.  
  165. }
  166.  
  167. int tirada(vector<int>& vi, int jugador)
  168. {
  169. {
  170.  
  171. int empate = 0, ganar = 0;
  172. char tiro, marca;
  173. if (jugador == 1)
  174. {
  175. marca = 'X';
  176. cout << "Turno de " << nombre1 << endl;
  177. cout << "\nDonde deseas colocar tu ficha: ";
  178. fflush(stdin);
  179. }
  180. else {
  181. marca = 'O';
  182. cout << "Turno de " << nombre2 << endl;
  183. cout << "\nDonde deseas colocar tu ficha: ";
  184. }
  185.  
  186. fflush(stdin);
  187.  
  188. cin >> tiro;
  189.  
  190. if (tiro == '1' && vi[0] == '1') { vi[0] = marca; }
  191. else if (tiro == '2' && vi[1] == '2') { vi[1] = marca; }
  192. else if (tiro == '3' && vi[2] == '3') { vi[2] = marca; }
  193. else if (tiro == '4' && vi[3] == '4') { vi[3] = marca; }
  194. else if (tiro == '5' && vi[4] == '5') { vi[4] = marca; }
  195. else if (tiro == '6' && vi[5] == '6') { vi[5] = marca; }
  196. else if (tiro == '7' && vi[6] == '7') { vi[6] = marca; }
  197. else if (tiro == '8' && vi[7] == '8') { vi[7] = marca; }
  198. else if (tiro == '9' && vi[8] == '9') { vi[8] = marca; }
  199. else {
  200. cerr << "Error! Introduce otro valor por favor\n" << endl;
  201. system("pause");
  202. limpiar_pantalla();
  203. tablero(vi);
  204. tirada(vi, jugador);
  205. }
  206. limpiar_pantalla();
  207. tablero(vi);
  208.  
  209. if (vi[0] == 'X' || vi[0] == 'O') {
  210. if (vi[1] == vi[0] && vi[2] == vi[0])
  211. {
  212. ganar = 1;
  213. }
  214. if (vi[3] == vi[0] && vi[6] == vi[0])
  215. {
  216. ganar = 1;
  217. }
  218. }
  219.  
  220. if (vi[4] == 'X' || vi[4] == 'O') {
  221. if (vi[0] == vi[4] && vi[8] == vi[4])
  222. {
  223. ganar = 1;
  224. }
  225. if (vi[1] == vi[4] && vi[7] == vi[4])
  226. {
  227. ganar = 1;
  228. }
  229. if (vi[3] == vi[4] && vi[5] == vi[4])
  230. {
  231. ganar = 1;
  232. }
  233. if (vi[2] == vi[4] && vi[6] == vi[4])
  234. {
  235. ganar = 1;
  236. }
  237. }
  238. if (vi[8] == 'X' || vi[8] == 'O') {
  239. if (vi[5] == vi[8] && vi[2] == vi[8])
  240. {
  241. ganar = 1;
  242. }
  243. if (vi[6] == vi[8] && vi[7] == vi[8])
  244. {
  245. ganar = 1;
  246. }
  247. }
  248.  
  249. if ((vi[0] != '1' && vi[1] != '2' && vi[2] != '3' &&
  250. vi[3] != '4' && vi[4] != '5' && vi[5] != '6' &&
  251. vi[6] != '7' && vi[7] != '8' && vi[8] != '9') &&
  252. ganar == 0) {
  253. empate = 1;
  254. }
  255.  
  256. if (ganar == 1 || empate == 1)
  257. {
  258. limpiar_pantalla();
  259. if (ganar == 1 && jugador==1)
  260. {
  261. cout << "\n Enhorabuena!! " << nombre1 << " Ha ganado!!\n" << endl;
  262. printf("\t\t\t +-----------+");
  263. printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
  264. printf("\t\t\t |---+---+---|");
  265. printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
  266. printf("\t\t\t |---+---+---|");
  267. printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
  268. printf("\t\t\t +-----------+");
  269. }
  270. if (ganar == 1 && jugador==2)
  271. {
  272. cout << "\n Enhorabuena!! " << nombre2 << " Ha ganado!!\n" << endl;
  273. printf("\t\t\t +-----------+");
  274. printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
  275. printf("\t\t\t |---+---+---|");
  276. printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
  277. printf("\t\t\t |---+---+---|");
  278. printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
  279. printf("\t\t\t +-----------+");
  280. }
  281. if (empate == 1)
  282. {
  283. cout << "\n " << nombre1 << " y " << nombre2 << " Han empatado! \n" << endl;
  284. printf("\t\t\t +-----------+");
  285. printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
  286. printf("\t\t\t |---+---+---|");
  287. printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
  288. printf("\t\t\t |---+---+---|");
  289. printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
  290. printf("\t\t\t +-----------+");
  291. }
  292. }
  293.  
  294. if (ganar == 1 || empate == 1) {
  295.  
  296. return 3;
  297.  
  298. }
  299. if (jugador == 2) {
  300.  
  301. return 1;
  302.  
  303. }
  304. if (jugador == 1) {
  305.  
  306. return 2;
  307.  
  308. }
  309.  
  310. }
  311. }
  312.  
  313. void despedida() {
  314. cout << "\n Gracias por jugar\n Hasta pronto\001\n";
  315. }
  316.  
  317. void llenar(vector<int>& vi) {
  318.  
  319. int one = '1';
  320.  
  321. for (int i = 0;i<9;i++) {
  322.  
  323. vi.push_back(one);
  324. one++;
  325.  
  326.  
  327. }
  328.  
  329. }
  330.  
  331. int maquina(vector<int>& vi, int jugador) {
  332.  
  333. int empate = 0, ganar = 0;
  334. char marca;
  335.  
  336. int tiro;
  337. string ganador;
  338.  
  339.  
  340. while (ganar!=1 || empate!=1){
  341.  
  342.  
  343. int romper = 1;
  344.  
  345. if (jugador==1){
  346.  
  347.  
  348. cout << nombre1 <<" es tu turno: ";
  349. marca = 'X';
  350. while (romper == 1) {
  351. cin >> tiro;
  352. if (vi[tiro-1] != 'X' && vi[tiro-1] != 'O') {
  353.  
  354. vi[tiro-1] = marca;
  355. romper = 2;//Cuando metas la marca en una posicion donde no haya marca sale del bucle
  356.  
  357. }
  358. else{cout << "Valor incorrecto, introduce un nuevo valor";}
  359. }
  360.  
  361. }
  362.  
  363. if (jugador == 2) {
  364.  
  365. marca = 'O';
  366. tiro = rand() % 9;
  367. while (romper == 1) {
  368. if (vi[tiro] != 'X' && vi[tiro] != 'O') {
  369.  
  370. vi[tiro] = marca;
  371. romper = 2;
  372.  
  373. }
  374. tiro = rand() % 9;
  375. }
  376.  
  377. }
  378. limpiar_pantalla();
  379. tablero(vi);
  380.  
  381. if (vi[0] == 'X' || vi[0] == 'O') {
  382. if (vi[1] == vi[0] && vi[2] == vi[0])
  383. {
  384. ganar = 1;
  385. }
  386. if (vi[3] == vi[0] && vi[6] == vi[0])
  387. {
  388. ganar = 1;
  389. }
  390. }
  391.  
  392. if (vi[4] == 'X' || vi[4] == 'O') {
  393. if (vi[0] == vi[4] && vi[8] == vi[4])
  394. {
  395. ganar = 1;
  396. }
  397. if (vi[1] == vi[4] && vi[7] == vi[4])
  398. {
  399. ganar = 1;
  400. }
  401. if (vi[3] == vi[4] && vi[5] == vi[4])
  402. {
  403. ganar = 1;
  404. }
  405. if (vi[2] == vi[4] && vi[6] == vi[4])
  406. {
  407. ganar = 1;
  408. }
  409. }
  410. if (vi[8] == 'X' || vi[8] == 'O') {
  411. if (vi[5] == vi[8] && vi[2] == vi[8])
  412. {
  413. ganar = 1;
  414. }
  415. if (vi[6] == vi[8] && vi[7] == vi[8])
  416. {
  417. ganar = 1;
  418. }
  419. }
  420.  
  421. if ((vi[0] != '1' && vi[1] != '2' && vi[2] != '3' &&
  422. vi[3] != '4' && vi[4] != '5' && vi[5] != '6' &&
  423. vi[6] != '7' && vi[7] != '8' && vi[8] != '9') &&
  424. ganar == 0) {
  425. empate = 1;
  426. }
  427.  
  428. if (ganar == 1 || empate == 1)
  429. {
  430. limpiar_pantalla();
  431. if (ganar == 1)
  432. {
  433. if (jugador == 1) { ganador = nombre1; }
  434. if (jugador == 2) { ganador = "Maquina"; }
  435. cout << "\n Gano " << ganador << endl;
  436. system("pause");
  437. printf("\t\t\t +-----------+");
  438. printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
  439. printf("\t\t\t |---+---+---|");
  440. printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
  441. printf("\t\t\t |---+---+---|");
  442. printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
  443. printf("\t\t\t +-----------+");
  444. }
  445. if (empate == 1)
  446. {
  447. cout << "\n " << " Empate! \n" << endl;
  448. system("pause");
  449. printf("\t\t\t +-----------+");
  450. printf("\n\t\t\t | %c | %c | %c |\n", vi[0], vi[1], vi[2]);
  451. printf("\t\t\t |---+---+---|");
  452. printf("\n\t\t\t | %c | %c | %c |\n", vi[3], vi[4], vi[5]);
  453. printf("\t\t\t |---+---+---|");
  454. printf("\n\t\t\t | %c | %c | %c |\n", vi[6], vi[7], vi[8]);
  455. printf("\t\t\t +-----------+");
  456. }
  457. }
  458.  
  459.  
  460. if (ganar == 1 || empate == 1) {
  461.  
  462. return 3;
  463.  
  464. }
  465. if (jugador == 2) {
  466.  
  467. return 1;
  468.  
  469. }
  470. if (jugador == 1) {
  471.  
  472. return 2;
  473.  
  474. }
  475. }
  476.  
  477.  
  478. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement