Advertisement
Guest User

Untitled

a guest
Jun 7th, 2013
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <array>
  3. #include <cstdlib>
  4.  
  5. int Carr[9] = {3,3,3,3,3,3,3,3,3};
  6. int ArrPos = 0;
  7. int Player = 1;
  8. int Winner = 0;
  9. int MoveNotLegal =1;
  10. char LetInp;
  11. int GameLive = 1;
  12. int Xcoord = 0;
  13. int Ycoord = 0;
  14. int P2Let = 0;
  15. int P2Num = 0;
  16. int Valid = 0;
  17. int Column =0;
  18. int Moves =0;
  19.  
  20.  
  21. int RedrawBoard() // 1 = Plyr 1; 2 = Plyr 2; 3 = Blank
  22. {
  23. int Column = 1;
  24. std::cout << std::endl;
  25. std::cout << " A B C\n\n" << Column;
  26. int LineCount = 1;
  27. for (int y = 0; y <= 8; ++y, ++LineCount)
  28. {
  29. if (Carr[y] == 1)
  30. {
  31. std::cout << " X";
  32. }
  33. if (Carr[y] == 2)
  34. {
  35. std::cout << " O";
  36. }
  37. if (Carr[y] == 3)
  38. {
  39. std::cout << " *";
  40. }
  41. if (LineCount == 3 && Column != 3)
  42. {
  43.  
  44. LineCount = 0;
  45. ++Column;
  46. std::cout << '\n' << Column;
  47. }
  48. }
  49. return 0;
  50. };
  51.  
  52. void ResetBoard()
  53. {
  54. for (int i = 0; i <= 8; ++i)
  55. Carr[i] = 3;
  56. };
  57.  
  58. int GetPlayerMove(int Plyr)
  59. {
  60. MoveNotLegal = 1;
  61. do
  62. {
  63. std::cout << "\nPlayer " << Plyr << " Enter column from (A - C): ";
  64. std::cin >> LetInp;
  65. switch (LetInp)
  66. {
  67. case ('a'):
  68. Ycoord = 0;
  69. break;
  70. case ('b'):
  71. Ycoord = 1;
  72. break;
  73. case ('c'):
  74. Ycoord = 2;
  75. break;
  76. }
  77. std::cout << "\nPlayer " << Plyr << " Enter row from (1-3): ";
  78. std::cin >> Xcoord;
  79. --Xcoord;
  80. ArrPos = (3 * Xcoord) + Ycoord;
  81. if (Carr[ArrPos] == 3)
  82. {
  83. Carr[ArrPos] = 1;
  84. MoveNotLegal = 0;
  85. }
  86. }
  87. while (MoveNotLegal == 1);
  88. MoveNotLegal = 1;
  89. return 0;
  90. }
  91. void CheckForWinP1()
  92. {
  93. if (Carr[0] == 1 && Carr[3] == 1 && Carr[6] == 1)
  94. {
  95. GameLive = 0;
  96. }
  97. if (Carr[1] == 1 && Carr[4] == 1 && Carr[7] == 1)
  98. {
  99. GameLive = 0;
  100. }
  101. if (Carr[2] == 1 && Carr[5] == 1 && Carr[8] == 1)
  102. {
  103. GameLive = 0;
  104. }
  105. if (Carr[0] == 1 && Carr[1] == 1 && Carr[2] == 1)
  106. {
  107. GameLive = 0;
  108. }
  109. if (Carr[3] == 1 && Carr[4] == 1 && Carr[5] == 1)
  110. {
  111. GameLive = 0;
  112. }
  113. if (Carr[6] == 1 && Carr[7]== 1 && Carr[8] == 1)
  114. {
  115. GameLive = 0;
  116. }
  117. if (Carr[0] == 1 && Carr[4] == 1 && Carr[8] == 1)
  118. {
  119. GameLive = 0;
  120. }
  121. if (Carr[2] == 1 && Carr[4] == 1 && Carr[6] == 1)
  122. {
  123. GameLive = 0;
  124. }
  125. if (GameLive == 0)
  126. {
  127. Winner = 1;
  128. }
  129. }
  130.  
  131. void CheckForWinP2()
  132. {
  133. if (Carr[0] == 2 && Carr[3] == 2 && Carr[6] == 2)
  134. {
  135. GameLive = 0;
  136. }
  137. if (Carr[1] == 2 && Carr[4] == 2 && Carr[7] == 2)
  138. {
  139. GameLive = 0;
  140. }
  141. if (Carr[2] == 2 && Carr[5] == 2 && Carr[8] == 2)
  142. {
  143. GameLive = 0;
  144. }
  145. if (Carr[0] == 2 && Carr[1] == 2 && Carr[2] == 2)
  146. {
  147. GameLive = 0;
  148. }
  149. if (Carr[3] == 2 && Carr[4] == 2 && Carr[5] == 2)
  150. {
  151. GameLive = 0;
  152. }
  153. if (Carr[6] == 2 && Carr[7]== 2 && Carr[8] == 2)
  154. {
  155. GameLive = 0;
  156. }
  157. if (Carr[0] == 2 && Carr[4] == 2 && Carr[8] == 2)
  158. {
  159. GameLive = 0;
  160. }
  161. if (Carr[2] == 2 && Carr[4] == 2 && Carr[6] == 2)
  162. {
  163. GameLive = 0;
  164. }
  165. if (GameLive == 0)
  166. {
  167. Winner = 2;
  168. }
  169. }
  170. void Player2Move()
  171. {
  172. Valid = 0;
  173. Column = 0;
  174. if (Carr[0] == 2 && Carr[1] == 2 && Carr[2] == 3) // Horizontal Win Check.
  175. {
  176. Carr[2] = 2;
  177. Valid = 1;
  178. }
  179. if (Valid == 0 && Carr[1] == 2 && Carr[2] == 2 && Carr[0] == 3)
  180. {
  181. Carr[0] = 2;
  182. Valid = 1;
  183. }
  184. if (Valid == 0 && Carr[0] == 2 && Carr[2] == 2 && Carr[1] == 3)
  185. {
  186. Carr[1] = 2;
  187. Valid = 1;
  188. }
  189. if (Valid == 0 && Carr[3] == 2 && Carr[4] == 2 && Carr[5] == 3)
  190. {
  191. Carr[5] = 2;
  192. Valid = 1;
  193. }
  194. if (Valid == 0 && Carr[4] == 2 && Carr[5] == 2 && Carr[3] == 3)
  195. {
  196. Carr[3] = 2;
  197. Valid = 1;
  198. }
  199. if (Valid == 0 && Carr[3] == 2 && Carr[5] == 2 && Carr[4] == 3)
  200. {
  201. Carr[4] = 2;
  202. Valid = 1;
  203. }
  204. if (Valid == 0 && Carr[6] == 2 && Carr[7] == 2 && Carr[8] == 3)
  205. {
  206. Carr[8] = 2;
  207. Valid = 1;
  208. }
  209. if (Valid == 0 && Carr[7] == 2 && Carr[8] == 2 && Carr[6] == 3)
  210. {
  211. Carr[6] = 2;
  212. Valid = 1;
  213. }
  214. if (Valid == 0 && Carr[6] == 2 && Carr[8] == 2 && Carr[7] == 3)
  215. {
  216. Carr[7] = 2;
  217. Valid = 1;
  218. }
  219. if (Valid == 0 && Carr[0] == 2 && Carr[3] == 2 && Carr[6] == 3) // Vertical Win Check.
  220. {
  221. Carr[6] = 2;
  222. Valid = 1;
  223. }
  224. if (Valid == 0 && Carr[0] == 2 && Carr[6] == 2 && Carr[3] == 3)
  225. {
  226. Carr[3] = 2;
  227. Valid = 1;
  228. }
  229. if (Valid == 0 && Carr[3] == 2 && Carr[6] == 2 && Carr[0] == 3)
  230. {
  231. Carr[0] = 2;
  232. Valid = 1;
  233. }
  234. if (Valid == 0 && Carr[1] == 2 && Carr[4] == 2 && Carr[7] == 3)
  235. {
  236. Carr[7] = 2;
  237. Valid = 1;
  238. }
  239. if (Valid == 0 && Carr[1] == 2 && Carr[7] == 2 && Carr[4] == 3)
  240. {
  241. Carr[4] = 2;
  242. Valid = 1;
  243. }
  244. if (Valid == 0 && Carr[4] == 2 && Carr[7] == 2 && Carr[1] == 3)
  245. {
  246. Carr[1] = 2;
  247. Valid = 1;
  248. }
  249. if (Valid == 0 && Carr[2] == 2 && Carr[5] == 2 && Carr[8] == 3)
  250. {
  251. Carr[8] = 2;
  252. Valid = 1;
  253. }
  254. if (Valid == 0 && Carr[2] == 2 && Carr[8] == 2 && Carr[5] == 3)
  255. {
  256. Carr[5] = 2;
  257. Valid = 1;
  258. }
  259. if (Valid == 0 && Carr[5] == 2 && Carr[8] == 2 && Carr[2] == 3)
  260. {
  261. Carr[2] = 2;
  262. Valid = 1;
  263. }
  264. if (Valid == 0 && Carr[0] == 2 && Carr[4] == 2 && Carr[8] == 3)
  265. {
  266. Carr[8] = 2;
  267. Valid = 1;
  268. }
  269. if (Valid == 0 && Carr[0] == 2 && Carr[8] == 2 && Carr[4] == 3)
  270. {
  271. Carr[4] = 2;
  272. Valid = 1;
  273. }
  274. if (Valid == 0 && Carr[4] == 2 && Carr[8] == 2 && Carr[0] == 3)
  275. {
  276. Carr[0] = 2;
  277. Valid = 1;
  278. }
  279. if (Valid == 0 && Carr[2] == 2 && Carr[4] == 2 && Carr[6] == 3)
  280. {
  281. Carr[6] = 2;
  282. Valid = 1;
  283. }
  284. if (Valid == 0 && Carr[2] == 2 && Carr[6] == 2 && Carr[4] == 3) // Diagonal Win Check.
  285. {
  286. Carr[4] = 2;
  287. Valid = 1;
  288. }
  289. if (Valid == 0 && Carr[4] == 2 && Carr[6] == 2 && Carr[2] == 3)
  290. {
  291. Carr[2] = 2;
  292. Valid = 1;
  293. }
  294. if (Valid == 0)
  295. {
  296. if (Carr[0] == 1 && Carr[1] == 1 && Carr[2] == 3) // Horizontal Block Check.
  297. {
  298. Carr[2] = 2;
  299. Valid = 1;
  300. }
  301. if (Valid == 0 && Carr[1] == 1 && Carr[2] == 1 && Carr[0] == 3)
  302. {
  303. Carr[0] = 2;
  304. Valid = 1;
  305. }
  306. if (Valid == 0 && Carr[0] == 1 && Carr[2] == 1 && Carr[1] == 3)
  307. {
  308. Carr[1] = 2;
  309. Valid = 1;
  310. }
  311. if (Valid == 0 && Carr[3] == 1 && Carr[4] == 1 && Carr[5] == 3)
  312. {
  313. Carr[5] = 2;
  314. Valid = 1;
  315. }
  316. if (Valid == 0 && Carr[4] == 1 && Carr[5] == 1 && Carr[3] == 3)
  317. {
  318. Carr[3] = 2;
  319. Valid = 1;
  320. }
  321. if (Valid == 0 && Carr[3] == 1 && Carr[5] == 1 && Carr[4] == 3)
  322. {
  323. Carr[4] = 2;
  324. Valid = 1;
  325. }
  326. if (Valid == 0 && Carr[6] == 1 && Carr[7] == 1 && Carr[8] == 3)
  327. {
  328. Carr[8] = 2;
  329. Valid = 1;
  330. }
  331. if (Valid == 0 && Carr[7] == 1 && Carr[8] == 1 && Carr[6] == 3)
  332. {
  333. Carr[6] = 2;
  334. Valid = 1;
  335. }
  336. if (Valid == 0 && Carr[6] == 1 && Carr[8] == 1 && Carr[7] == 3)
  337. {
  338. Carr[7] = 2;
  339. Valid = 1;
  340. }
  341. if (Valid == 0 && Carr[0] == 1 && Carr[3] == 1 && Carr[6] == 3) // Vertical Block Check.
  342. {
  343. Carr[6] = 2;
  344. Valid = 1;
  345. }
  346. if (Valid == 0 && Carr[0] == 1 && Carr[6] == 1 && Carr[3] == 3)
  347. {
  348. Carr[3] = 2;
  349. Valid = 1;
  350. }
  351. if (Valid == 0 && Carr[3] == 1 && Carr[6] == 1 && Carr[0] == 3)
  352. {
  353. Carr[0] = 2;
  354. Valid = 1;
  355. }
  356. if (Valid == 0 && Carr[1] == 1 && Carr[4] == 1 && Carr[7] == 3)
  357. {
  358. Carr[7] = 2;
  359. Valid = 1;
  360. }
  361. if (Valid == 0 && Carr[1] == 1 && Carr[7] == 1 && Carr[4] == 3)
  362. {
  363. Carr[4] = 2;
  364. Valid = 1;
  365. }
  366. if (Valid == 0 && Carr[4] == 1 && Carr[7] == 1 && Carr[1] == 3)
  367. {
  368. Carr[1] = 2;
  369. Valid = 1;
  370. }
  371. if (Valid == 0 && Carr[2] == 1 && Carr[5] == 1 && Carr[8] == 3)
  372. {
  373. Carr[8] = 2;
  374. Valid = 1;
  375. }
  376. if (Valid == 0 && Carr[2] == 1 && Carr[8] == 1 && Carr[5] == 3)
  377. {
  378. Carr[5] = 2;
  379. Valid = 1;
  380. }
  381. if (Valid == 0 && Carr[5] == 1 && Carr[8] == 1 && Carr[2] == 3)
  382. {
  383. Carr[2] = 2;
  384. Valid = 1;
  385. }
  386. if (Valid == 0 && Carr[0] == 1 && Carr[4] == 1 && Carr[8] == 3)
  387. {
  388. Carr[8] = 2;
  389. Valid = 1;
  390. }
  391. if (Valid == 0 && Carr[0] == 1 && Carr[8] == 1 && Carr[4] == 3)
  392. {
  393. Carr[4] = 2;
  394. Valid = 1;
  395. }
  396. if (Valid == 0 && Carr[4] == 1 && Carr[8] == 1 && Carr[0] == 3)
  397. {
  398. Carr[0] = 2;
  399. Valid = 1;
  400. }
  401. if (Valid == 0 && Carr[2] == 1 && Carr[4] == 1 && Carr[6] == 3)
  402. {
  403. Carr[6] = 2;
  404. Valid = 1;
  405. }
  406. if (Valid == 0 && Carr[2] == 1 && Carr[6] == 1 && Carr[4] == 3) // Diagonal Block Check.
  407. {
  408. Carr[4] = 2;
  409. Valid = 1;
  410. }
  411. if (Valid == 0 && Carr[4] == 1 && Carr[6] == 1 && Carr[2] == 3)
  412. {
  413. Carr[2] = 2;
  414. Valid = 1;
  415. }
  416. }
  417.  
  418. if (Valid == 0)
  419. {
  420. do
  421. {
  422. P2Let = rand() %3;
  423. P2Num = rand() %3;
  424. if (Carr[(3 * P2Num) + P2Let] == 3)
  425. {
  426. Carr[(3 * P2Num) + P2Let] = 2;
  427. Valid =1;
  428. }
  429. }
  430. while (Valid == 0);
  431. }
  432. }
  433.  
  434. int main()
  435. {
  436. char PlayAgain = 'y';
  437. RedrawBoard();
  438. Moves = 0;
  439.  
  440. do
  441. {
  442. GetPlayerMove(Player);
  443. ++Moves;
  444. RedrawBoard();
  445. CheckForWinP1();
  446. ++Player;
  447. if (Moves == 9)
  448. {
  449. GameLive = 0;
  450. Moves = 0;
  451. }
  452. if (GameLive == 1)
  453. {
  454. Player2Move();
  455. ++Moves;
  456. RedrawBoard();
  457. CheckForWinP2();
  458. --Player;
  459. if (Moves == 9)
  460. {
  461. GameLive = 0;
  462. Moves = 0;
  463. }
  464. }
  465. if (GameLive == 0)
  466. {
  467. if (Winner == 1)
  468. {
  469. std::cout << "\nYou beat the computer!";
  470. }
  471. if (Winner == 2)
  472. {
  473. std::cout << "\nLMAO You got your ass kicked!";
  474. }
  475. if (Winner == 0)
  476. {
  477. std::cout << "\nGame drawn!";
  478. }
  479. std::cout << "\nWould you like to play again? (y or n) ";
  480. std::cin >> PlayAgain;
  481. if (PlayAgain == 'y')
  482. {
  483. Player = 1;
  484. GameLive = 1;
  485. Winner = 0;
  486. Moves = 0;
  487. ResetBoard();
  488. RedrawBoard();
  489. }
  490. }
  491. }
  492. while (PlayAgain == 'y' || PlayAgain == 'Y');
  493. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement