fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <time.h>
  5. char gnd[4][4];
  6. int i, j, r;
  7. void print();
  8. void input();
  9. void compMove();
  10. void check();
  11. void check()
  12. {
  13. int a, b;
  14. for (b = 1; b < 4; b++)
  15. {
  16. if (gnd[b][1] != '_' && gnd[b][1] == gnd[b][2] && gnd[b][2] == gnd[b][3])
  17. {
  18. print();
  19. if (gnd[b][1] == 'X')
  20. {
  21. printf("congrats you won!!!");
  22. exit(0);
  23. }
  24. else
  25. {
  26. printf("yeh!! comp won >_<");
  27. exit(0);
  28. }
  29. }
  30. }
  31. for (b = 1; b < 4; b++)
  32. {
  33. if (gnd[1][b] != '_' && gnd[1][b] == gnd[2][b] && gnd[2][b] == gnd[3][b])
  34. {
  35. print();
  36. if (gnd[1][b] == 'X')
  37. {
  38. printf("congrats you won!!!");
  39. exit(0);
  40. }
  41. else
  42. {
  43. printf("yeh!! comp won >_<");
  44. exit(0);
  45. }
  46. }
  47. }
  48. if (gnd[1][1] != '_' && gnd[1][1] == gnd[2][2] && gnd[2][2] == gnd[3][3])
  49. {
  50. print();
  51. if (gnd[1][1] == 'X')
  52. {
  53. printf("congrats you won!!!");
  54. exit(0);
  55. }
  56. else
  57. {
  58. printf("yeh!! comp won >_<");
  59. exit(0);
  60. }
  61. }
  62. if (gnd[3][1] != '_' && gnd[3][1] == gnd[2][2] && gnd[2][2] == gnd[1][3])
  63. {
  64. print();
  65. if (gnd[3][1] == 'X')
  66. {
  67. printf("congrats you won!!!");
  68. exit(0);
  69. }
  70. else
  71. {
  72. printf("yeh!! comp won >_<");
  73. exit(0);
  74. }
  75. }
  76. }
  77. void print()
  78. {
  79. for (i = 1; i < 4; i++)
  80. {
  81. for (j = 1; j < 4; j++)
  82. {
  83. printf("%c ", gnd[i][j]);
  84. }
  85. printf("\n\n");
  86. }
  87. }
  88. void input()
  89. {
  90. int i, j, n;
  91. if (r == 8)
  92. {
  93. for (i = 1; i < 4; i++)
  94. {
  95. for (j = 1; j < 4; j++)
  96. {
  97. if (gnd[i][j] == '_')
  98. {
  99. gnd[i][j] = 'X';
  100. printf("you last entry was: %d,%d\n", i, j);
  101. r++;
  102. check();
  103. print();
  104. printf("match drawn!!");
  105. exit(0);
  106. }
  107. }
  108. }
  109. }
  110. printf("enter the index of you entry: ");
  111. scanf("%d", &n);
  112. i = n / 10;
  113. j = n % 10;
  114. if (gnd[i][j] != '_')
  115. {
  116. printf("invalid move!!!\n");
  117. return;
  118. }
  119. r++;
  120. gnd[i][j] = 'X';
  121. if (r >= 5)
  122. {
  123. check();
  124. }
  125. if (r == 9)
  126. {
  127. print();
  128. printf("match drawn!!");
  129. return;
  130. }
  131. compMove();
  132. if (r >= 5)
  133. {
  134. check();
  135. }
  136. print();
  137. if (r == 9)
  138. {
  139. printf("match drawn!!");
  140. return;
  141. }
  142. }
  143. void compMove()
  144. {
  145. r++;
  146. int a, b;
  147. for (b = 1; b < 4; b++)
  148. {
  149. if (((gnd[b][1] == 'O' && gnd[b][2] == 'O') || (gnd[b][2] == 'O' && gnd[b][3] == 'O') || (gnd[b][1] == 'O' && gnd[b][3] == 'O')))
  150. {
  151. if (gnd[b][1] == '_')
  152. {
  153. gnd[b][1] = 'O';
  154. return;
  155. }
  156. else if (gnd[b][2] == '_')
  157. {
  158. gnd[b][2] = 'O';
  159. return;
  160. }
  161. else if (gnd[b][3] == '_')
  162. {
  163. gnd[b][3] = 'O';
  164. return;
  165. }
  166. }
  167. }
  168. for (b = 1; b < 4; b++)
  169. {
  170. if (((gnd[1][b] == 'O' && gnd[2][b] == 'O') || (gnd[2][b] == 'O' && gnd[3][b] == 'O') || (gnd[1][b] == 'O' && gnd[3][b] == 'O')))
  171. {
  172. if (gnd[1][b] == '_')
  173. {
  174. gnd[1][b] = 'O';
  175. return;
  176. }
  177. else if (gnd[2][b] == '_')
  178. {
  179. gnd[2][b] = 'O';
  180. return;
  181. }
  182. else if (gnd[3][b] == '_')
  183. {
  184. gnd[3][b] = 'O';
  185. return;
  186. }
  187. }
  188. }
  189. if (((gnd[1][1] == 'O' && gnd[2][2] == 'O') || (gnd[2][2] == 'O' && gnd[3][3] == 'O') || (gnd[1][1] == 'O' && gnd[3][3] == 'O')))
  190. {
  191. if (gnd[1][1] == '_')
  192. {
  193. gnd[1][1] = 'O';
  194. return;
  195. }
  196. else if (gnd[2][2] == '_')
  197. {
  198. gnd[2][2] = 'O';
  199. return;
  200. }
  201. else if (gnd[3][3] == '_')
  202. {
  203. gnd[3][3] = 'O';
  204. return;
  205. }
  206. }
  207.  
  208. if (((gnd[1][3] == 'O' && gnd[2][2] == 'O') || (gnd[2][2] == 'O' && gnd[3][1] == 'O') || (gnd[1][3] == 'O' && gnd[3][1] == 'O')))
  209. {
  210. if (gnd[1][3] == '_')
  211. {
  212. gnd[1][3] = 'O';
  213. return;
  214. }
  215. else if (gnd[2][2] == '_')
  216. {
  217. gnd[2][2] = 'O';
  218. return;
  219. }
  220. else if (gnd[3][1] == '_')
  221. {
  222. gnd[3][1] = 'O';
  223. return;
  224. }
  225. }
  226. for (b = 1; b < 4; b++)
  227. {
  228. if (((gnd[b][1] == 'X' && gnd[b][2] == 'X') || (gnd[b][2] == 'X' && gnd[b][3] == 'X') || (gnd[b][1] == 'X' && gnd[b][3] == 'X')))
  229. {
  230. if (gnd[b][1] == '_')
  231. {
  232. gnd[b][1] = 'O';
  233. return;
  234. }
  235. else if (gnd[b][2] == '_')
  236. {
  237. gnd[b][2] = 'O';
  238. return;
  239. }
  240. else if (gnd[b][3] == '_')
  241. {
  242. gnd[b][3] = 'O';
  243. return;
  244. }
  245. }
  246. }
  247. for (b = 1; b < 4; b++)
  248. {
  249. if (((gnd[1][b] == 'X' && gnd[2][b] == 'X') || (gnd[2][b] == 'X' && gnd[3][b] == 'X') || (gnd[1][b] == 'X' && gnd[3][b] == 'X')))
  250. {
  251. if (gnd[1][b] == '_')
  252. {
  253. gnd[1][b] = 'O';
  254. return;
  255. }
  256. else if (gnd[2][b] == '_')
  257. {
  258. gnd[2][b] = 'O';
  259. return;
  260. }
  261. else if (gnd[3][b] == '_')
  262. {
  263. gnd[3][b] = 'O';
  264. return;
  265. }
  266. }
  267. }
  268. if (((gnd[1][1] == 'X' && gnd[2][2] == 'X') || (gnd[2][2] == 'X' && gnd[3][3] == 'X') || (gnd[1][1] == 'X' && gnd[3][3] == 'X')))
  269. {
  270. if (gnd[1][1] == '_')
  271. {
  272. gnd[1][1] = 'O';
  273. return;
  274. }
  275. else if (gnd[2][2] == '_')
  276. {
  277. gnd[2][2] = 'O';
  278. return;
  279. }
  280. else if (gnd[3][3] == '_')
  281. {
  282. gnd[3][3] = 'O';
  283. return;
  284. }
  285. }
  286.  
  287. if (((gnd[1][3] == 'X' && gnd[2][2] == 'X') || (gnd[2][2] == 'X' && gnd[3][1] == 'X') || (gnd[1][3] == 'X' && gnd[3][1] == 'X')))
  288. {
  289. if (gnd[1][3] == '_')
  290. {
  291. gnd[1][3] = 'O';
  292. return;
  293. }
  294. else if (gnd[2][2] == '_')
  295. {
  296. gnd[2][2] = 'O';
  297. return;
  298. }
  299. else if (gnd[3][1] == '_')
  300. {
  301. gnd[3][1] = 'O';
  302. return;
  303. }
  304. }
  305. if(gnd[2][2]=='_'&&r!=1){
  306. gnd[2][2]='O';
  307. return;
  308. }
  309. int k;
  310. while (2)
  311. {
  312. int i = 1 + rand() % (3);
  313. for (k = 0; k < 10; k++)
  314. {
  315. int j = 1 + rand() % (3);
  316. if (gnd[i][j] == '_')
  317. {
  318. gnd[i][j] = 'O';
  319. return;
  320. }
  321. }
  322. }
  323. }
  324.  
  325. int main()
  326. {
  327. srand(time(NULL)); // SEED THE RANDOM NUMBER
  328. int l, toss;
  329. for (i = 1; i < 4; i++)
  330. {
  331. for (j = 1; j < 4; j++)
  332. {
  333. gnd[i][j] = '_';
  334. }
  335. }
  336. printf("\n\nyou are 'X' and comp is 'O'\n input ex- 32 for 3rd row 2nd column\n");
  337. toss = rand() % 2;
  338.  
  339. if (toss == 1)
  340. {
  341. printf("comp won the toss!!\n");
  342. compMove();
  343. }
  344. else
  345. printf("you won the toss!!\n");
  346. print();
  347. for (l = 0; l < 9; l++)
  348. {
  349. if (r == 9)
  350. break;
  351. input();
  352. }
  353. return 0;
  354. }
Success #stdin #stdout 0.01s 5320KB
stdin
45
stdout

you are 'X' and comp is 'O'
 input ex- 32 for 3rd row 2nd column
you won the toss!!
_    _    _    

_    _    _    

_    _    _    

enter the index of you entry: invalid move!!!
enter the index of you entry: invalid move!!!
enter the index of you entry: invalid move!!!
enter the index of you entry: invalid move!!!
enter the index of you entry: invalid move!!!
enter the index of you entry: invalid move!!!
enter the index of you entry: invalid move!!!
enter the index of you entry: invalid move!!!
enter the index of you entry: invalid move!!!